安全标识符(SID)是用于标识受托方的唯一长度值。 每个帐户都有由颁发机构(例如 Windows 域控制器)颁发的唯一 SID,并存储在安全数据库中。 每次用户登录时,系统都会从数据库中检索该用户的 SID,并将其置于该用户的 访问令牌 中。 系统使用访问令牌中的 SID 在与 Windows 安全的所有后续交互中标识用户。 当 SID 用作用户或组的唯一标识符时,它再也不能用于标识另一个用户或组。
Windows 安全性在以下安全元素中使用 SID:
除了分配给特定用户和组的唯一创建的特定于域的 SID 之外,还有 已知 SID 用于标识泛型组和泛型用户。 例如,已知的 SID、“每个人”和“世界”标识包含所有用户的组。
使用安全标识符 (SID)
大多数应用程序从不需要使用 SID。 由于 已知 SID 的名称 可能会有所不同,因此应使用函数从预定义常量生成 SID,而不是使用已知 SID 的名称。 例如,Windows作系统的美国英语版本具有一个名为“BUILTIN\Administrators”的已知 SID,该 SID 在系统的国际版本中可能具有不同的名称。 有关生成已知 SID 的示例,请参阅 在 C++的访问令牌中搜索 SID。
如果需要使用 SID,请不要直接作它们。 请改用以下函数:
| 功能 | 描述 |
|---|---|
| AllocateAndInitializeSid | 分配和初始化具有指定数量的子授权的 SID。 |
| ConvertSidToStringSid(将SID转换为字符串SID) | 将 SID 转换为适合显示、存储或传输的字符串格式。 |
| ConvertStringSidToSid | 将字符串格式 SID 转换为有效的功能 SID。 |
| CopySid | 将源 SID 复制到缓冲区。 |
| EqualPrefixSid | 测试两个 SID 前缀值是否相等。 SID 前缀是除最后一个子授权值以外的整个 SID。 |
| EqualSid | 测试两个 SID 是否相等。 它们必须完全匹配,才能被视为相等。 |
| FreeSid | 使用 AllocateAndInitializeSid 函数释放以前分配的 SID。 |
| GetLengthSid | 检索 SID 的长度。 |
| GetSidIdentifierAuthority(获取 SID 标识符权限) | 检索指向 SID 标识符颁发机构的指针。 |
| GetSidLengthRequired | 检索存储具有指定数量的子授权的 SID 所需的缓冲区大小。 |
| GetSidSubAuthority | 检索指向 SID 中指定子授权的指针。 |
| GetSidSubAuthorityCount | 检索 SID 中的子授权数。 |
| InitializeSid | 初始化 SID 结构。 |
| IsValidSid | 通过验证修订号是否在已知范围内且子授权数小于最大值来测试 SID 的有效性。 |
| LookupAccountName | 检索与指定帐户名称对应的 SID。 |
| LookupAccountSid | 检索与指定 SID 对应的帐户名称。 |
相关内容
在访问令牌中搜索 C++ 中的 SID