Criar um direito de controlo de acesso
Para adicionar um direito de acesso de controle a um servidor do Ative Directory, crie um objeto controlAccessRight no contêiner Extended-Rights da partição Configuração. 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 é de 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 Ative Directory que represente o aplicativo, serviço ou recurso que você está protegendo.
- Adicione ACEs de objeto à DACL no descritor de segurança do objeto para conceder ou negar aos utilizadores ou grupos o direito de controlo de acesso nesse mesmo objeto. Para obter mais informações, consulte Definindo uma ACE de direito de acesso de controle na ACL de um objeto.
- Quando um utilizador tenta executar a operação, verifique os direitos do utilizador passando o descritor de segurança do objeto e o token de acesso do utilizador 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.
Quando você cria um objetocontrolAccessRight, 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 Ative 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 Extended-Rights. O cn é o nome do direito de controle de acesso nos Serviços de Domínio Ative Directory. |
se aplicaAos | 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 Send-As lista ode usuárioe classes de objeto de de computador em seu aplica-se a propriedade. Na lista, cada classe de objeto é identificada pelo schemaIDGUID de seu classSchema objeto. Os GUIDs são armazenados como cadeias de caracteres do formulário produzido pela funçãoStringFromGUID2 na biblioteca COM, mas sem as chaves de início e término ({ }). Por exemplo, o GUID a seguir é o schemaIDGUID para a classe 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 da string de octetos. Para converter este formato de cadeia de caracteres de octeto para o formato utilizado na propriedade appliesTo, utilize a função StringFromGUID2 e remova as chaves da cadeia de caracteres retornada. Para obter mais informações sobre a propriedade deschemaIDGUIDde uma das classes de objeto predefinidas, como de usuário ou computador, consulte a página de referência de classe na Referência de esquema do Ative Directory no de referência dos Serviços de Domínio Ative 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. |
nomeExibição | A string usada para exibir o direito de controle de acesso em interfaces de usuário, como a página de propriedades Security e outros locais no snap-in MMC de Usuários e Computadores do Active Directory. |
guiaDeDireitos | Um GUID que identifica o direito de acesso de controle em uma ACE. O GUID é armazenado como uma cadeia de caracteres no formato produzido pela função StringFromGUID2, mas sem as chaves de início e encerramento. 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 orightsGuiddo objeto controlAccessRight para identificar as propriedades no conjunto. Para cada propriedade no conjunto de propriedades, defina o valordoattributeSecurityGUID da propriedade como o valor do rightsGUID do conjunto de propriedades. O valor de attributeSecurityGUID de uma propriedade é armazenado na definição deattributeSchema no esquema do Active Directory. A propriedade atributo SecurityGUID é de valor único e armazena o GUID em formato binário (sintaxe de cadeia de caracteres de octeto). |
objectClass | Este atributo especifica controlAccessRight como a classe de objeto. |
acessosVálidos | 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 for definido com o valor apropriado. Se zero, o direito de acesso de controle é 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 objetocontrolAccessRightpara especificar um identificador de mensagem usado para recuperar um nome de exibição localizado de Dssec.dll. Não defina o atributo localizationDisplayId se definir um novo objeto controlAccessRight.