Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Verwenden von AD-Sicherheitsgruppen für die Aurora-PostgreSQL-Zugriffskontrolle
Ab den Aurora-PostgreSQL-Versionen 14.10 und 15.5 kann die Aurora-PostgreSQL-Zugriffskontrolle über Sicherheitsgruppen von AWS Directory Service für Microsoft Active Directory (AD) erfolgen. Frühere Versionen von Aurora PostgreSQL unterstützen die Kerberos-basierte Authentifizierung mittels AD nur für einzelne Benutzer. Jeder AD-Benutzer musste explizit für den DB-Cluster bereitgestellt werden, um Zugriff zu erhalten.
Anstatt jeden AD-Benutzer je nach Geschäftsanforderungen explizit für den DB-Cluster bereitzustellen, können Sie AD-Sicherheitsgruppen wie unten beschrieben nutzen:
-
AD-Benutzer sind Mitglieder verschiedener AD-Sicherheitsgruppen in einem Active Directory. Diese werden nicht vom DB-Clusteradministrator vorgegeben, sondern basieren auf Geschäftsanforderungen und werden von einem AD-Administrator verwaltet.
-
DB-Cluster-Administratoren erstellen DB-Rollen in DB-Instances auf der Grundlage von Geschäftsanforderungen. Diese DB-Rollen können unterschiedliche Berechtigungen haben.
-
DB-Cluster-Administratoren konfigurieren eine Zuordnung von AD-Sicherheitsgruppen zu DB-Rollen auf DB-Cluster-Basis.
-
DB-Benutzer können mit ihren AD-Anmeldeinformationen auf DB-Cluster zugreifen. Der Zugriff richtet sich nach der Mitgliedschaft in einer AD-Sicherheitsgruppe. AD-Benutzer erhalten oder verlieren automatisch Zugriff auf der Grundlage ihrer AD-Gruppenmitgliedschaft.
Voraussetzungen
Vor dem Einrichten der Erweiterung für AD-Sicherheitsgruppen muss Folgendes durchgeführt worden sein:
-
Einrichten einer Kerberos-Authentifizierung für PostgreSQL-DB-Cluster. Weitere Informationen finden Sie unter Einrichtung der Kerberos-Authentifizierung für PostgreSQL-DB-Cluster.
Anmerkung
Überspringen Sie für AD-Sicherheitsgruppen Schritt 7: Erstellen von PostgreSQL-Benutzern für Kerberos-Prinzipale in diesem Einrichtungsverfahren.
Wichtig
Wenn Sie AD-Sicherheitsgruppen in einem Aurora-PostgreSQL-Cluster aktivieren, für den die Kerberos-Authentifizierung bereits aktiviert ist, können Authentifizierungsprobleme auftreten. Dies passiert, wenn Sie
pg_ad_mappingzum Parametershared_preload_librarieshinzufügen und Ihre Datenbank neu starten. Bei der Verwendung von Cluster-Endpunkten können Anmeldeversuche mit einem AD-Benutzer fehlschlagen, der kein Datenbankbenutzer ist, der die Rollerds_adinnehat. Dies kann möglicherweise auch zu Abstürzen der Engine führen. Zur Behebung des Problems deaktivieren Sie die Kerberos-Authentifizierung in Ihrem Cluster und aktivieren Sie sie anschließend erneut. Diese Problemumgehung ist für vorhandene Instances erforderlich, wirkt sich jedoch nicht auf solche aus, die nach April 2025 erstellt wurden. -
Verwalten eines DB-Clusters in einer Domain. Weitere Informationen finden Sie unter Verwalten eines DB-Clusters in einer Domain.
Einrichten der pg_ad_mapping-Erweiterung
Aurora PostgreSQL unterstützt jetzt eine pg_ad_mapping-Erweiterung zur Verwaltung der Zuordnung zwischen AD-Sicherheitsgruppen und DB-Rollen im Aurora PostgreSQL-Cluster. Weitere Informationen zu den Funktionen, die von pg_ad_mapping bereitgestellt werden, finden Sie unter Verwenden von Funktionen der pg_ad_mapping-Erweiterung.
Wenn Sie die pg_ad_mapping-Erweiterung in Ihrem DB-Cluster von Aurora PostgreSQL bereitstellen möchten, fügen Sie zunächst pg_ad_mapping zu den freigegebenen Bibliotheken in der benutzerdefinierten DB-Parametergruppe für Ihren DB-Cluster von Aurora PostgreSQL hinzu. Weitere Informationen über das Erstellen einer benutzerdefinierten DB-Cluster-Parametergruppe finden Sie unter Parametergruppen für Amazon Aurora. Als Nächstes installieren Sie die pg_ad_mapping-Erweiterung. Die Schritte in diesem Abschnitt veranschaulichen die Vorgehensweise. Sie können die AWS-Managementkonsole oder die AWS CLI verwenden.
Sie müssen über Berechtigungen als rds_superuser-Rolle verfügen, um alle diese Aufgaben ausführen zu können.
Bei den folgenden Schritten wird davon ausgegangen, dass Ihr DB-Cluster von Aurora PostgreSQL einer benutzerdefinierten DB-Cluster-Parametergruppe zugeordnet ist.
So richten Sie die pg_ad_mapping-Erweiterung ein
Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die Amazon-RDS-Konsole unter https://console.aws.amazon.com/rds/
. -
Wählen Sie im Navigationsbereich die Writer-Instance des DB-Clusters von Aurora PostgreSQL aus.
-
Öffnen Sie die Registerkarte Konfiguration für Ihre Writer-Instance des DB-Clusters von Aurora PostgreSQL. Suchen Sie in den Instance-Details den Link Parameter group (Parametergruppe).
-
Wählen Sie den Link aus, um die benutzerdefinierten Parameter zu öffnen, die Ihrem DB-Cluster von Aurora PostgreSQL zugeordnet sind.
-
Geben Sie in das Suchfeld Parameters (Parameter)
shared_preein, um denshared_preload_libraries-Parameter zu finden. -
Wählen Sie Edit parameters (Parameter bearbeiten) aus, um auf die Eigenschaftswerte zuzugreifen.
-
Fügen Sie
pg_ad_mappingder Liste im Feld Values (Werte) hinzu. Verwenden Sie ein Komma, um Elemente in der Werteliste zu trennen.
-
Starten Sie die Writer-Instance Ihres DB-Clusters von Aurora PostgreSQL neu, damit Ihre Änderung des
shared_preload_libraries-Parameters wirksam wird. -
Wenn die Instance verfügbar ist, überprüfen Sie, ob
pg_ad_mappinginitialisiert wurde. Stellen Sie überpsqleine Verbindung mit der Writer-Instance Ihres DB-Clusters von Aurora PostgreSQL her und führen Sie den folgenden Befehl aus.SHOW shared_preload_libraries;shared_preload_libraries -------------------------- rdsutils,pg_ad_mapping (1 row) -
Sobald
pg_ad_mappinginitialisiert ist, können Sie die Erweiterung erstellen. Sie müssen die Erweiterung nach dem Initialisieren der Bibliothek erstellen, um die von der Erweiterung bereitgestellten Funktionen verwenden zu können.CREATE EXTENSION pg_ad_mapping; -
Schließen Sie die
psql-Sitzung.labdb=>\q
So richten Sie pg_ad_mapping ein
Wenn Sie pg_ad_mapping mit der AWS CLI einrichten möchten, rufen Sie die Operation modify-db-parameter-group auf, um diesen Parameter zu Ihrer benutzerdefinierten Parametergruppe hinzuzufügen, so wie im folgenden Verfahren gezeigt.
-
Verwenden Sie den folgenden AWS CLI-Befehl, um dem
shared_preload_libraries-Parameterpg_ad_mappinghinzuzufügen.aws rds modify-db-parameter-group \ --db-parameter-group-namecustom-param-group-name\ --parameters "ParameterName=shared_preload_libraries,ParameterValue=pg_ad_mapping,ApplyMethod=pending-reboot" \ --regionaws-region -
Verwenden Sie den folgenden AWS CLI-Befehl, um die Writer-Instance Ihres DB-Clusters von Aurora PostgreSQL neu zu starten, sodass pg_ad_mapping initialisiert wird.
aws rds reboot-db-instance \ --db-instance-identifierwriter-instance\ --regionaws-region -
Wenn die Instance verfügbar ist, können Sie überprüfen, ob
pg_ad_mappinginitialisiert wurde. Stellen Sie überpsqleine Verbindung mit der Writer-Instance Ihres DB-Clusters von Aurora PostgreSQL her und führen Sie den folgenden Befehl aus.SHOW shared_preload_libraries;shared_preload_libraries -------------------------- rdsutils,pg_ad_mapping (1 row)Wenn pg_ad_mapping initialisiert ist, können Sie die Erweiterung erstellen.
CREATE EXTENSION pg_ad_mapping; -
Schließen Sie die
psql-Sitzung, damit Sie die AWS CLI verwenden können.labdb=>\q
Abrufen der SID der Active-Directory-Gruppe in PowerShell
Eine Sicherheits-ID (SID) wird verwendet, um einen Sicherheitsprinzipal oder eine Sicherheitsgruppe eindeutig zu identifizieren. Immer wenn eine Sicherheitsgruppe oder ein Konto in Active Directory erstellt wird, wird dieser bzw. diesem eine SID zugewiesen. Zum Abrufen der SID der AD-Sicherheitsgruppe aus Active Directory können Sie das Get-ADGroup-Cmdlet vom Windows-Client-Computer verwenden, der mit dieser Active-Directory-Domain verbunden ist. Der Identity-Parameter gibt den Active-Directory-Gruppennamen zum Abrufen der entsprechenden SID an.
Im folgenden Beispiel wird die SID der AD-Gruppe adgroup1 zurückgegeben.
C:\Users\Admin>Get-ADGroup -Identity adgroup1 | select SIDSID ----------------------------------------------- S-1-5-21-3168537779-1985441202-1799118680-1612
Zuordnen der DB-Rolle zur AD-Sicherheitsgruppe
Sie müssen die AD-Sicherheitsgruppen in der Datenbank explizit als PostgreSQL-DB-Rolle bereitstellen. Ein AD-Benutzer, der Teil mindestens einer bereitgestellten AD-Sicherheitsgruppe ist, erhält Zugriff auf die Datenbank. Sie sollten der auf AD-Gruppensicherheit basierenden DB-Rolle nicht die Rolle rds_ad role zuweisen. Die Kerberos-Authentifizierung für die Sicherheitsgruppe wird ausgelöst, indem das Suffix eines Domainnamens wie user1@example.com verwendet wird. Diese DB-Rolle unterstützt keine Passwort- oder IAM-Authentifizierung für den Zugriff auf die Datenbank.
Anmerkung
AD-Benutzer, die über eine entsprechende DB-Rolle in der Datenbank mit der ihnen zugewiesenen rds_ad-Rolle verfügen, können sich nicht als Teil der AD-Sicherheitsgruppe anmelden. Sie erhalten Zugriff über die DB-Rolle als Einzelbenutzer.
So ist accounts-group beispielsweise eine Sicherheitsgruppe in AD, für die Sie diese Sicherheitsgruppe in Aurora PostgreSQL als accounts-role bereitstellen können.
| AD-Sicherheitsgruppe | PostgreSQL-DB-Rolle |
|---|---|
| accounts-group | accounts-role |
Wenn Sie die DB-Rolle der AD-Sicherheitsgruppe zuordnen, müssen Sie sicherstellen, dass für die DB-Rolle das LOGIN-Attribut festgelegt ist und dass sie über die CONNECT-Berechtigungen für die erforderliche Anmeldedatenbank verfügt.
postgres =>alter roleaccounts-rolelogin;ALTER ROLEpostgres =>grant connect on databaseaccounts-dbtoaccounts-role;
Der Administrator kann nun mit der Erstellung der Zuordnung zwischen der AD-Sicherheitsgruppe und der PostgreSQL-DB-Rolle fortfahren.
admin=>select pgadmap_set_mapping('accounts-group','accounts-role',<SID>,<Weight>);
Informationen zum Abrufen der SID der AD-Sicherheitsgruppe finden Sie unter Abrufen der SID der Active-Directory-Gruppe in PowerShell.
Es ist möglich, dass ein AD-Benutzer mehreren Gruppen angehört. In diesem Fall erbt der AD-Benutzer die Berechtigungen der DB-Rolle, da diese mit der höchsten Gewichtung bereitgestellt wurde. Ist die Gewichtung der beiden Rollen identisch, erbt der AD-Benutzer die Berechtigungen der DB-Rolle, die der kürzlich hinzugefügten Zuordnung entspricht. Es wird empfohlen, Gewichtungen anzugeben, die den relativen Berechtigungen der einzelnen DB-Rollen entsprechen. Je höher die Berechtigung einer DB-Rolle, desto höher die Gewichtung, die dem Zuordnungseintrag zugewiesen werden sollte. Dadurch wird eine Mehrdeutigkeit vermieden, da es keine zwei Zuordnungen mit identischer Gewichtung gibt.
Die folgende Tabelle zeigt ein Beispiel einer Zuordnung von AD-Sicherheitsgruppen zu DB-Rollen von Aurora PostgreSQL.
| AD-Sicherheitsgruppe | PostgreSQL-DB-Rolle | Gewicht |
|---|---|---|
| accounts-group | accounts-role | 7 |
| sales-group | sales-role | 10 |
| dev-group | dev-role | 7 |
Im folgenden Beispiel erbt user1 die Rechte von sales-role aufgrund der höheren Gewichtung. user2 erbt die Berechtigungen von dev-role, da die Zuordnung dieser Rolle nach accounts-role erstellt wurde, welche dieselbe Gewichtung haben wie accounts-role.
| Username | Sicherheitsgruppenmitgliedschaft |
|---|---|
| Benutzer 1 | accounts-group sales-group |
| user2 | accounts-group dev-group |
Die psql-Befehle zum Erstellen, Auflisten und Löschen der Zuordnungen sind unten aufgeführt. Derzeit ist es nicht möglich, einen einzelnen Zuordnungseintrag zu ändern. Der bestehende Eintrag muss gelöscht und die Zuordnung neu erstellt werden.
admin=>select pgadmap_set_mapping('accounts-group', 'accounts-role', 'S-1-5-67-890', 7);admin=>select pgadmap_set_mapping('sales-group', 'sales-role', 'S-1-2-34-560', 10);admin=>select pgadmap_set_mapping('dev-group', 'dev-role', 'S-1-8-43-612', 7);admin=>select * from pgadmap_read_mapping();ad_sid | pg_role | weight | ad_grp -------------+----------------+--------+--------------- S-1-5-67-890 | accounts-role | 7 | accounts-group S-1-2-34-560 | sales-role | 10 | sales-group S-1-8-43-612 | dev-role | 7 | dev-group (3 rows)
Protokollierung/Prüfung der AD-Benutzeridentität
Verwenden Sie den folgenden Befehl, um die Datenbankrolle zu ermitteln, die vom aktuellen oder vom Sitzungsbenutzer geerbt wurde:
postgres=>select session_user, current_user;session_user | current_user -------------+-------------- dev-role | dev-role (1 row)
Verwenden Sie den folgenden Befehl, um die Identität des AD-Sicherheitsprinzipals zu ermitteln:
postgres=>select principal from pg_stat_gssapi where pid = pg_backend_pid();principal ------------------------- user1@example.com (1 row)
Derzeit ist die AD-Benutzeridentität in den Prüfungsprotokollen nicht sichtbar. Der log_connections-Parameter kann aktiviert werden, um die Einrichtung einer DB-Sitzung zu protokollieren. Weitere Informationen finden Sie unter log_connections. Die Ausgabe hierfür beinhaltet die AD-Benutzeridentität, wie unten dargestellt. Die dieser Ausgabe zugeordnete Backend-PID kann dann dabei helfen, Aktionen dem tatsächlichen AD-Benutzer zuzuordnen.
pgrole1@postgres:[615]:LOG: connection authorized: user=pgrole1 database=postgres application_name=psql GSS (authenticated=yes, encrypted=yes, principal=Admin@EXAMPLE.COM)
Einschränkungen
-
Microsoft Entra ID, auch bekannt als Azure Active Directory, wird nicht unterstützt.
Verwenden von Funktionen der pg_ad_mapping-Erweiterung
Die pg_ad_mapping-Erweiterung unterstützte die folgenden Funktionen:
pgadmap_set_mapping
Diese Funktion stellt die Zuordnung zwischen der AD-Sicherheitsgruppe und der Datenbankrolle mit einer zugehörigen Gewichtung her.
Syntax
pgadmap_set_mapping(
ad_group,
db_role,
ad_group_sid,
weight)
Argumente
| Parameter | Beschreibung |
|---|---|
| ad_group | Der Name der AD-Gruppe Der Wert kann weder Null noch eine leere Zeichenfolge sein. |
| db_role | Datenbankrolle, die der angegebenen AD-Gruppe zugeordnet werden soll Der Wert kann weder Null noch eine leere Zeichenfolge sein. |
| ad_group_sid | Die Sicherheits-ID, die zur eindeutigen Identifizierung der AD-Gruppe verwendet wird Der Wert beginnt mit „S-1-“ und darf weder Null noch eine leere Zeichenfolge sein. Weitere Informationen finden Sie unter Abrufen der SID der Active-Directory-Gruppe in PowerShell. |
| Gewichtung | Gewichtung, die der Datenbankrolle zugewiesen ist Die Rolle mit der höchsten Gewichtung hat Vorrang, wenn der Benutzer Mitglied mehrerer Gruppen ist. Der Standardwert für die Gewichtung ist 1. |
Rückgabetyp
None
Nutzungshinweise
Diese Funktion fügt eine neue Zuordnung von der AD-Sicherheitsgruppe zur Datenbankrolle hinzu. Sie kann nur von einem Benutzer mit rds_superuser privilege-Berechtigung auf der primären DB-Instance des DB-Clusters ausgeführt werden.
Beispiele
postgres=>select pgadmap_set_mapping('accounts-group','accounts-role','S-1-2-33-12345-67890-12345-678',10);pgadmap_set_mapping (1 row)
pgadmap_read_mapping
Diese Funktion listet die Zuordnungen zwischen der AD-Sicherheitsgruppe und der DB-Rolle auf, die mithilfe der Funktion pgadmap_set_mapping festgelegt wurde.
Syntax
pgadmap_read_mapping()
Argumente
None
Rückgabetyp
| Parameter | Beschreibung |
|---|---|
| ad_group_sid | Die Sicherheits-ID, die zur eindeutigen Identifizierung der AD-Gruppe verwendet wird. Der Wert beginnt mit „S-1-“ und darf weder Null noch eine leere Zeichenfolge sein. Weitere Informationen dazu finden Sie unter Abrufen der SID der Active-Directory-Gruppe in PowerShell.accounts-role@example.com. |
| db_role | Datenbankrolle, die der angegebenen AD-Gruppe zugeordnet werden soll Der Wert kann weder Null noch eine leere Zeichenfolge sein. |
| Gewichtung | Gewichtung, die der Datenbankrolle zugewiesen ist. Die Rolle mit der höchsten Gewichtung hat Vorrang, wenn der Benutzer Mitglied mehrerer Gruppen ist. Der Standardwert für die Gewichtung ist 1. |
| ad_group | Der Name der AD-Gruppe Der Wert kann weder Null noch eine leere Zeichenfolge sein. |
Nutzungshinweise
Rufen Sie diese Funktion auf, um alle verfügbaren Zuordnungen zwischen der AD-Sicherheitsgruppe und der DB-Rolle aufzulisten.
Beispiele
postgres=>select * from pgadmap_read_mapping();ad_sid | pg_role | weight | ad_grp ------------------------------------+---------------+--------+------------------ S-1-2-33-12345-67890-12345-678 | accounts-role | 10 | accounts-group (1 row) (1 row)
pgadmap_reset_mapping
Diese Funktion setzt eine oder alle Zuordnungen zurück, die mit der Funktion pgadmap_set_mapping festgelegt wurden.
Syntax
pgadmap_reset_mapping(
ad_group_sid,
db_role,
weight)
Argumente
| Parameter | Beschreibung |
|---|---|
| ad_group_sid | Die Sicherheits-ID, die zur eindeutigen Identifizierung der AD-Gruppe verwendet wird |
| db_role | Datenbankrolle, die der angegebenen AD-Gruppe zugeordnet werden soll |
| Gewichtung | Gewichtung, die der Datenbankrolle zugewiesen ist |
Wenn keine Argumente angegeben werden, werden alle Zuordnungen von AD-Gruppen zu DB-Rollen zurückgesetzt. Es müssen entweder alle Argumente angegeben werden oder keine.
Rückgabetyp
None
Nutzungshinweise
Rufen Sie diese Funktion auf, um eine bestimmte Zuordnung einer AD-Gruppe zu einer DB-Rolle zu löschen oder um alle Zuordnungen zurückzusetzen. Diese Funktion kann nur von einem Benutzer mit rds_superuser-Berechtigung auf der primären DB-Instance des DB-Clusters ausgeführt werden.
Beispiele
postgres=>select * from pgadmap_read_mapping();ad_sid | pg_role | weight | ad_grp --------------------------------+--------------+-------------+------------------- S-1-2-33-12345-67890-12345-678 | accounts-role| 10 | accounts-group S-1-2-33-12345-67890-12345-666 | sales-role | 10 | sales-group (2 rows)postgres=>select pgadmap_reset_mapping('S-1-2-33-12345-67890-12345-678', 'accounts-role', 10);pgadmap_reset_mapping (1 row)postgres=>select * from pgadmap_read_mapping();ad_sid | pg_role | weight | ad_grp --------------------------------+--------------+-------------+--------------- S-1-2-33-12345-67890-12345-666 | sales-role | 10 | sales-group (1 row)postgres=>select pgadmap_reset_mapping();pgadmap_reset_mapping (1 row)postgres=>select * from pgadmap_read_mapping();ad_sid | pg_role | weight | ad_grp --------------------------------+--------------+-------------+-------------- (0 rows)