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. Verifica el archivo keytab. Asegúrate de que puedas conectarte al servidor de Active Directory con el archivo keytab que obtuviste:

    kinit -kt PATH_TO_KEYTAB_FILE postgres/DBCLUSTER_HOST@REALM
    
  2. 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.

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

    El siguiente 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
    
  4. Verifica las entradas y el estado del HBA.

    1. Ejecuta los siguientes comandos y envía los registros al equipo de productos 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 (17.5 (Ubuntu 17.5-0ubuntu0.25.04.1), server 16.3)
      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 devuelve 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       |                          |
      
  5. Revisa los mensajes de error en la columna error, que pueden ayudarte a identificar problemas de configuración.

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

    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

El reinicio del servidor falla 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 si hay entradas no válidas en el archivo pg_hba.conf.

FATAL: No se pudo sincronizar el grupo de LDAP

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. Revisa el archivo postgresql.log para obtener información sobre el motivo por el que falló el acceso con LDAP.

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

¿Qué sigue?