Resolver problemas de integração do Active Directory no AlloyDB Omni

Neste documento, descrevemos os erros que podem ocorrer ao integrar o Active Directory ao AlloyDB Omni. Exemplos de erros e correções recomendadas também são apresentados.

Falha na integração do Active Directory ao AlloyDB Omni

Quando o Active Directory não estiver funcionando, siga estas etapas para resolver o problema:

  1. Verifique o arquivo keytab. Verifique se é possível se conectar ao servidor do Active Directory usando o keytab que você recebeu:

    kinit -kt PATH_TO_KEYTAB_FILE postgres/DBCLUSTER_HOST@REALM
    
  2. Verifique o host.

    Verifique se o host usado ao gerar o arquivo keytab é o mesmo host no comando psql, conforme mostrado no seguinte exemplo:

    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
    

    Verifique se DBCLUSTER_HOST é o mesmo nos dois comandos.

  3. Verifique o arquivo krb5.conf.

    Verifique o conteúdo do arquivo krb5.conf no cliente. Verifique se o conteúdo do arquivo krb5.conf está correto para sua configuração.

    cat /etc/krb5.conf
    

    Esta é a resposta esperada:

    [libdefaults]
      default_realm = REALM
    [realms]
      REALM = {
          kdc = KDC_HOST
          admin_server = ADMIN_SERVER
      }
    [domain_realm]
      HOST_DOMAIN_1 = REALM
      HOST_DOMAIN_2 = REALM
    
  4. Verifique as entradas e o status da HBA.

    1. Execute os comandos a seguir e envie os registros para a equipe de produtos do AlloyDB Omni.

      psql -h DBCLUSTER_HOST -U postgres -d postgres
      

      O psql pede a senha do usuário do postgres:

      Password for user postgres:
      

      psql retorna a seguinte resposta:

      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. Execute o seguinte comando no prompt do psql:

      postgres=# table pg_hba_file_rules ;
      

      Uma resposta semelhante ao exemplo a seguir será retornada.

      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. Analise as mensagens de erro na coluna error, que podem ajudar a identificar problemas de configuração.

  6. Imprima os registros krb5 de nível de depuração.

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

psql: erro: falha na conexão com o servidor no soquete "/tmp/.s.PGSQL.5432": FATAL: o papel "user2" não existe

Descrição

Esse erro ocorre quando um usuário do sistema que está tentando se conectar não tem um usuário do PostgreSQL criado ou não tem um papel mapeado.

Correção recomendada

Crie um papel no PostgreSQL com o nome de usuário necessário ou adicione uma entrada para esse usuário ao arquivo pg_ident.conf.

psql (16.3)
Type "help" for help.

postgres=# CREATE ROLE user2 WITH LOGIN;
CREATE ROLE

Falha na reinicialização do servidor com o erro: "não foi possível carregar /var/lib/postgresql/data/pg_hba.conf"

Descrição

A reinicialização do servidor falhou porque o pg_hba.conf contém entradas inválidas.

Correção recomendada

Verifique se há entradas inválidas no arquivo pg_hba.conf.

FATAL: falha na sincronização do grupo LDAP

Descrição

A sincronização do LDAP falha quando o usuário tenta fazer login.

Correção recomendada

  1. Faça login como o usuário postgres e execute o seguinte:

    CREATE EXTENSION google_pg_auth;
    
  2. Verifique o arquivo postgresql.log em busca de informações sobre o motivo da falha do login do LDAP.

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

A seguir