A configuração do Active Directory no AlloyDB Omni é opcional e fica desativada por padrão. Somente ambientes que usam o servidor do Active Directory para autenticação podem usar esse mecanismo de configuração.
Antes de começar
Antes de integrar o Active Directory, verifique se você atende aos seguintes requisitos:
- Verifique se o Active Directory está configurado.
- Obtenha o
REALM
do servidor do Active Directory. - Obtenha o nome do host do centro de distribuição de chaves (KDC) do servidor do Active Directory. O nome do host é armazenado nas imagens do Docker.
- Obtenha o nome do host do servidor de administração do servidor do Active Directory. Esse nome de host é armazenado nas imagens do Docker.
- Verifique se você tem acesso ao servidor do Active Directory para gerar um arquivo
.keytab
. - Escolha um usuário do Active Directory para usar no teste e no login.
- Consiga um arquivo
.keytab
do servidor do Active Directory.
Extrair um arquivo .keytab do servidor do Active Directory
Para receber um keytab do servidor do Active Directory, siga estas etapas:
- Faça login como administrador no terminal do PowerShell do servidor do Active Directory.
- Crie um usuário chamado
postgres
executando o seguinte comando ou usando a interface do usuário do Active Directory. - Gere um keytab principal de serviço que mapeie para este servidor do Active Directory.
- Copie o arquivo keytab para sua máquina Linux.
New-ADUser -Name "postgres" ` -SamAccountName "postgres" ` -UserPrincipalName "postgres@REALM" ` -Description "Service Account for AlloyDB Omni PostgreSQL Kerberos Authentication" ` -AccountPassword (Read-Host -AsSecureString "Set a strong password for the postgres service account") ` -Enabled $true ` -PasswordNeverExpires $true
ktpass /princ postgres/ALLOYDB_HOST_NAME@REALM /Pass ChangeMe123 /mapuser postgres /crypto ALL /ptype KRB5_NT_PRINCIPAL /mapOp set /out C:\Users\Public\postgres.keytab
Em que <HOST>
é o nome de domínio totalmente qualificado do servidor em que você planeja implantar o AlloyDB Omni. Por exemplo, alloydb-server.ad.example.com
. Configure o mesmo host no arquivo krb5.conf
do mapeamento de domínio.
Ativar a autenticação do Active Directory
Para ativar a autenticação do Active Directory no AlloyDB Omni, siga estas etapas, que incluem a configuração da Generic Security Service Application Program Interface (GSSAPI), uma interface de programação de aplicativos que permite que os programas acessem serviços de segurança.
Adicione as seguintes entradas ao arquivo
/var/lib/postgresql/data/pg_hba.conf
antes da entrada
host all all all scram-sha-256
.Execute o seguinte comando do Docker para adicionar
gss
ao contêiner:docker exec CONTAINER_NAME sed -i 's;^host all all all scram-sha-256$;hostgssenc all all 0.0.0.0/0 gss map=gssmap\n&;' /var/lib/postgresql/data/pg_hba.conf
Execute o seguinte comando do Docker para verificar se o arquivo
pg_hba.conf
está dentro do contêiner:docker exec CONTAINER_NAME cat /var/lib/postgresql/data/pg_hba.conf
Verifique se a seguinte entrada está no arquivo:
hostgssenc all all 0.0.0.0/0 gss map=gssmap
Para mais informações, consulte o arquivo pg_hba.conf (em inglês).
Copie o arquivo de guia de chave para o diretório de dados dentro da imagem do AlloyDB Omni.
docker cp PATH TO KEYTAB FILE CONTAINER_NAME:/var/lib/postgresql/data/alloydb.keytab docker exec CONTAINER_NAME chmod 600 /var/lib/postgresql/data/alloydb.keytab docker exec CONTAINER_NAME chown postgres:postgres /var/lib/postgresql/data/alloydb.keytab
O arquivo keytab é gerado pelo Kerberos para o servidor PostgreSQL. Para saber mais sobre autenticação, consulte Autenticação GSSAPI.
Adicione uma entrada para o arquivo keytab ao arquivo
/var/lib/postgresql/data/DATA_DIR/postgresql.conf
.Execute o seguinte comando do Docker para adicionar a entrada no contêiner:
docker exec CONTAINER_NAME sed -i '$akrb_server_keyfile='"'"'/var/lib/postgresql/data/alloydb.keytab'"'" /var/lib/postgresql/data/postgresql.conf
Execute o seguinte comando do Docker para verificar o arquivo
postgresql.conf
no contêiner:docker exec CONTAINER_NAME tail /var/lib/postgresql/data/postgresql.conf
Verifique se a seguinte entrada está no arquivo:
krb_server_keyfile=/var/lib/postgresql/data/alloydb.keytab
Para mais informações, consulte krb_server_keyfile.
Opcional: adicione entradas ao arquivo
/var/lib/postgresql/data/DATA_DIR/pg_ident.conf
.Ao usar um sistema de autenticação externa, como GSSAPI, o nome do usuário do sistema operacional que iniciou a conexão pode não ser o mesmo do usuário (papel) do banco de dados que você quer usar.
Nesse caso, especifique o mapeamento de usuário do sistema para usuário do PostgreSQL no arquivo
/var/lib/postgresql/data/DATA_DIR/pg_ident.conf
:docker exec -it CONTAINER_NAME bash $ echo -e " gssmap /^(.*)@EXAMPLE\.COM$ \1 gssmap /^(.*)@example\.com$ \1 " | column -t | tee -a /var/lib/postgresql/data/pg_ident.conf
Para implementar o mapeamento de nomes de usuário, especifique
map=gssmap
no campo de opções do arquivopg_hba.conf
.Para mais informações sobre a autenticação baseada em identificador, consulte Mapas de identificador.
Recarregue as configurações do PostgreSQL usando o seguinte comando:
docker exec -it CONTAINER_NAME psql -h localhost -U postgres psql (16.3) Type "help" for help. postgres=# select pg_reload_conf();
Testar a autenticação do Active Directory
Para verificar se a autenticação do Active Directory está funcionando, siga estas etapas:
- Faça login no Active Directory usando
kinit
. Execute o seguinte comando
psql
na máquina em que você costuma executarkinit
:root@4f6414ad02ef:/# kinit AD_USER_NAME Password for user1@YOUR.REALM: root@4f6414ad02ef:/# psql --h ALLOYDB_SERVER_HOST_NAME -U AD_USER_NAME psql (16.6 (Ubuntu 16.6-0ubuntu0.24.04.1), server 16.3) GSSAPI-encrypted connection Type "help" for help. user1=#
Desativar a autenticação do Active Directory
Para desativar a autenticação do Active Directory no AlloyDB Omni, siga estas etapas, que desativam o GSSAPI:
Remova as entradas no arquivo
pg_hba.conf
que apontam para o método de autenticaçãogss
:docker exec CONTAINER_NAME sed -i '/hostgssenc all all 0.0.0.0\/0 gss map=gssmap/d' /var/lib/postgresql/data/pg_hba.conf
Recarregue as configurações do PostgreSQL usando o seguinte comando:
docker exec -it CONTAINER_NAME psql -h localhost -U postgres psql (16.3) Type "help" for help. postgres=# select pg_reload_conf();
A seguir
- Integrar o suporte a usuários do Active Directory no Kubernetes.
- Resolver problemas do Active Directory no AlloyDB Omni.
- 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.