セキュリティ保護可能なオブジェクトのアクセス セキュリティの変更

プリンター、サービス、レジストリ キー、DCOM アプリケーション、WMI 名前空間はセキュリティ保護可能なオブジェクトです。 セキュリティ保護可能なオブジェクトへのアクセスは、アクセス権を持つユーザーを指定する "セキュリティ記述子" によって保護されています。 Windows Vista 以降、多くのセキュリティ保護可能なオブジェクトにはセキュリティ記述子を取得または設定するメソッドがあります。 適切なアクセス許可があれば、セキュリティ保護可能なオブジェクトのセキュリティ記述子を読み取ることや変更することができます。 これらの方法を使うと、プリンター、サービス、WMI 名前空間、またはその他のオブジェクトにアクセスできるユーザー アカウントまたはグループを制御することができます。 セキュリティ記述子と WMI での使用方法の詳細については、「WMI セキュリティ保護可能オブジェクトへのアクセス」を参照してください。

このトピックでは、以下のセクションについて説明します。

オブジェクトとセキュリティ記述子のメソッド

次の一覧は、セキュリティ保護可能なオブジェクトが備えるメソッドをまとめたものです。これを使ってセキュリティ記述子の読み取りまたは変更を行うことができます。

注意

SetSecurityDescriptor メソッドの呼び出しで新しい "セキュリティ アクセス制御リスト (SACL)" を指定しない場合、対象のセキュリティ保護可能なオブジェクトのセキュリティ記述子 SACL は null に設定されるので、以前の SACL 設定は保持されません。

 

セキュリティ記述子の形式間の変換

セキュリティ記述子は複雑なバイナリ バイト配列であり、通常は C++ で作成および変更する必要があります。 いずれかの Get メソッドを使ってセキュリティ記述子を取得したら、Win32_SecurityDescriptorHelper クラスには、セキュリティ記述子をセキュリティ記述子定義言語 (SDDL) または Win32_SecurityDescriptor インスタンスに変換するメソッドが用意されています。

Win32_SecurityDescriptor インスタンスまたは SDDL で、アクセス制御リスト (ACL) をより簡単に操作することができます。 WMI のセキュリティ記述子の構造と使用方法については、「WMI セキュリティ記述子オブジェクト」を参照してください。

C++ または C# では、変換関数を使ってバイナリ セキュリティ記述子をセキュリティ記述子定義言語 (SDDL) に変換します。 C++ アプリケーションでセキュリティ記述子の値を変更するには、ConvertSecurityDescriptorToStringSecurityDescriptorConvertStringSecurityDescriptorToSecurityDescriptor を使います。

セキュリティの問題

セキュリティ記述子の変更は、オブジェクトのセキュリティが損なわれないように細心の注意を払って行うことをお勧めします。 随意アクセス制御リスト (DACL) 内のアクセス制御エントリ (ACE) の順序は、アクセス セキュリティに影響する可能性があります。 詳細については、「DACL 内の ACE の順序」を参照してください。

WMI セキュリティ記述子オブジェクト

セキュリティ記述子ヘルパー クラス

セキュリティ推奨事項

WMI セキュリティの維持

アクセス制御

WMI 名前空間へのアクセス