Приложение А. SDDL для обязательных меток
SDDL — это удобный способ представления разрешений доступа в строковом формате. SDDL определяет строки ACE и строки sid для представления полей записей управления доступом. Функции ConvertSecurityDescriptorToStringSecurityDescriptor и ConvertStringSecurityDescriptorToSecurityDescriptor можно использовать для преобразования обязательной метки ACE из двоичного файла в строковый формат и обратно.
Определения для строк SDDL находятся в файле заголовка sddl.h.
Строка SDDL для обязательной метки ACE определяется следующим образом:
#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")
Пример SDDL для обязательной метки ACE в SACL, который указывает NO_WRITE_UP политику для низкого уровня целостности: S:(ML;; NW;;; LW).
Строки SDDL можно использовать с функцией ConvertStringSecurityDescriptorToSecurityDescriptor для инициализации дескриптора безопасности с явной обязательной меткой, которую можно использовать в качестве параметра атрибутов безопасности при создании нового объекта, например файла, с помощью CreateFile.
Примечание
При использовании ConvertSecurityDescriptorToStringSecurityDescriptor укажите новый флаг сведений о безопасности, LABEL_SECURITY_INFORMATION, чтобы преобразовать явную обязательную метку в эквивалент строки SDDL. Без флага LABEL_SECURITY_INFORMATION обязательная метка, если она существует, не будет отображаться в части SACL строки.