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 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 Windows segurança. Quando um SID tiver sido usado como o identificador exclusivo de um usuário ou grupo, ele não poderá ser usado novamente para identificar outro usuário ou grupo.
Windows segurança 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 exclusivos e específicos do domínio 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 bem conhecido, consulte Pesquisar um SID em um Token de Acesso no 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 em 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 para 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 sub-coautorias 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. |