Visão geral do Active Directory

Selecione uma versão da documentação:

Esta página descreve como o PostgreSQL se integra ao Active Directory no AlloyDB Omni usando a Interface de programação de aplicativos de serviços de segurança genéricos (GSSAPI, na sigla em inglês) e apresenta os principais conceitos do Kerberos. Kerberos é o protocolo de autenticação que alimenta o Active Directory.

O Active Directory é um serviço de diretório desenvolvido pela Microsoft para redes de domínio do Windows. O Active Directory é um sistema centralizado e padronizado que automatiza o gerenciamento de rede de dados do usuário, segurança e recursos distribuídos. Esse serviço de diretório oferece um único ponto de administração para contas de usuário, grupos e outros objetos de rede. Uma função essencial do Active Directory é a autenticação, que confirma a identidade e a autorização de um usuário e concede acesso a recursos específicos na rede.

Componentes do Active Directory

Um realm é o domínio administrativo para autenticação Kerberos. No contexto do Active Directory, um realm é equivalente a um domínio do Active Directory. Os realms representam um grupo lógico de usuários, computadores e serviços que compartilham um banco de dados de autenticação comum. Ao configurar o Kerberos, é necessário especificar o realm a que seus clientes e serviços pertencem. Um realm é uma versão em maiúsculas do nome de domínio. Por exemplo, se o domínio for ad.example.com, o realm será AD.EXAMPLE.COM.

O Centro de distribuição de chaves (KDC, na sigla em inglês) é um serviço Kerberos principal que é executado em todos os controladores de domínio no Active Directory. O KDC tem as seguintes funções principais:

  • Serviço de autenticação (AS, na sigla em inglês): verifica a identidade de um usuário no login inicial, por exemplo, quando você faz login no Windows, e emite um tíquete de concessão de tíquete (TGT, na sigla em inglês).
  • Serviço de concessão de tíquetes (TGS, na sigla em inglês): emite tíquetes de serviço para usuários autenticados que apresentam um TGT válido. Esses tíquetes de serviço concedem acesso a serviços específicos, como um banco de dados PostgreSQL.

Um principal é uma identidade exclusiva em um realm Kerberos a que os tíquetes podem ser atribuídos. A seguir estão os principais tipos de principais:

  • Principais de usuário: representam usuários humanos, por exemplo, username@REALM.
  • Principais de serviço (SPN, na sigla em inglês): representam um serviço específico em um host específico, por exemplo, postgres/db-server.ad.example.com@REALM. Para que um cliente solicite um tíquete de serviço para seu banco de dados, o serviço de banco de dados precisa ter um SPN registrado.

Um arquivo keytab ou tabela de chaves contém uma lista de principais e as chaves secretas correspondentes, que são derivadas das senhas dos principais. Os serviços usam um arquivo keytab para provar a identidade deles para o KDC e para descriptografar tíquetes de serviço apresentados pelos clientes.

Essa abordagem permite que um serviço como o PostgreSQL se autentique no sistema Kerberos sem exigir interação humana ou armazenar uma senha de texto simples no servidor. O arquivo keytab é altamente sensível e precisa ser armazenado e protegido com segurança.

Integração do PostgreSQL com o Active Directory

A integração do PostgreSQL com o Active Directory oferece gerenciamento de usuários centralizado com base em identidades corporativas, o que aumenta a segurança do banco de dados.

Para oferecer suporte à autenticação, o PostgreSQL oferece os seguintes métodos de integração com o Active Directory:

  • Protocolo leve de acesso a diretórios (LDAP, na sigla em inglês): é possível configurar o PostgreSQL para autenticar usuários em um servidor do Active Directory usando o protocolo LDAP. Quando um usuário tenta se conectar ao banco de dados, o PostgreSQL se comunica com o servidor do Active Directory pelo LDAP para verificar as credenciais do usuário, que normalmente são um nome de usuário e uma senha. Esse método usa o Active Directory como um provedor de autenticação externo.

  • Interface de programação de aplicativos de serviços de segurança genéricos (GSSAPI, na sigla em inglês) com Kerberos: esse é um método mais seguro e complexo que usa o protocolo Kerberos, que é o mecanismo de autenticação padrão no Active Directory. O GSSAPI oferece uma interface padrão para que os aplicativos acessem serviços de segurança.

Embora o LDAP e o GSSAPI alcancem o objetivo da integração do Active Directory, o GSSAPI com Kerberos é a abordagem mais segura e robusta para ambientes empresariais devido à autenticação criptográfica forte baseada em tíquetes. Esta página aborda a implementação da integração do Active Directory para o AlloyDB Omni usando o método GSSAPI.

Autenticação do Active Directory com GSSAPI

O AlloyDB Omni permite que você faça a autenticação pelo Kerberos usando o Active Directory como um back-end de autenticação. As etapas para realizar a autenticação são mostradas no diagrama a seguir.

imagem

  1. O cliente psql inicia uma solicitação de autenticação usando o Serviço de autenticação (AS, na sigla em inglês) no Centro de distribuição de chaves (KDC, na sigla em inglês).
  2. O AS autentica o cliente e emite um tíquete de concessão de tíquete (TGT, na sigla em inglês) (T1) para o cliente. O TGT é usado para solicitar tíquetes de serviço.
  3. O cliente usa o TGT para solicitar um tíquete de serviço do Serviço de concessão de tíquetes (TGS, na sigla em inglês) no KDC para o serviço PostgreSQL. O cliente agora está solicitando acesso ao servidor PostgreSQL específico.
  4. O TGS valida o TGT e emite um tíquete de serviço (T2) para o cliente. Esse tíquete contém uma chave de sessão (T3) e é criptografado usando a chave secreta do servidor PostgreSQL.
  5. O cliente envia o tíquete de serviço criptografado (T2) para o servidor PostgreSQL.
  6. O servidor PostgreSQL usa a chave (do arquivo keytab) para descriptografar o tíquete de serviço (T2). Em seguida, o servidor recupera a chave de sessão (T3) e verifica a autenticidade do tíquete. Se essa operação for bem-sucedida, o servidor concederá acesso e estabelecerá um canal de comunicação seguro com o cliente usando a chave de sessão.

A seguir