Unterstützung von Active Directory-Nutzern in AlloyDB Omni einbinden

Wählen Sie eine Dokumentationsversion aus:

Auf dieser Seite wird beschrieben, wie Sie AlloyDB Omni in Ihre vorhandene Active Directory-Implementierung einbinden, damit Sie mit Ihren vorhandenen Nutzernamen und Passwörtern auf Ihre AlloyDB Omni-Datenbank zugreifen können. Durch die Active Directory-Integration wird Kerberos als Standardauthentifizierungsmechanismus für die Kommunikation mit AlloyDB Omni bereitgestellt. Weitere Informationen finden Sie unter Active Directory – Übersicht.

Die Active Directory-Konfiguration in AlloyDB Omni ist optional und standardmäßig deaktiviert. Dieser Konfigurationsmechanismus kann nur in Umgebungen verwendet werden, in denen Active Directory Server für die Authentifizierung verwendet wird.

Hinweise

Bevor Sie Active Directory einbinden, müssen Sie die folgenden Anforderungen erfüllen:

  • Prüfen Sie, ob Active Directory eingerichtet ist.
  • Rufen Sie die REALM des Active Directory-Servers ab.
  • Rufen Sie den Hostnamen des Key Distribution Center (KDC) des Active Directory-Servers ab. Der Hostname wird in den Docker-Images gespeichert.
  • Rufen Sie den Hostnamen des Verwaltungsservers des Active Directory-Servers ab. Dieser Hostname wird in den Docker-Images gespeichert.
  • Prüfen Sie, ob Sie Zugriff auf den Active Directory-Server haben, damit Sie eine .keytab-Datei generieren können.
  • Wählen Sie einen Active Directory-Nutzer aus, der für Tests und die Anmeldung verwendet werden soll.
  • Rufen Sie eine .keytab-Datei vom vorhandenen Active Directory-Server ab.

.keytab-Datei vom vorhandenen Active Directory-Server abrufen

So erhalten Sie einen Keytab vom Active Directory-Server:

  1. Melden Sie sich als Administrator im PowerShell-Terminal des Active Directory-Servers an.
  2. Erstellen Sie einen Nutzer mit dem Namen postgres, indem Sie den folgenden Befehl ausführen oder die Active Directory-Benutzeroberfläche verwenden.
  3.   New-ADUser -Name "postgres" `
                   -SamAccountName "postgres" `
                   -UserPrincipalName "postgres@REALM" `
                   -Description "Service Account for AlloyDB Omni PostgreSQL Kerberos Authentication" `
                   -AccountPassword (Read-Host -AsSecureString "Set a strong password for the postgres service account") `
                   -Enabled $true `
                   -PasswordNeverExpires $true
      
  4. Generieren Sie eine Keytab-Datei für den Dienstprinzipal, die diesem Active Directory-Server zugeordnet ist.
  5.   ktpass /princ postgres/ALLOYDB_HOST_NAME@REALM /Pass ChangeMe123 /mapuser postgres /crypto ALL /ptype KRB5_NT_PRINCIPAL /mapOp set /out C:\Users\Public\postgres.keytab
      

    Dabei ist <HOST> der vollständig qualifizierte Domainname des Servers, auf dem Sie AlloyDB Omni bereitstellen möchten, z. B. alloydb-server.ad.example.com. Sie müssen denselben Host in der krb5.conf-Datei in Ihrer Domain-Realm-Zuordnung konfigurieren.

  6. Kopieren Sie die keytab-Datei auf Ihren Linux-Computer.

Active Directory-Authentifizierung aktivieren

So aktivieren Sie die Active Directory-Authentifizierung in AlloyDB Omni: Folgen Sie dieser Anleitung, in der auch die Konfiguration der Generic Security Service Application Program Interface (GSSAPI) beschrieben wird. Die GSSAPI ist eine Programmierschnittstelle, mit der Programme auf Sicherheitsdienste zugreifen können.

  1. Fügen Sie der Datei /var/lib/postgresql/data/pg_hba.conf die folgenden Einträge vor dem Eintrag
    host all all all scram-sha-256 hinzu.

    1. Führen Sie den folgenden Docker-Befehl aus, um gss im Container hinzuzufügen:

      docker exec CONTAINER_NAME sed -i 's;^host all all all scram-sha-256$;hostgssenc all all 0.0.0.0/0 gss map=gssmap\n&;' /var/lib/postgresql/data/pg_hba.conf
      
    2. Führen Sie den folgenden Docker-Befehl aus, um zu prüfen, ob sich die Datei pg_hba.conf im Container befindet:

      docker exec CONTAINER_NAME cat /var/lib/postgresql/data/pg_hba.conf
      
    3. Prüfen Sie, ob der folgende Eintrag in der Datei vorhanden ist:

      hostgssenc all all 0.0.0.0/0 gss map=gssmap
      

      Weitere Informationen finden Sie unter Die Datei pg_hba.conf.

  2. Kopieren Sie die Schlüssel-Tab-Datei in das Datenverzeichnis im AlloyDB Omni-Image.

    docker cp PATH TO KEYTAB FILE CONTAINER_NAME:/var/lib/postgresql/data/alloydb.keytab
    docker exec CONTAINER_NAME chmod 600 /var/lib/postgresql/data/alloydb.keytab
    docker exec CONTAINER_NAME chown postgres:postgres /var/lib/postgresql/data/alloydb.keytab
    

    Die Keytab-Datei wird von Kerberos für den PostgreSQL-Server generiert. Weitere Informationen zur Authentifizierung finden Sie unter GSSAPI-Authentifizierung.

  3. Fügen Sie der Datei /var/lib/postgresql/data/DATA_DIR/postgresql.conf einen Eintrag für die Keytab-Datei hinzu.

    1. Führen Sie den folgenden Docker-Befehl aus, um den Eintrag im Container hinzuzufügen:

      docker exec CONTAINER_NAME sed -i '$akrb_server_keyfile='"'"'/var/lib/postgresql/data/alloydb.keytab'"'" /var/lib/postgresql/data/postgresql.conf
      
    2. Führen Sie den folgenden Docker-Befehl aus, um die Datei postgresql.conf im Container zu prüfen:

      docker exec CONTAINER_NAME tail  /var/lib/postgresql/data/postgresql.conf
      
    3. Achten Sie darauf, dass der folgende Eintrag in der Datei enthalten ist:

      krb_server_keyfile=/var/lib/postgresql/data/alloydb.keytab
      

      Weitere Informationen finden Sie unter krb_server_keyfile.

  4. Optional: Fügen Sie der Datei /var/lib/postgresql/data/DATA_DIR/pg_ident.conf Einträge hinzu.

    Wenn Sie ein externes Authentifizierungssystem wie GSSAPI verwenden, stimmt der Name des Betriebssystemnutzers, der die Verbindung initiiert hat, möglicherweise nicht mit dem Datenbanknutzer (der Rolle) überein, den Sie verwenden möchten.

    Geben Sie in diesem Fall die Zuordnung von Systemnutzer zu PostgreSQL-Nutzer in der Datei /var/lib/postgresql/data/DATA_DIR/pg_ident.conf an:

    docker exec -it CONTAINER_NAME bash
    $ echo -e "
    gssmap              /^(.*)@EXAMPLE\.COM$     \1
    gssmap              /^(.*)@example\.com$     \1
    " | column -t | tee -a /var/lib/postgresql/data/pg_ident.conf
    

    Wenn Sie die Zuordnung von Nutzernamen implementieren möchten, geben Sie map=gssmap im Optionsfeld in der Datei pg_hba.conf an.

    Weitere Informationen zur identitätsbasierten Authentifizierung finden Sie unter Identitätskarten.

  5. Laden Sie die PostgreSQL-Konfigurationen mit dem folgenden Befehl neu:

    docker exec -it CONTAINER_NAME psql -h localhost -U postgres
    psql (16.3)
    Type "help" for help.
    postgres=# select pg_reload_conf();
    

Active Directory-Authentifizierung testen

So prüfen Sie, ob die Active Directory-Authentifizierung funktioniert:

  1. Melden Sie sich mit kinit in Active Directory an.
  2. Führen Sie den folgenden psql-Befehl auf dem Computer aus, auf dem Sie normalerweise kinit ausführen:

    root@4f6414ad02ef:/# kinit AD_USER_NAME
    Password for user1@YOUR.REALM:
    
    root@4f6414ad02ef:/# psql --h ALLOYDB_SERVER_HOST_NAME -U AD_USER_NAME
    psql (16.6 (Ubuntu 16.6-0ubuntu0.24.04.1), server 16.3)
    GSSAPI-encrypted connection
    Type "help" for help.
    
    user1=#
    

Active Directory-Authentifizierung deaktivieren

So deaktivieren Sie die Active Directory-Authentifizierung in AlloyDB Omni:

  1. Entfernen Sie Einträge in der Datei pg_hba.conf, die auf die Authentifizierungsmethode gss verweisen:

    docker exec CONTAINER_NAME sed -i '/hostgssenc all all 0.0.0.0\/0 gss map=gssmap/d' /var/lib/postgresql/data/pg_hba.conf
    
  2. Laden Sie die PostgreSQL-Konfigurationen mit dem folgenden Befehl neu:

    docker exec -it CONTAINER_NAME psql -h localhost -U postgres
    psql (16.3)
    Type "help" for help.
    postgres=# select pg_reload_conf();
    

Nächste Schritte