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 部分中。