Identificadores de segurança
Um SID ( identificador de segurança ) é um valor exclusivo de comprimento variável usado para identificar um administrador. Cada conta tem um SID exclusivo emitido por uma autoridade, como um controlador de domínio do Windows e armazenado em um banco de dados de segurança. Sempre que um usuário faz logon, o sistema recupera o SID desse usuário do banco de dados e o coloca no token de acesso desse usuário. O sistema usa o SID no token de acesso para identificar o usuário em todas as interações subsequentes com a segurança do Windows. Quando um SID tiver sido usado como o identificador exclusivo para um usuário ou grupo, ele não poderá ser usado novamente para identificar outro usuário ou grupo.
A segurança do Windows usa SIDs nos seguintes elementos de segurança:
- Em descritores de segurança para identificar o proprietário de um objeto e grupo primário
- Em entradas de controle de acesso, para identificar o administrador para quem o acesso é permitido, negado ou auditado
- Em tokens de acesso, para identificar o usuário e os grupos aos quais o usuário pertence
Além dos SIDs específicos do domínio criados exclusivamente atribuídos a usuários e grupos específicos, há SIDs conhecidos que identificam grupos genéricos e usuários genéricos. Por exemplo, os SIDs conhecidos, Todos e Mundo, identificam um grupo que inclui todos os usuários.
A maioria dos aplicativos nunca precisa trabalhar com SIDs. Como os nomes de SIDs conhecidos podem variar, você deve usar as funções para criar o SID a partir de constantes predefinidas em vez de usar o nome do SID conhecido. Por exemplo, a versão em inglês dos EUA do sistema operacional Windows tem um SID conhecido chamado "BUILTIN\Administrators" que pode ter um nome diferente em versões internacionais do sistema. Para obter um exemplo que cria um SID conhecido, consulte Pesquisando um SID em um token de acesso em C++.
Se você precisar trabalhar com SIDs, não manipule-os diretamente. Em vez disso, use as funções a seguir.
Função | Descrição |
---|---|
AllocateAndInitializeSid | Aloca e inicializa um SID com o número especificado de subautoridades. |
ConvertSidToStringSid | Converte um SID em um formato de cadeia de caracteres adequado para exibição, armazenamento ou transporte. |
ConvertStringSidToSid | Converte um SID de formato de cadeia de caracteres em um SID válido e funcional. |
CopySid | Copia um SID de origem para um buffer. |
EqualPrefixSid | Testa dois valores de prefixo SID para igualdade. Um prefixo SID é o SID inteiro, exceto pelo último valor de subautoridade. |
EqualSid | Testa dois SIDs quanto à igualdade. Eles devem corresponder exatamente para serem considerados iguais. |
FreeSid | Libera um SID alocado anteriormente usando a função AllocateAndInitializeSid . |
GetLengthSid | Recupera o comprimento de um SID. |
GetSidIdentifierAuthority | Recupera um ponteiro para a autoridade de identificador de um SID. |
GetSidLengthRequired | Recupera o tamanho do buffer necessário para armazenar um SID com um número especificado de subautoridades. |
GetSidSubAuthority | Recupera um ponteiro para uma subautoridade especificada em um SID. |
GetSidSubAuthorityCount | Recupera o número de subautoridades em um SID. |
InitializeSid | Inicializa uma estrutura sid . |
IsValidSid | Testa a validade de um SID verificando se o número de revisão está dentro de um intervalo conhecido e se o número de subautoridades é menor que o máximo. |
Lookupaccountname | Recupera o SID que corresponde a um nome de conta especificado. |
Lookupaccountsid | Recupera o nome da conta que corresponde a um SID especificado. |