Поделиться через


Приложение А. 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 строки.