名前空間を作成する際のセキュリティの設定

名前空間を作成するマネージド オブジェクト フォーマット (MOF) ファイルでは、NamespaceSecuritySDDL 修飾子をセキュリティ記述子定義言語 (SDDL) 形式でセキュリティ記述子に含めることで、名前空間のセキュリティ記述子を定義することもできます。

NamespaceSecuritySDDL を使用して、任意の名前空間をセキュリティで保護できます。 また、単純な MOF ファイルでこの修飾子を使用することで、既存の名前空間のセキュリティ記述子を変更することもできます。 SDDL 文字列は WMI によって処理されて名前空間のセキュリティを確立しますが、文字列としては格納されません。 セキュリティ記述子が指定されていない場合は、既定のセキュリティが使用されます。 詳細については、「名前空間セキュリティ記述子の設定」を参照してください。

次の手順では、root\MyNamespace 名前空間のセキュリティ記述子を設定します。 SDDL 文字列は、所有者とグループを認証されたユーザーに設定し、子名前空間によって継承される "随意アクセス制御リスト (DACL)" を指定します。 DACL を使用すると、ユーザーはデータの読み取り、メソッドの実行、プロバイダー クラスへのデータの書き込み、リモート アクセス (WBEM_ENABLEWBEM_METHOD_EXECUTEWBEM_WRITE_PROVIDERWBEM_REMOTE_ACCESS) を使用できます。 詳細については、「WMI 名前空間へのアクセス」を参照してください。

名前空間 DACL を設定するには

  1. マネージド オブジェクト フォーマット (MOF) ファイルを作成するか、名前空間を定義する既存の MOF ファイルを変更して、NamespaceSecuritySDDL 修飾子を SDDL 文字列で追加します。

    次のコード サンプルでは、変更される名前空間が root\MyNamespace で、ファイルの名前が MyNamespace_security.mof であることが示されています。

    #pragma autorecover
    #pragma namespace("\\\\.\\root")
    [NamespaceSecuritySDDL ("O:BAG:BAD:(A;CI;0x60003;;;WD)")]
    Instance of __Namespace
    {
      Name = "MyNamespace";
    };
    
  2. SDDL 文字列では大文字と小文字が区別されることにご留意ください。文字は大文字にする必要があります。

    次のコード例では、SDDL 文字列の文字 "o" と "g" が小文字で示されており、Mofcomp.exe がエラーを返します。

    #pragma autorecover
    #pragma namespace("\\\\.\\root")
    [NamespaceSecuritySDDL("o:BAg:BAD:(A;CI;0x60003;;;WD)")] 
    Instance of __Namespace
    {
      Name = "MyNamespace";
    };
    
  3. Mofcomp.exe を実行して MOF ファイルをコンパイルします。

    c:\mofcomp MyNamespace_security.mof

    C++ では、IMoFCompiler メソッドを使用します。

  4. 名前空間 DACL の設定が失敗した場合は、次のエラー メッセージを考慮してください。

    エラー 説明
    WBEM_E_INVALID_PARAMETER 継承された DACL がありません。 または、呼び出し元が親名前空間の DACL または SD に違反しています。
    WBEM_E_ACCESS_DENIED 呼び出し元に、MOF で SDDL を更新するアクセス許可がありません。

     

名前空間セキュリティ記述子の設定

名前空間アクセス権定数

名前空間の ACE フラグの定数

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