Criando um direito de acesso de controle
Para adicionar um direito de acesso de controle a um servidor do Active Directory, crie um objeto controlAccessRight no contêiner Extended-Rights da partição Configuration. Para obter mais informações e um exemplo de código, consulte Código de exemplo para criar um direito de acesso de controle. Para usar o direito de acesso de controle, você deve concluir mais algumas etapas, dependendo se o direito de acesso de controle é para uma operação especial ou um conjunto de propriedades.
Se você definir um direito de acesso de controle para um conjunto de propriedades, use o rightsGUID do objeto controlAccessRight para identificar as propriedades no conjunto. Cada propriedade é definida por um objeto attributeSchema no esquema do Active Directory. A propriedade attributeSecurityGUID de um objeto attributeSchema identifica o conjunto de propriedades, se houver, ao qual a propriedade pertence. Lembre-se de que a propriedade attributeSecurityGUID tem valor único e armazena o GUID em formato binário (sintaxe de cadeia de caracteres de octeto).
Se você definir um direito de acesso de controle para colocar restrições de acesso a uma operação específica, seu aplicativo deverá executar a verificação de acesso quando um usuário tentar a operação.
Para configurar a verificação de acesso
- Crie um direito de acesso de controle que defina o tipo de acesso ao aplicativo ou serviço. Para obter mais informações, consulte o exemplo de código a seguir.
- Crie um objeto dos Serviços de Domínio Active Directory que represente o aplicativo, serviço ou recurso que você está protegendo.
- Adicione ACEs de objeto à DACL no descritor de segurança de objeto para conceder ou negar a usuários ou grupos o direito de acesso de controle nesse objeto. Para obter mais informações, consulte Definindo uma ACE de direito de acesso de controle na ACL de um objeto.
- Quando um usuário tentar executar a operação, verifique os direitos do usuário passando o descritor de segurança do objeto e o token de acesso do usuário para a função AccessCheckByTypeResultList. Para obter mais informações, consulte Verificando um direito de acesso de controle na ACL de um objeto.
Com base no resultado da verificação de acesso no objeto, o aplicativo ou serviço pode permitir ou negar o acesso do usuário ao aplicativo ou serviço.
Ao criar um objeto controlAccessRight, defina os atributos, listados na tabela a seguir, para tornar o objeto um direito de acesso de controle legal reconhecido pelos Serviços de Domínio Active Directory e pelos sistemas de segurança do Windows.
Atributo | Descrição |
---|---|
Cn | Uma propriedade de valor único que é o nome distinto relativo (RDN) do objeto no contêiner Direitos estendidos. O cn é o nome do direito de controle de acesso nos Serviços de Domínio Active Directory. |
appliesTo | Uma propriedade de vários valores que lista as classes de objeto às quais o direito de controle de acesso se aplica. Por exemplo, o direito de controle de acesso Enviar-Como lista as classes de objeto de usuário e computador em sua propriedade appliesTo. Na lista, cada classe de objeto é identificada pelo schemaIDGUID de seu objeto classSchema. Os GUIDs são armazenados como cadeias de caracteres do formulário produzido pela função StringFromGUID2 na biblioteca COM, mas sem as chaves inicial e final ({ }). Por exemplo, o GUID a seguir é o schemaIDGUID para a classe de computador: bf967a86-0de6-11d0-a285-00aa003049e2. Lembre-se de que a propriedade schemaIDGUID de um objeto classSchema é armazenada como um GUID binário usando a sintaxe de cadeia de caracteres do octeto. Para converter esse formato de cadeia de caracteres de octeto para o formato de cadeia de caracteres usado na propriedade appliesTo, use a função StringFromGUID2 e remova as chaves da cadeia de caracteres retornada. Para obter mais informações sobre a propriedade schemaIDGUID de uma das classes de objeto predefinidas, como usuário ou computador, consulte a página de referência de classe na Referência de Esquema do Active Directory na Referência dos Serviços de Domínio Active Directory. Para obter mais informações e um exemplo de código que recupera um schemaIDGUID de um objeto classSchema, consulte Reading attributeSchema e classSchema Objects. |
displayName | A cadeia de caracteres usada para exibir o direito de controle de acesso em interfaces de usuário, como a página de propriedades Segurança e outros locais no snap-in MMC Usuários e Computadores do Active Directory. |
direitosGuid | Um GUID que identifica o direito de acesso de controle em uma ACE. O GUID é armazenado como uma cadeia de caracteres do formulário produzido pela função StringFromGUID2 , mas sem as chaves de início e término. Use Uuidgen.exe para algum outro utilitário para gerar um GUID para o direito de acesso de controle. Se você definir um novo conjunto de propriedades, use o rightsGuid do objeto controlAccessRight para identificar as propriedades no conjunto. Para cada propriedade no conjunto de propriedades, defina o valor attributeSecurityGUID da propriedade como o valor do rightsGUID do conjunto de propriedades. O valor attributeSecurityGUID de uma propriedade é armazenado na definição attributeSchema da propriedade no esquema do Active Directory. A propriedade attributeSecurityGUID tem valor único e armazena o GUID em formato binário (sintaxe de cadeia de caracteres de octeto). |
objectClass | Esse atributo especifica controlAccessRight como a classe de objeto. |
validAccesses | Para conjuntos de propriedades, defina esse atributo como 0x30 (ADS_RIGHT_DS_READ_PROP | ADS_RIGHT_DS_WRITE_PROP). Para direitos de acesso de controle, defina esse atributo como 0x100 (ADS_RIGHT_DS_CONTROL_ACCESS). A página de propriedades de segurança reconhece direitos de acesso de controle somente se o atributo validAccesses estiver definido com o valor apropriado. Se zero, o direito de acesso de controle será ignorado ou não exibido pela página de propriedades de segurança. |
Lembre-se de que as classes de esquema predefinidas usam o atributo localizationDisplayId de um objeto controlAccessRight para especificar um identificador de mensagem usado para recuperar um nome de exibição localizado de Dssec.dll. Não defina o atributo localizationDisplayId se você definir um novo objeto controlAccessRight .