Integra Active Directory con AlloyDB Omni

Selecciona una versión de la documentación:

En esta página, se describe cómo integrar AlloyDB Omni con tu implementación existente de Active Directory para que puedas usar tus nombres de usuario y contraseñas existentes para acceder a tu base de datos de AlloyDB Omni. La integración de Active Directory proporciona Kerberos como el mecanismo de autenticación predeterminado para comunicarse con AlloyDB Omni. Para obtener más información, consulta Descripción general de Active Directory.

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

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.

  1. Agrega las siguientes entradas al archivo /var/lib/postgresql/data/pg_hba.conf, antes de la entrada
    host all all all scram-sha-256.

    1. 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
      
    2. 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
      
    3. 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.

  2. 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.

  3. Agrega una entrada para el archivo keytab al archivo /var/lib/postgresql/data/DATA_DIR/postgresql.conf.

    1. 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
      
    2. 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
      
    3. 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.

  4. 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 archivo pg_hba.conf.

    Para obtener más información sobre la autenticación basada en identificadores, consulta Ident Maps.

  5. 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:

  1. Accede a Active Directory con kinit.
  2. Ejecuta el siguiente comando de psql desde la máquina en la que sueles ejecutar kinit:

    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:

  1. Quita las entradas del archivo pg_hba.conf que apuntan al método de autenticación gss:

    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
    
  2. 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?