建立控件訪問許可權
若要將控件訪問許可權新增至 Active Directory 伺服器,請在 Configuration 數據分割的 Extended-Rights 容器中建立 controlAccessRight 物件。 如需詳細資訊和程式代碼範例,請參閱 建立控件訪問許可權的範例程序代碼。 若要使用控件訪問許可權,您必須再完成幾個步驟,視控件訪問許可權是針對特殊作業還是屬性集而定。
如果您定義屬性集的控件訪問許可權,請使用 controlAccessRight 物件的 rightsGUID 來識別集合中的屬性。 每個屬性都是由 Active Directory 架構中的 attributeSchema 物件所定義。 attributeSchema 物件的 attributeSecurityGUID 屬性會識別屬性集,如果有的話,該屬性屬於該屬性。 請注意 ,attributeSecurityGUID 屬性是單一值,並以二進位格式儲存 GUID (八位字串語法)。
如果您定義控制項訪問許可權來限制特定作業的存取權,則當使用者嘗試作業時,您的應用程式必須執行存取檢查。
設定存取檢查
- 建立控制訪問許可權,定義應用程式或服務的存取類型。 如需詳細資訊,請參閱下列程式代碼範例。
- 建立 Active Directory 網域服務 物件,代表您要保護的應用程式、服務或資源。
- 將物件 ACE 新增至物件安全性描述元中的 DACL,以授與或拒絕使用者或群組該物件的控制訪問許可權。 如需詳細資訊,請參閱 在物件的 ACL 中設定控件訪問許可權 ACE。
- 當使用者嘗試執行作業時,將物件安全性描述元和使用者存取令牌傳遞至 AccessCheckByTypeResultList 函式,以驗證用戶權力。 如需詳細資訊,請參閱 檢查物件 ACL 中的控件訪問許可權。
根據物件存取檢查的結果,應用程式或服務可以允許或拒絕使用者存取應用程式或服務。
當您建立 controlAccessRight 物件時,請設定下表所列的屬性,讓對象成為 Active Directory 網域服務 和 Windows 安全性系統所辨識的法律控件存取許可權。
屬性 | 描述 |
---|---|
快遞 之 家 | 單一值屬性,這是 Extended-Rights 容器中對象的相對辨別名稱 (RDN)。 cn 是 Active Directory 網域服務 中訪問控制許可權的名稱。 |
appliesTo | 多重值屬性,列出訪問控制許可權所套用的物件類別。 例如,Send-As 訪問控制許可權會列出其 appliesTo 屬性中的使用者和計算機物件類別。 在清單中,每個物件類別都會由其 classSchema 物件的 schemaIDGUID 來識別。 GUID 會儲存為 COM 連結庫中 StringFromGUID2 函式所產生的表單字串,但不含開頭和終止大括弧 ({ })。 例如,下列 GUID 是計算機類別的 schemaIDGUID:bf967a86-0de6-11d0-a285-00aa003049e2。 請注意,classSchema 物件的 schemaIDGUID 屬性會使用八位字串語法儲存為二進位 GUID。 若要將此八位字串格式轉換為 appliesTo 屬性中使用的字串格式,請使用 StringFromGUID2 函式,並從傳回的字串中移除大括號。 如需其中一個預先定義物件類別之 schemaIDGUID 屬性的詳細資訊,例如使用者或計算機,請參閱 Active Directory 網域服務 參考中的 Active Directory 架構參考頁面。 如需詳細資訊和從 classSchema 物件擷取 schemaIDGUID 的程式碼範例,請參閱 Reading attributeSchema 和 classSchema Objects。 |
displayName | 字串,用來在使用者介面中顯示訪問控制許可權,例如安全性屬性頁,以及 Active Directory 使用者和電腦 MMC 嵌入式管理單元中的其他地方。 |
rightsGuid | GUID,識別 ACE 中的控制件訪問許可權。 GUID 會儲存為 StringFromGUID2 函式所產生的表單字串,但不含開頭和終止大括號。 使用Uuidgen.exe讓其他公用程式產生控件訪問許可權的 GUID。如果您定義新的屬性集,您可以使用controlAccessRight物件的 rightsGuid 來識別集合中的屬性。 針對屬性集中的每個屬性,將屬性的 attributeSecurityGUID 值設定為屬性集 rightsGUID 的值。 屬性的 attributeSecurityGUID 值會儲存在 Active Directory 架構中的屬性Schema 定義中。 attributeSecurityGUID 屬性是單一值,並以二進位格式儲存 GUID(八位字串語法)。 |
objectClass | 這個屬性會將 controlAccessRight 指定為物件類別。 |
validAccesses | 針對屬性集,請將此屬性設定為 0x30 (ADS_RIGHT_DS_READ_PROP | ADS_RIGHT_DS_WRITE_PROP)。 針對控制訪問許可權,請將此屬性設定為 0x100 (ADS_RIGHT_DS_CONTROL_ACCESS)。 只有在 validAccesses 屬性設定為適當的值時,安全性屬性頁面才會辨識控制訪問許可權。 如果為零,則安全性屬性頁會忽略或未顯示控件訪問許可權。 |
請注意,預先定義的架構類別會使用controlAccessRight物件的localizDisplayId屬性來指定訊息標識碼,以從Dssec.dll擷取本地化的顯示名稱。 如果您定義新的控件AccessRight 物件,請勿設定localizationDisplayId屬性。