Qual é a diferença entre o Access Token, SID, Token de Representação?

0

Eu listei as definições selecionadas do MSDN, mas gostaria de saber a diferença entre elas com um exemplo de um programa (processo) que pode precisar utilizá-las em diferentes cenários.

TOQUE DE ACESSO

An access token is an object that describes the security context of a process or thread. The information in a token includes the identity and privileges of the user account associated with the process or thread. When a user logs on, the system verifies the user's password by comparing it with information stored in a security database. If the password is authenticated, the system produces an access token. Every process executed on behalf of this user has a copy of this access token

SID

A security identifier (SID) is a unique value of variable length used to identify a trustee. Each account has a unique SID issued by an authority, such as a Windows domain controller, and stored in a security database. Each time a user logs on, the system retrieves the SID for that user from the database and places it in the access token for that user. The system uses the SID in the access token to identify the user in all subsequent interactions with Windows security.

TOKEN DE IMERSÃO

An access token that has been created to capture the security information of a client process, allowing a server to "impersonate" the client process in security operations.

Com base na definição, todos parecem ser bem parecidos para mim. Alguém pode explicar as diferenças entre eles, dando um exemplo?

    
por Dhiwakar Ravikumar 13.01.2015 / 06:06

1 resposta

4

"SID" é um identificador estático anexado a uma conta de usuário. É apenas uma série de números, como o SSN da pessoa / NIN , ou" chave primária "de um registro de banco de dados. Como isso nunca muda, sua finalidade é encontrar uma conta específica, mesmo que ela tenha sido renomeada; por esse motivo, ele é armazenado em vez do nome do usuário em tokens, ACLs e outras estruturas semelhantes.

Observe que também há SIDs de grupo, SIDs de sessão, SIDs de serviço e outros - para identificar todos os tipos de "atores" diferentes que podem estar nas ACLs.

"Token" é um objeto do kernel que contém listas de SIDs e privilégios. O kernel tem regras muito restritas para obtê-las e manipulá-las (isso pode ser feito apenas usando syscalls, não acesso direto à memória), então ter um token significa que o processo foi autorizado a agir em nome de qualquer usuário que o token descreva.

(Em sistemas semelhantes ao Unix, se você estiver familiarizado com eles, um processo tem um conjunto de "credenciais" - 'UID real', 'UID efetivo', 'GID real', 'GID efetivo', 'complementar GIDs e algumas outras coisas. O SID é uma extensão de um UID / GID, e o token é uma coleção dessas credenciais. Em vez de chamar capset() + setgroups() + setgid() + setuid() , você obtenha um token e chame SetToken() .)

Existem dois tipos de tokens - "primary", que podem ser gerados apenas ao efetuar login no sistema e "impersonation ", tokens temporários que qualquer serviço pode criar para atuar em nome de um cliente.

Aqui está uma lista completa de todas informações mantidas em um token.

    
por 13.01.2015 / 07:10