Entrada de controle de acesso
Uma entrada de controle de acesso (ACE) descreve os direitos de acesso associados a um SID (identificador de segurança) específico. O sistema operacional avalia as ACEs para calcular o acesso efetivo concedido a um programa específico com base em suas credenciais. Por exemplo, quando um usuário entra no computador e executa um programa, o programa usa as credenciais associadas à conta desse usuário específico.
Quando um programa tenta abrir um objeto, o Windows compara as credenciais associadas ao programa com os controles de segurança associados ao objeto. O monitor de referência de segurança usa as informações do ACE para determinar se o programa deve ter acesso permitido ou negado ao objeto fornecido. É o ACE que determina o comportamento do subsistema de segurança.
A figura a seguir ilustra a entrada de controle de acesso.
O subsistema de segurança usa vários tipos de ACES, incluindo os seguintes tipos. O membro Tipo da estrutura ACE controla a interpretação da ACE. Os tipos definidos são:
ACCESS_ALLOWED_ACE_TYPE — esse tipo indica que a ACE especifica os direitos de acesso concedidos ao SID específico.
ACCESS_DENIED_ACE_TYPE indica que a ACE especifica os direitos de acesso que devem ser negados ao SID específico.
SYSTEM_AUDIT_ACE_TYPE indica que o ACE especifica o comportamento de auditoria.
SYSTEM_ALARM_ACE_TYPE indica que o ACE especifica o comportamento do alarme.
ACCESS_ALLOWED_COMPOUND_ACE_TYPE indica que a ACE está vinculada a um servidor específico e à entidade que ela está representando.
Os tipos ACCESS_XXX são usados para controlar o acesso programático a um objeto. Os tipos SYSTEM_XXX são usados para controlar o comportamento de auditoria e alarme do subsistema de segurança quando o objeto é acessado. O comportamento real do subsistema de segurança é calculado combinando as informações de algumas ou todas as ACEs associadas ao objeto.
Um driver pode construir uma ACE de ACCESS_ALLOWED_ACE_TYPE usando a rotina RtlAddAccessAllowedAce. Para adicionar os outros tipos de entradas ACE, os gravadores de driver devem construir suas próprias funções porque o WDK não fornece outras rotinas de suporte.