Nesta página, descrevemos 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 apresentamos os principais conceitos do Kerberos. O 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 principal 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 da autenticação Kerberos. No contexto do Active Directory, um realm é equivalente a um domínio do Active Directory. Os domínios
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 domínio
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 principal do Kerberos que é executado em todos os controladores de domínio do Active Directory. O KDC tem as seguintes funções principais:
- Serviço de autenticação (AS): 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).
- Serviço de concessão de tíquetes (TGS): 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 domínio do Kerberos a que os tíquetes podem ser atribuídos. Estes são os principais tipos de administradores:
- Principais de usuário: representam usuários humanos, por exemplo,
username@REALM
. - Principais de serviço (SPN): 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 ao KDC e descriptografar os 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 centralizado de usuários 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): é 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 via LDAP para verificar as credenciais do usuário, que geralmente 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) 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. A GSSAPI fornece 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 e 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 autenticar 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.
- O cliente
psql
inicia uma solicitação de autenticação usando o Serviço de autenticação (AS) no Centro de distribuição de chaves (KDC). - O AS autentica o cliente e emite um tíquete de concessão de tíquete (TGT) (T1) para ele. Em seguida, o TGT é usado para solicitar tíquetes de serviço.
- O cliente usa o TGT para solicitar um tíquete de serviço do serviço de concessão de tíquetes (TGS) no KDC para o serviço PostgreSQL. O cliente está solicitando acesso ao servidor PostgreSQL específico.
- 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.
- O cliente envia o tíquete de serviço criptografado (T2) para o servidor PostgreSQL.
- O servidor PostgreSQL usa a chave (do arquivo keytab) para descriptografar o tíquete de serviço (T2). Em seguida, ele recupera a chave de sessão (T3) e verifica a autenticidade do tíquete. Se a 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
- Integrar o suporte a usuários do Active Directory ao AlloyDB Omni.
- Integrar o suporte a usuários do Active Directory no Kubernetes.
- Integrar o suporte a grupos do Active Directory com o AlloyDB Omni.
- Integrar o suporte a grupos do Active Directory no Kubernetes.
- Resolver problemas de integração do Active Directory no AlloyDB Omni.