A configuração do Active Directory no AlloyDB Omni é opcional e fica desativada por padrão. Somente ambientes que usam o Active Directory Server 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:
- Confira se o Active Directory está configurado.
- Consiga o
REALMdo servidor do Active Directory. - Consiga o nome do host do Key Distribution Center (KDC) do servidor do Active Directory O nome do host é armazenado nas imagens Docker.
- Obtenha o nome do host do servidor do diretório do Active Directory. Esse nome do host é armazenado nas imagens Docker.
- Verifique se você tem acesso ao servidor do Active Directory para que você
possa gerar um arquivo
.keytab. - Escolha um usuário do Active Directory para usar nos testes e no login.
- Consiga um arquivo
.keytabdo servidor do Active Directory.
Consiga um arquivo .keytab do servidor do Active Directory
Para conseguir um arquivo keytab do servidor do diretório ativo, siga estas etapas:
- Faça login como administrador no terminal do PowerShell do servidor do diretório do Active Directory.
- Crie um usuário chamado
postgresexecutando o comando a seguir, ou usando a interface do usuário do Active Directory. - Gere um keytab de entidade de serviço que seja mapeado para esse 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. É necessário configurar o mesmo host em
o krb5.conf arquivo no mapeamento do 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 do aplicativo que permite que os programas acessem serviços de segurança.
Adicione as entradas a seguir ao arquivo
/var/lib/postgresql/data/pg_hba.conf, antes da
host all all all scram-sha-256entrada.Execute o comando do Docker a seguir para adicionar
gssdentro do 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 comando do Docker a seguir para verificar se o arquivo
pg_hba.confestá dentro do contêiner:docker exec CONTAINER_NAME cat /var/lib/postgresql/data/pg_hba.conf
Verifique se a entrada a seguir está no arquivo:
hostgssenc all all 0.0.0.0/0 gss map=gssmap
Para mais informações, consulte O arquivo pg_hba.conf.
Copie o arquivo de guia de chaves 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
/var/lib/postgresql/data/DATA_DIR/postgresql.confarquivo.Execute o comando do Docker a seguir para adicionar a entrada dentro do 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 comando do Docker a seguir para verificar o arquivo
postgresql.confdentro do contêiner:docker exec CONTAINER_NAME tail /var/lib/postgresql/data/postgresql.conf
Verifique se a entrada a seguir 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.Quando você usa um sistema de autenticação externo, como o GSSAPI, o nome do usuário do sistema operacional que iniciou a conexão pode não ser o mesmo do usuário do banco de dados (papel) 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 nome de usuário, especifique
map=gssmapno campo "Options" do arquivopg_hba.conf.Para mais informações sobre a autenticação baseada em ident, consulte Mapas de ident.
Recarregue as configurações do PostgreSQL usando o comando a seguir:
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 comando
psqla seguir 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.confque 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 comando a seguir:
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 grupos do Active Directory com o AlloyDB Omni.
- Resolver problemas do Active Directory no AlloyDB Omni.