Solucionar problemas de integración de Active Directory en AlloyDB Omni

Selecciona una versión de la documentación:

En este documento se describen los errores que pueden producirse al integrar 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

Si Active Directory no funciona, sigue estos pasos para solucionar el problema:

  1. Verifica el archivo keytab. Asegúrate de que puedes conectarte al servidor de Active Directory con el archivo keytab que has obtenido:

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

    Asegúrate de que el host que has usado al generar el archivo keytab sea el mismo host que se indica 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
    

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

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

      psql -h DBCLUSTER_HOST -U postgres -d postgres
      

      psql te pedirá la contraseña del usuario postgres:

      Password for user postgres:
      

      psql devuelve 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 símbolo del sistema 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. Consulta los mensajes de error de la columna error, que pueden ayudarte a identificar problemas de configuración.

  6. Imprime los registros del 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 necesario o añade 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 y se produce el error "could not load /var/lib/postgresql/data/pg_hba.conf"

Descripción

No se ha podido reiniciar el servidor porque el archivo pg_hba.conf contiene entradas no válidas.

Corrección recomendada

Comprueba si hay entradas no válidas en el archivo pg_hba.conf.

FATAL: No se ha podido sincronizar el grupo de LDAP

Descripción

La sincronización LDAP falla cuando el usuario intenta iniciar sesión.

Corrección recomendada

  1. Inicia sesión como usuario postgres y ejecuta lo siguiente:

    CREATE EXTENSION google_pg_auth;
    
  2. Consulta el archivo postgresql.log para obtener información sobre por qué ha fallado el inicio de sesión de LDAP.

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

Siguientes pasos