Probleme mit der Active Directory-Integration in AlloyDB Omni beheben

Wählen Sie eine Dokumentationsversion aus:

In diesem Dokument werden Fehler beschrieben, die bei der Integration von Active Directory in AlloyDB Omni auftreten können. Außerdem werden Beispiele für Fehler und empfohlene Korrekturen bereitgestellt.

Integration von Active Directory in AlloyDB Omni schlägt fehl

Wenn Active Directory nicht funktioniert, gehen Sie so vor, um das Problem zu beheben:

  1. Überprüfen Sie die Keytab-Datei. Prüfen Sie, ob Sie mit dem erhaltenen Keytab eine Verbindung zum Active Directory-Server herstellen können:

    kinit -kt PATH_TO_KEYTAB_FILE postgres/DBCLUSTER_HOST@REALM
    
  2. Host überprüfen

    Achten Sie darauf, dass der Host, den Sie beim Generieren der Keytab-Datei verwendet haben, mit dem Host im psql-Befehl übereinstimmt, wie im folgenden Beispiel gezeigt:

    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
    

    Achten Sie darauf, dass DBCLUSTER_HOST in beiden Befehlen identisch ist.

  3. Prüfen Sie die Datei krb5.conf.

    Prüfen Sie den Inhalt der Datei krb5.conf auf dem Client. Prüfen Sie, ob der Inhalt der Datei krb5.conf für Ihre Konfiguration korrekt ist.

    cat /etc/krb5.conf
    

    Die erwartete Ausgabe ist:

    [libdefaults]
      default_realm = REALM
    [realms]
      REALM = {
          kdc = KDC_HOST
          admin_server = ADMIN_SERVER
      }
    [domain_realm]
      HOST_DOMAIN_1 = REALM
      HOST_DOMAIN_2 = REALM
    
  4. Prüfen Sie die HBA-Einträge und den Status.

    1. Führen Sie die folgenden Befehle aus und senden Sie die Logs an das AlloyDB Omni-Produktteam.

      psql -h DBCLUSTER_HOST -U postgres -d postgres
      

      psql fordert Sie auf, das Passwort des postgres-Nutzers einzugeben:

      Password for user postgres:
      

      psql gibt die folgende Ausgabe zurück:

      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. Führen Sie den folgenden Befehl in der Eingabeaufforderung psql aus:

      postgres=# table pg_hba_file_rules ;
      

      Es wird eine Ausgabe zurückgegeben, die etwa so aussieht:

      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. Prüfen Sie die Fehlermeldungen in der Spalte error. Sie können Ihnen helfen, Konfigurationsprobleme zu erkennen.

  6. Geben Sie die Logs auf der Debug-Ebene krb5 aus.

    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

Beschreibung

Dieser Fehler tritt auf, wenn für einen Systemnutzer, der versucht, eine Verbindung herzustellen, kein PostgreSQL-Nutzer erstellt wurde oder keine Rolle zugeordnet ist.

Empfohlene Korrektur

Erstellen Sie in PostgreSQL eine Rolle mit dem erforderlichen Nutzernamen oder fügen Sie der Datei pg_ident.conf einen Eintrag für diesen Nutzer hinzu.

psql (16.3)
Type "help" for help.

postgres=# CREATE ROLE user2 WITH LOGIN;
CREATE ROLE

Der Serverneustart schlägt mit dem Fehler „could not load /var/lib/postgresql/data/pg_hba.conf“ fehl.

Beschreibung

Der Serverneustart ist fehlgeschlagen, da pg_hba.conf ungültige Einträge enthält.

Empfohlene Korrektur

Prüfen Sie die Datei pg_hba.conf auf ungültige Einträge.

FATAL: LDAP-Gruppensynchronisierung fehlgeschlagen

Beschreibung

Die LDAP-Synchronisierung schlägt fehl, wenn sich der Nutzer anmeldet.

Empfohlene Korrektur

  1. Melden Sie sich als Nutzer postgres an und führen Sie Folgendes aus:

    CREATE EXTENSION google_pg_auth;
    
  2. In der Datei postgresql.log finden Sie Informationen dazu, warum die LDAP-Anmeldung fehlgeschlagen ist.

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

Nächste Schritte