Contextos de segurança e serviços de domínio Active Directory

Quando um aplicativo se vincula a um controlador de domínio (DC) do Active Directory, ele faz isso no contexto de segurança de uma entidade de segurança, que pode ser um usuário ou uma entidade, como um computador ou um serviço do sistema. O contexto de segurança é a conta de usuário que o sistema usa para impor segurança quando um thread tenta acessar um objeto protegível. Esses dados incluem o identificador de segurança do usuário (SID), associações de grupo e privilégios.

Um usuário estabelece um contexto de segurança apresentando credenciais para autenticação. Se as credenciais forem autenticadas, o sistema produzirá um token de acesso que identifica as associações de grupo e os privilégios associados à conta de usuário. O sistema verifica seu token de acesso quando você tenta acessar um objeto de diretório. Ele compara os dados em seu token de acesso com as contas e grupos de acesso concedido ou negado pelo descritor de segurança do objeto.

Use os seguintes métodos para controlar o contexto de segurança com o qual você se vincula a um controlador de domínio do Active Directory:

  • Vincule usando a opção ADS_SECURE_AUTHENTICATION com a função ADsOpenObject ou o método IADsOpenDSObject::OpenDSObject e especifique explicitamente um nome de usuário e senha. O sistema autentica essas credenciais e gera um token de acesso que usa para verificação de acesso durante a vinculação. Para obter mais informações, confira Autenticação.
  • Vincular usando a opção ADS_SECURE_AUTHENTICATION , mas sem especificar credenciais. Se você não estiver representando um usuário, o sistema usará o contexto de segurança primário do seu aplicativo, ou seja, o contexto de segurança do usuário que iniciou o aplicativo. No caso de um serviço do sistema, esse é o contexto de segurança da conta de serviço ou da conta LocalSystem.
  • Represente um usuário e, em seguida, vincule-se a ADS_SECURE_AUTHENTICATION, mas sem especificar credenciais. Nesse caso, o sistema usa o contexto de segurança do cliente que é representado. Para obter mais informações, consulte Representação de cliente.
  • Vincule usando ADsOpenObject ou IADsOpenDSObject::OpenDSObject com a opção ADS_NO_AUTHENTICATION. Esse método se vincula sem autenticação e resulta em "Todos" como o contexto de segurança. Somente o provedor LDAP oferece suporte a essa opção.

Se possível, vincule sem especificar credenciais. Ou seja, use o contexto de segurança do usuário conectado ou do cliente representado. Isso permite que você evite credenciais de cache. Se você precisar usar credenciais de usuário alternativas, solicite as credenciais, vincule-as a elas, mas não as armazene em cache. Para usar o mesmo contexto de segurança em várias operações de associação, você pode especificar o nome de usuário e a senha para a primeira operação de associação e, em seguida, especificar apenas o nome de usuário para fazer ligações subsequentes. Para obter mais informações sobre como usar essa técnica, consulte Autenticação.

Alguns contextos de segurança são mais poderosos do que outros. Por exemplo, a conta LocalSystem em um controlador de domínio tem acesso completo aos Serviços de Domínio Active Directory, enquanto um usuário típico tem acesso limitado a alguns dos objetos no diretório. Em geral, seu aplicativo não deve ser executado em um contexto de segurança poderoso, como LocalSystem, quando um contexto de segurança menos poderoso é suficiente para executar as operações. Isso significa que você pode querer dividir seu aplicativo em componentes separados, cada um dos quais é executado em um contexto de segurança apropriado para as operações a serem executadas. Por exemplo, a configuração do aplicativo pode ser dividida da seguinte maneira:

  • Execute alterações e extensões de esquema no contexto de um usuário que seja membro do grupo Administradores de Esquema.
  • Execute alterações no contêiner de configuração no contexto de um usuário que seja membro do grupo Administradores Corporativos.
  • Execute alterações no contêiner de domínio no contexto de um usuário que seja membro do grupo Administradores de Domínio.