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.
Hinweis
Prüfen Sie vor der Einbindung von Active Directory, ob Sie die folgenden Anforderungen erfüllen:
- Achten Sie darauf, dass Active Directory eingerichtet ist.
- Rufen Sie den
REALMdes 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 Admin-Servers des Active Directory-Servers ab. Dieser Hostname wird in den Docker-Images gespeichert.
- Achten Sie darauf, dass Sie Zugriff auf den Active Directory-Server haben, damit Sie
eine
.keytab-Datei generieren können. - Wählen Sie einen Active Directory-Nutzer für Tests und Anmeldungen aus.
- Rufen Sie eine
.keytab-Datei vom vorhandenen Active Directory-Server ab.
` .keytab`-Datei vom vorhandenen Active Directory-Server abrufen
So rufen Sie eine Keytab-Datei vom Active Directory-Server ab: Folgen Sie diesen Schritten:
- Melden Sie sich als Administrator im PowerShell-Terminal des Active Directory-Servers an.
- Erstellen Sie mit dem folgenden Befehl
oder über die Active Directory-Benutzeroberfläche einen Nutzer namens
postgres. - Generieren Sie eine Keytab-Datei für den Dienstprinzipal, die diesem Active Directory Server zugeordnet ist.
- Kopieren Sie die Keytab-Datei auf Ihren Linux-Computer.
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
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.
Active Directory-Authentifizierung aktivieren
So aktivieren Sie die Active Directory-Authentifizierung in AlloyDB Omni. Dazu müssen Sie das Generic Security Service Application Program Interface (GSSAPI) konfigurieren. Das ist eine Anwendungsprogrammierschnittstelle, mit der Programme auf Sicherheitsdienste zugreifen können.
Fügen Sie der
/var/lib/postgresql/data/pg_hba.confDatei vor dem
host all all all scram-sha-256Eintrag die folgenden Einträge hinzu.Führen Sie den folgenden Docker-Befehl aus, um
gssim 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
Führen Sie den folgenden Docker-Befehl aus, um zu prüfen, ob sich die Datei
pg_hba.confim Container befindet:docker exec CONTAINER_NAME cat /var/lib/postgresql/data/pg_hba.conf
Prüfen Sie, ob die Datei den folgenden Eintrag enthält:
hostgssenc all all 0.0.0.0/0 gss map=gssmap
Weitere Informationen finden Sie in der Datei pg_hba.conf.
Kopieren Sie die Keytab-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.
Fügen Sie der
/var/lib/postgresql/data/DATA_DIR/postgresql.confDatei einen Eintrag für die Keytab-Datei hinzu.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
Führen Sie den folgenden Docker-Befehl aus, um die Datei
postgresql.confim Container zu prüfen:docker exec CONTAINER_NAME tail /var/lib/postgresql/data/postgresql.conf
Prüfen Sie, ob die Datei den folgenden Eintrag enthält:
krb_server_keyfile=/var/lib/postgresql/data/alloydb.keytab
Weitere Informationen finden Sie unter krb_server_keyfile.
Optional: Fügen Sie der Datei
/var/lib/postgresql/data/DATA_DIR/pg_ident.confEinträ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
/var/lib/postgresql/data/DATA_DIR/pg_ident.confDatei 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 im Feld „Optionen“ in der Datei
pg_hba.confmap=gssmapan.Weitere Informationen zur Identitätszuweisung finden Sie unter Identitätszuweisungen.
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:
- Melden Sie sich mit
kinitin Active Directory an. Führen Sie den folgenden
psql-Befehl auf dem Computer aus, auf dem Sie normalerweisekinitausfü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. Dadurch wird auch GSSAPI deaktiviert:
Entfernen Sie in der Datei
pg_hba.confEinträge, die auf die Authentifizierungsmethodegssverweisen: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
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
- Unterstützung für Active Directory-Gruppen in AlloyDB Omni einbinden.
- Fehlerbehebung bei Active Directory in AlloyDB Omni