檢查私人物件的存取權

受保護的伺服器應用程式必須先檢查用戶端的存取權限,才能讓用戶端存取受保護的私人物件。 若要這樣做,伺服器會將 模擬權杖、安全性描述元,以及一組要求的存取權傳遞給 AccessCheck。 安全性描述項DACL 中的存取控制專案 (ACE) 指定允許或拒絕各種信任者的存取權限。 AccessCheck函式會將每個 ACE 中的信任者與模擬權杖中所識別的信任項進行比較。 如需用來授與或拒絕存取的演算法描述,請參閱 DACLs 如何控制物件的存取

AccessCheckAndAuditAlarm函式會執行類似的存取檢查。 此外,它會根據安全性描述元中的 SACL,在安全性事件記錄檔中產生稽核記錄。

AccessCheckByType 和AccessCheckByTypeAndAuditAlarm函式類似于AccessCheck 和 AccessCheckAndAuditAlarm,不同之處在于它們可讓您檢查物件的子物件存取權,例如屬性集或屬性。 AccessCheckByTypeResultListAccessCheckByTypeResultListAndAuditAlarm函式也類似于AccessCheck,不同之處在于它們為物件屬性和屬性集階層中的每個子物件提供存取檢查結果。 這些函式會使用 OBJECT_TYPE_LIST 結構來描述檢查存取的物件階層。 產生稽核訊息的函式會使用 AUDIT_EVENT_TYPE 列舉型別來指出所檢查的物件是否為目錄服務物件。 如需物件階層及其子物件的詳細資訊,請參閱 ACE 來控制物件的 Properties 存取

傳遞至 AccessCheckAccessCheckAndAuditAlarm 函式的要求存取權限不得包含任何 一般存取權限。 伺服器可以使用 MapGenericMask 函式,根據 GENERIC_MAPPING 結構中指定的對應,將任何泛型存取權限轉換成對應的特定和標準許可權。

AreAllAccessesGrantedAreAnyAccessesGranted函式會比較要求的存取遮罩與授與存取遮罩。

如需使用 AccessCheck 函式的範例程式碼,請參閱 使用 C++ 中的 ACL 驗證用戶端存取

ConvertToAutoInheritPrivateObjectSecurity函式會建立並傳回安全性描述元,其格式允許自動傳播可繼承的 ACE。 此安全性描述元包含目前安全性描述元中所有 ACE、繼承和非內嵌,且為 自我相對 格式。 ConvertToAutoInheritPrivateObjectSecurity函式會藉由比較目前安全性描述元中的所有 ACE 與其父系安全性描述元中的所有 ACE,來判斷 ACE 是繼承還是非繼承。 兩組 ACE 之間可能沒有一對一的對應。 例如,允許讀取/寫入權限的 ACE 可以等於兩個 ACE:允許讀取權限的 ACE,以及允許寫入權限的 ACE。 當目前的安全性描述元是父代時,可能無法提供父代安全性描述元。