La configuración de Active Directory en AlloyDB Omni es opcional y está inhabilitada de forma predeterminada. Solo los entornos que usan el servidor de Active Directory para la autenticación pueden usar este mecanismo de configuración.
Antes de comenzar
Antes de integrar Active Directory, asegúrate de cumplir con los siguientes requisitos:
- Asegúrate de que Active Directory esté configurado.
- Obtén el
REALM
del servidor de Active Directory. - Obtén el nombre de host del centro de distribución de claves (KDC) del servidor de Active Directory. El nombre de host se almacena en las imágenes de Docker.
- Obtén el nombre de host del servidor de administración del servidor de Active Directory. Este nombre de host se almacena en las imágenes de Docker.
- Asegúrate de tener acceso al servidor de Active Directory para poder generar un archivo
.keytab
. - Elige un usuario de Active Directory para usarlo en las pruebas y el acceso.
- Obtén un archivo
.keytab
del servidor de Active Directory existente.
Obtén un archivo .keytab del servidor de Active Directory existente
Para obtener un archivo keytab del servidor de Active Directory, sigue estos pasos:
- Accede como administrador a la terminal de PowerShell del servidor de Active Directory.
- Ejecuta el siguiente comando o usa la interfaz de usuario de Active Directory para crear un usuario llamado
postgres
. - Genera un archivo keytab principal del servicio que se asigne a este servidor de Active Directory.
- Copia el archivo keytab en tu 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
Aquí, <HOST>
es el nombre de dominio completamente calificado del servidor en el que planeas implementar AlloyDB Omni, por ejemplo, alloydb-server.ad.example.com
. Debes configurar el mismo host en el archivo krb5.conf
de la asignación del dominio.
Habilita la autenticación de Active Directory
Para habilitar la autenticación de Active Directory en AlloyDB Omni, sigue estos pasos, que incluyen la configuración de la interfaz de programa de aplicación del servicio de seguridad genérico (GSSAPI), que es una interfaz de programación de aplicaciones que permite que los programas accedan a los servicios de seguridad.
Agrega las siguientes entradas al archivo
/var/lib/postgresql/data/pg_hba.conf
, antes de la entrada
host all all all scram-sha-256
.Ejecuta el siguiente comando de Docker para agregar
gss
dentro del contenedor: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
Ejecuta el siguiente comando de Docker para verificar que el archivo
pg_hba.conf
esté dentro del contenedor:docker exec CONTAINER_NAME cat /var/lib/postgresql/data/pg_hba.conf
Verifica que la siguiente entrada esté en el archivo:
hostgssenc all all 0.0.0.0/0 gss map=gssmap
Para obtener más información, consulta El archivo pg_hba.conf.
Copia el archivo de la pestaña de claves en el directorio de datos dentro de la imagen de 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
Kerberos genera el archivo keytab para el servidor de PostgreSQL. Para obtener más información sobre la autenticación, consulta Autenticación con GSSAPI.
Agrega una entrada para el archivo keytab al archivo
/var/lib/postgresql/data/DATA_DIR/postgresql.conf
.Ejecuta el siguiente comando de Docker para agregar la entrada dentro del contenedor:
docker exec CONTAINER_NAME sed -i '$akrb_server_keyfile='"'"'/var/lib/postgresql/data/alloydb.keytab'"'" /var/lib/postgresql/data/postgresql.conf
Ejecuta el siguiente comando de Docker para verificar el archivo
postgresql.conf
dentro del contenedor:docker exec CONTAINER_NAME tail /var/lib/postgresql/data/postgresql.conf
Asegúrate de que la siguiente entrada esté en el archivo:
krb_server_keyfile=/var/lib/postgresql/data/alloydb.keytab
Para obtener más información, consulta krb_server_keyfile.
Opcional: Agrega entradas al archivo
/var/lib/postgresql/data/DATA_DIR/pg_ident.conf
.Cuando usas un sistema de autenticación externo, como GSSAPI, es posible que el nombre del usuario del sistema operativo que inició la conexión no sea el mismo que el del usuario de la base de datos (rol) que deseas usar.
En este caso, especifica la asignación del usuario del sistema al usuario de PostgreSQL en el archivo
/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 el mapeo de nombres de usuario, especifica
map=gssmap
en el campo de opciones del archivopg_hba.conf
.Para obtener más información sobre la autenticación basada en identificadores, consulta Ident Maps.
Vuelve a cargar la configuración de PostgreSQL con el siguiente comando:
docker exec -it CONTAINER_NAME psql -h localhost -U postgres psql (16.3) Type "help" for help. postgres=# select pg_reload_conf();
Prueba la autenticación de Active Directory
Para verificar que la autenticación de Active Directory funcione, sigue estos pasos:
- Accede a Active Directory con
kinit
. Ejecuta el siguiente comando de
psql
desde la máquina en la que sueles ejecutarkinit
: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=#
Inhabilita la autenticación de Active Directory
Para inhabilitar la autenticación de Active Directory en AlloyDB Omni, sigue estos pasos, que inhabilitan la GSSAPI:
Quita las entradas del archivo
pg_hba.conf
que apuntan al método de autenticacióngss
: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
Vuelve a cargar la configuración de PostgreSQL con el siguiente comando:
docker exec -it CONTAINER_NAME psql -h localhost -U postgres psql (16.3) Type "help" for help. postgres=# select pg_reload_conf();
¿Qué sigue?
- Integrar la compatibilidad con grupos de Active Directory en AlloyDB Omni
- Soluciona problemas de Active Directory en AlloyDB Omni.