附录 A:强制标签的 SDDL

SDDL 是一种以字符串格式表示访问权限的便捷方法。 SDDL 定义 ACE 字符串和 SID 字符串来表示访问控制项的字段。 可以使用 ConvertSecurityDescriptorToStringSecurityDescriptor 和 ConvertStringSecurityDescriptorToSecurityDescriptor 函数将强制标签 ACE 从二进制文件转换为字符串格式并返回。

SDDL 字符串的定义位于头文件 sddl.h 中。

强制标签 ACE 的 SDDL 字符串定义如下:

#define SDDL_MANDATORY_LABEL        TEXT("ML") // Integrity label
The SDDL strings for the mandatory label policy flags, which are in the access mask, are the following:
#define SDDL_NO_WRITE_UP          TEXT("NW")
#define SDDL_NO_READ_UP           TEXT("NR")
#define SDDL_NO_EXECUTE_UP         TEXT("NX")
The SDDL SID strings for the integrity levels are the following:
#define SDDL_ML_LOW          TEXT("LW")
#define SDDL_ML_MEDIUM          TEXT("ME")
#define SDDL_ML_HIGH          TEXT("HI")
#define SDDL_ML_SYSTEM          TEXT("SI")

SACL 中指定低完整性级别的NO_WRITE_UP策略的强制标签 ACE 的 SDDL 示例如下:S: (ML;;西北;;;LW) 。

可以将 SDDL 字符串与 ConvertStringSecurityDescriptorToSecurityDescriptor 函数结合使用,以使用显式强制标签初始化安全描述符,该标签可在使用 CreateFile 创建新对象(如文件)时用作安全属性参数。

注意

使用 ConvertSecurityDescriptorToStringSecurityDescriptor 时,请指定新的安全信息标志(LABEL_SECURITY_INFORMATION),以便将显式强制标签转换为等效的 SDDL 字符串。 如果没有LABEL_SECURITY_INFORMATION标志,强制标签(如果存在)将不会显示在字符串的 SACL 部分中。