Apêndice A: SDDL para rótulos obrigatórios
O SDDL é uma maneira conveniente de representar permissões de acesso em um formato de cadeia de caracteres. O SDDL define cadeias de caracteres ACE e cadeias de caracteres SID para representar campos de entradas de controle de acesso. Você pode usar as funções ConvertSecurityDescriptorToStringSecurityDescriptor e ConvertStringSecurityDescriptorToSecurityDescriptor para converter o rótulo obrigatório ACE de um binário em um formato de cadeia de caracteres e voltar.
As definições para cadeias de caracteres SDDL estão no arquivo de cabeçalho, sddl.h.
A cadeia de caracteres SDDL para uma ACE de rótulo obrigatório é definida da seguinte maneira:
#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")
Um exemplo do SDDL para uma ACE de rótulo obrigatório em uma SACL que especifica NO_WRITE_UP política para nível de integridade baixo é o seguinte: S:(ML;; NW;;; LW).
Você pode usar cadeias de caracteres SDDL com a função ConvertStringSecurityDescriptorToSecurityDescriptor para inicializar um descritor de segurança com um rótulo obrigatório explícito que pode ser usado como o parâmetro de atributos de segurança ao criar um novo objeto, como um arquivo, usando CreateFile.
Observação
Ao usar ConvertSecurityDescriptorToStringSecurityDescriptor, especifique o novo sinalizador de informações de segurança, LABEL_SECURITY_INFORMATION, a fim de converter um rótulo obrigatório explícito na cadeia de caracteres SDDL equivalente. Sem o sinalizador LABEL_SECURITY_INFORMATION, um rótulo obrigatório, se existir, não aparecerá na parte SACL da cadeia de caracteres.