Share via


在建立命名空間時設定安全性

建立命名空間的 Managed 物件格式 (MOF) 檔案,也可以藉由在安全性描述元定義語言中,將NamespaceSecuritySDDL限定詞包含在安全性描述元定義語言 (SDDL) 格式,來定義命名空間的安全性描述項。

您可以使用 NamespaceSecuritySDDL 來保護任何命名空間。 您也可以在簡單的 MOF 檔案中使用這個限定詞,來改變現有命名空間上的安全描述項。 SDDL 字串是由 WMI 處理,以建立命名空間安全性,但不會儲存為字串。 如果未指定任何安全性描述項,則會使用預設安全性。 如需詳細資訊,請參閱 設定 Namepace 安全性描述元

下列程式會設定 root\MyNamespace 命名空間的安全性描述項。 SDDL 字串會將擁有者和群組設定為已驗證的使用者,並指定由子命名空間繼承的 DACL (選擇性存取控制清單 ) 。 DACL 可讓使用者有權讀取資料、執行方法、將資料寫入提供者類別,並使用遠端存取:WBEM_ENABLEWBEM_METHOD_EXECUTEWBEM_WRITE_PROVIDER、WBEM_REMOTE_ACCESS 如需詳細資訊,請參閱 WMI 命名空間的存取

若要設定命名空間 DACL

  1. (MOF) 檔案建立 Managed 物件格式,或修改現有的 MOF 檔案,以定義命名空間以使用 SDDL 字串新增 NamespaceSecuritySDDL 限定詞。

    下列程式碼範例顯示要修改的命名空間是 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 旗標常數

變更安全性實體物件的存取安全性