Verificando o acesso a objetos privados
Um aplicativo de servidor protegido deve marcar os direitos de acesso de um cliente antes de permitir que o cliente acesse um objeto privado protegido. Para fazer isso, o servidor passa um token de representação, um descritor de segurança e um conjunto de direitos de acesso solicitados ao AccessCheck. As ACEs ( entradas de controle de acesso ) na DACL do descritor de segurança especificam os direitos de acesso permitidos ou negados a vários administradores. A função AccessCheck compara o objeto de confiança em cada ACE com os administradores identificados no token de representação. Para obter uma descrição do algoritmo usado para conceder ou negar acesso, consulte Como os DACLs controlam o acesso a um objeto.
A função AccessCheckAndAuditAlarm executa uma marcar de acesso semelhante. Além disso, ele gera registros de auditoria no log de eventos de segurança, dependendo da SACL no descritor de segurança.
As funções AccessCheckByType e AccessCheckByTypeAndAuditAlarm são semelhantes a AccessCheck e AccessCheckAndAuditAlarm, exceto que permitem que você marcar acesso aos subobjetos de um objeto, como conjuntos de propriedades ou propriedades. As funções AccessCheckByTypeResultList e AccessCheckByTypeResultListAndAuditAlarm também são semelhantes a AccessCheck, exceto que fornecem o acesso marcar resultados para cada subobjeto em uma hierarquia das propriedades e conjuntos de propriedades do objeto. Essas funções usam a estrutura OBJECT_TYPE_LIST para descrever a hierarquia de objetos para os quais o acesso é verificado. As funções que geram uma mensagem de auditoria usam o tipo de enumeração AUDIT_EVENT_TYPE para indicar se o objeto que está sendo verificado é um objeto de serviço de diretório. Para obter mais informações sobre a hierarquia de um objeto e seus subobjetos, consulte ACEs para controlar o acesso às propriedades de um objeto.
Os direitos de acesso solicitados passados para as funções AccessCheck e AccessCheckAndAuditAlarm não devem incluir nenhum direito de acesso genérico. O servidor pode usar a função MapGenericMask para converter quaisquer direitos de acesso genéricos para os direitos específicos e padrão correspondentes de acordo com o mapeamento especificado na estrutura GENERIC_MAPPING .
As funções AreAllAccessesGranted e AreAnyAccessesGranted comparam uma máscara de acesso solicitada com uma máscara de acesso concedida.
Para obter o código de exemplo que usa a função AccessCheck , consulte Verificando o acesso do cliente com ACLs em C++.
A função ConvertToAutoInheritPrivateObjectSecurity cria e retorna um descritor de segurança em um formato que permite a propagação automática de ACEs herdáveis. Esse descritor de segurança contém todos os ACEs, herdados e não herdados, no descritor de segurança atual e está no formato auto-relativo . A função ConvertToAutoInheritPrivateObjectSecurity determina se os ACEs são herdados ou não, comparando todos os ACEs no descritor de segurança atual com todos os ACEs em seu descritor de segurança pai. Pode não haver uma correspondência um-para-um entre os dois grupos de ACEs. Por exemplo, uma ACE que permite a permissão de leitura/gravação pode ser equivalente a duas ACEs: uma ACE que permite a permissão de leitura e uma ACE que permite a permissão de gravação. Um descritor de segurança pai pode não ser fornecido quando o descritor de segurança atual é o pai.