Compartilhar via


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

  1. 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.
  2. Crie um objeto dos Serviços de Domínio Active Directory que represente o aplicativo, serviço ou recurso que você está protegendo.
  3. 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.
  4. 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 .