Soluciona problemas relacionados con la integración de Active Directory en AlloyDB Omni

Selecciona una versión de la documentación:

En este documento, se describen los errores que puedes encontrar cuando integras Active Directory en AlloyDB Omni. También se proporcionan ejemplos de errores y correcciones recomendadas.

Falla la integración de Active Directory con AlloyDB Omni

Cuando Active Directory no funciona, sigue estos pasos para resolver el problema:

  1. Agrega el objeto binario psql a tu variable de entorno PATH. Si psql no está en tu PATH predeterminado, puedes agregar el directorio que contiene el ejecutable psql al PATH de tu sesión. Esto te permite usar psql directamente sin especificar la ruta completa en los comandos posteriores.

    export PATH=$PATH:/usr/lib/postgresql/18/bin
    

    Como alternativa, puedes reemplazar psql por /usr/lib/postgresql/18/bin psql en cada uno de los siguientes comandos.

  2. Verifica el archivo keytab. Asegúrate de poder conectarte al servidor de Active Directory con el keytab que obtuviste:

    kinit -kt PATH_TO_KEYTAB_FILE postgres/DBCLUSTER_HOST@REALM
    
  3. Verifica el host.

    Asegúrate de que el host que usaste cuando generaste el archivo keytab sea el mismo host en el comando psql, como se muestra en el siguiente ejemplo:

    KTPass /princ postgres/DBCLUSTER_HOST@REALM /Pass PASSWORD /mapuser postgres /crypto ALL /ptype KRB5_NT_Principal /out OUTPUT_PATH
    
    psql -h DBCLUSTER_HOST -d DB_NAME -U USERNAME@REALM
    

    Asegúrate de que DBCLUSTER_HOST sea el mismo en ambos comandos.

  4. Verifica el archivo krb5.conf.

    Verifica el contenido del archivo krb5.conf en el cliente. Asegúrate de que el contenido del archivo krb5.conf sea correcto para tu configuración.

    cat /etc/krb5.conf
    

    Este es el resultado esperado:

    [libdefaults]
      default_realm = REALM
    [realms]
      REALM = {
          kdc = KDC_HOST
          admin_server = ADMIN_SERVER
      }
    [domain_realm]
      HOST_DOMAIN_1 = REALM
      HOST_DOMAIN_2 = REALM
    
  5. Verifica las entradas y el estado de HBA.

    1. Ejecuta los siguientes comandos y envía los registros al equipo de producto de AlloyDB Omni.

      psql -h DBCLUSTER_HOST -U postgres -d postgres
      

      psql te solicita la contraseña del usuario postgres:

      Password for user postgres:
      

      psql muestra el siguiente resultado:

      psql (18.1)
      SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off, ALPN: none)
      Type "help" for help.
      
    2. Ejecuta el siguiente comando en el mensaje de psql:

      postgres=# table pg_hba_file_rules ;
      

      Se muestra un resultado similar al siguiente ejemplo.

      rule_number |            file_name             | line_number |  type   | database |     user_name      |  address  |                 netmask                 | auth_method |         options          |                        error
      -------------+--------------------------------------+-------------+---------+----------+--------------------+-----------+-----------------------------------------+-------------+--------------------------+-----------------------------------------------------
            1 | /var/lib/postgresql/data/pg_hba.conf |           1 | host    | {all}    | {alloydbadmin}     | 127.0.0.1 | 255.255.255.255                         | trust       |                          |
              | /var/lib/postgresql/data/pg_hba.conf |           2 | hostssl | {all}    | {alloydbadmin}     | ::1       | ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff | trust       |                          | hostssl record cannot match because SSL is disabled
              | /var/lib/postgresql/data/pg_hba.conf |           3 | hostssl | {all}    | {alloydbpgbouncer} | 0.0.0.0   | 0.0.0.0                                 | cert        | {clientcert=verify-full} | hostssl record cannot match because SSL is disabled
              | /var/lib/postgresql/data/pg_hba.conf |           4 | hostssl | {all}    | {alloydbpgbouncer} | ::1       | ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff | cert        | {clientcert=verify-full} | hostssl record cannot match because SSL is disabled
              | /var/lib/postgresql/data/pg_hba.conf |           5 | hostssl | {all}    | {alloydbadmin}     | all       |                                         | reject      |                          | hostssl record cannot match because SSL is disabled
              | /var/lib/postgresql/data/pg_hba.conf |           6 |         |          |                    |           |                                         |             |                          | invalid CIDR mask in address "0.0.0.0/1000"
            2 | /var/lib/postgresql/data/pg_hba.conf |           7 | local   | {all}    | {all}              |           |                                         | trust       |                          |
      
  6. Revisa los mensajes de error en la columna error, que pueden ayudarte a identificar problemas de configuración.

  7. Imprime los registros krb5 de nivel de depuración.

    export KRB5_TRACE=/dev/stderr
    kinit AD_USER@REALM
    psql -h DBCLUSTER_HOST -d DB_NAME -U USERNAME@REALM
    

psql: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: FATAL: role "user2" does not exist

Descripción

Este error se produce cuando un usuario del sistema que intenta conectarse no tiene un usuario de PostgreSQL creado o no tiene un rol asignado.

Corrección recomendada

Crea un rol en PostgreSQL con el nombre de usuario requerido o agrega una entrada para este usuario al archivo pg_ident.conf.

psql (16.3)
Type "help" for help.

postgres=# CREATE ROLE user2 WITH LOGIN;
CREATE ROLE

No se puede reiniciar el servidor con el error: "could not load /var/lib/postgresql/data/pg_hba.conf"

Descripción

No se pudo reiniciar el servidor porque pg_hba.conf contiene entradas no válidas.

Corrección recomendada

Verifica el archivo pg_hba.conf para detectar entradas no válidas.

FATAL: LDAP group synchronization failed

Descripción

La sincronización de LDAP falla cuando el usuario intenta acceder.

Corrección recomendada

  1. Accede como el usuario postgres y ejecuta lo siguiente:

    CREATE EXTENSION google_pg_auth;
    
  2. Consulta el archivo postgresql.log para obtener información sobre por qué falló el acceso a LDAP.

    cat /obs/diagnostic/postgresql.log | grep google_pg_auth
    

¿Qué sigue?