访问令牌中的 SID 属性

访问令牌中 (SID) 的每个用户和组安全标识符都有一组属性,用于控制系统如何在访问检查中使用 SID。 下表列出了控制访问检查的属性。

属性 说明
SE_GROUP_ENABLED 启用具有此属性的 SID 进行访问检查。 当系统执行访问检查时,它会检查适用于访问令牌中已启用的 SID 之一的 ACE (ACE) 允许访问和拒绝访问的访问控制条目。 除非设置了 SE_GROUP_USE_FOR_DENY_ONLY 属性,否则在访问检查期间将忽略没有此属性的 SID。
SE_GROUP_USE_FOR_DENY_ONLY 具有此属性的 SID 是仅拒绝的 SID。 当系统执行访问检查时,它会检查适用于 SID 的拒绝访问 ACE,但它会忽略 SID 允许访问的 ACE。 如果设置了此属性,则不会设置 SE_GROUP_ENABLED 属性,并且无法重新启用 SID。

若要设置或清除组 SID 的 SE_GROUP_ENABLED 属性,请使用 AdjustTokenGroups 函数。 不能禁用具有 SE_GROUP_MANDATORY 属性的组 SID。 不能使用 AdjustTokenGroups 禁用访问令牌的用户 SID。

若要确定是否在令牌中启用 SID,即是否具有 SE_GROUP_ENABLED 属性,请调用 CheckTokenMembership 函数。

若要设置 SID 的 SE_GROUP_USE_FOR_DENY_ONLY 属性,请将 SID 包含在调用 CreateRestrictedToken 函数时指定的仅拒绝 SID 列表中。 CreateRestrictedToken 可以将 SE_GROUP_USE_FOR_DENY_ONLY 属性应用于任何 SID,包括具有 SE_GROUP_MANDATORY 属性的用户 SID 和组 SID。 但是,不能从 SID 中删除仅拒绝属性,也不能使用 AdjustTokenGroups 在仅拒绝的 SID 上设置 SE_GROUP_ENABLED 属性。

若要获取 SID 的属性,请使用 TokenGroups 值调用 GetTokenInformation 函数。 函数返回 SID_AND_ATTRIBUTES结构的数组 ,用于标识组 SID 及其属性。