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 Versionen Aurora PostgreSQL 14.10 und 15.5 kann die Aurora PostgreSQL-Zugriffskontrolle mithilfe des AWS Directory Service für Microsoft Active Directory (AD) -Sicherheitsgruppen verwaltet werden. Frühere Versionen von Aurora PostgreSQL unterstützen die Kerberos-basierte Authentifizierung mit 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 oder Privilegien 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 basiert auf der Mitgliedschaft in einer AD-Sicherheitsgruppe. AD-Benutzer erhalten oder verlieren automatisch Zugriff auf der Grundlage ihrer AD-Gruppenmitgliedschaft.
Voraussetzungen
Stellen Sie sicher, dass Sie über Folgendes verfügen, bevor Sie die Erweiterung für AD-Sicherheitsgruppen einrichten:
-
Richten Sie die Kerberos-Authentifizierung für PostgreSQL-DB-Cluster ein. Weitere Informationen finden Sie unter Kerberos-Authentifizierung für PostgreSQL-DB-Cluster einrichten.
Anmerkung
Überspringen Sie für AD-Sicherheitsgruppen Schritt 7: PostgreSQL-Benutzer für Ihre Kerberos-Prinzipale in diesem Einrichtungsverfahren erstellen.
Verwaltung eines DB-Clusters in einer Domäne. Weitere Informationen finden Sie unter Verwalten eines DB-Clusters in einer Domäne.
Einrichtung der Erweiterung pg_ad_mapping
Aurora PostgreSQL bietet jetzt eine pg_ad_mapping
Erweiterung zur Verwaltung der Zuordnung zwischen AD-Sicherheitsgruppen und DB-Rollen im Aurora PostgreSQL-Cluster. Weitere Hinweise zu den Funktionen von finden Sie unter. pg_ad_mapping
Verwenden von Funktionen aus der Erweiterung pg_ad_mapping
Um die pg_ad_mapping
Erweiterung auf Ihrem Aurora PostgreSQL-DB-Cluster einzurichten, fügen Sie sie zunächst pg_ad_mapping
zu den gemeinsam genutzten Bibliotheken in der benutzerdefinierten DB-Cluster-Parametergruppe für Ihren Aurora PostgreSQL-DB-Cluster hinzu. Hinweise zum Erstellen einer benutzerdefinierten DB-Cluster-Parametergruppe finden Sie unter. Arbeiten mit Parametergruppen Als Nächstes installieren Sie die pg_ad_mapping
Erweiterung. Die Schritte in diesem Abschnitt veranschaulichen die Vorgehensweise. Sie können das AWS Management Console oder das verwenden AWS CLI.
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 Aurora PostgreSQL-DB-Cluster einer benutzerdefinierten DB-Cluster-Parametergruppe zugeordnet ist.
Um die Erweiterung einzurichten pg_ad_mapping
Melden Sie sich bei der Amazon RDS-Konsole an AWS Management Console und öffnen Sie sie unter https://console.aws.amazon.com/rds/
. -
Wählen Sie im Navigationsbereich die Writer-Instance Ihres Aurora PostgreSQL-DB-Clusters aus.
-
Öffnen Sie die Registerkarte Konfiguration für Ihre Aurora PostgreSQL DB-Cluster-Writer-Instance. 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_pre
ein, 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_mapping
der Liste im Feld Values (Werte) hinzu. Verwenden Sie ein Komma, um Elemente in der Werteliste zu trennen. Starten Sie die Writer-Instance Ihres Aurora PostgreSQL-DB-Clusters neu, damit Ihre Änderung des
shared_preload_libraries
Parameters wirksam wird.Wenn die Instance verfügbar ist, überprüfen Sie, ob
pg_ad_mapping
initialisiert wurde. Verwenden Siepsql
, um eine Verbindung zur Writer-Instance Ihres Aurora PostgreSQL-DB-Clusters herzustellen, und führen Sie dann den folgenden Befehl aus.SHOW shared_preload_libraries;
shared_preload_libraries -------------------------- rdsutils,pg_ad_mapping (1 row)
Sobald
pg_ad_mapping
initialisiert ist, können Sie die Erweiterung erstellen. Sie müssen die Erweiterung nach der Initialisierung der Bibliothek erstellen, um die von dieser Erweiterung bereitgestellten Funktionen nutzen zu können.CREATE EXTENSION pg_ad_mapping;
Schließen Sie die
psql
-Sitzung.labdb=>
\q
Um pg_ad_mapping einzurichten
Um pg_ad_mapping mit dem einzurichten, rufen Sie die modify-db-parameter-groupOperation auf AWS CLI, um diesen Parameter zu Ihrer benutzerdefinierten Parametergruppe hinzuzufügen, wie im folgenden Verfahren gezeigt.
Verwenden Sie den folgenden AWS CLI Befehl, um den Parameter zu erweitern
pg_ad_mapping
.shared_preload_libraries
aws rds modify-db-parameter-group \ --db-parameter-group-name
custom-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 Aurora PostgreSQL-DB-Clusters neu zu starten, sodass das pg_ad_mapping initialisiert wird.
aws rds reboot-db-instance \ --db-instance-identifier
writer-instance
\ --regionaws-region
Wenn die Instance verfügbar ist, können Sie überprüfen, ob
pg_ad_mapping
initialisiert wurde. Verwenden Siepsql
, um eine Verbindung zur Writer-Instance Ihres Aurora PostgreSQL-DB-Clusters herzustellen, und führen Sie dann 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 jetzt die Erweiterung erstellen.
CREATE EXTENSION pg_ad_mapping;
Schließen Sie die
psql
-Sitzung, damit Sie die AWS CLI verwenden können.labdb=>
\q
Die Active Directory-Gruppen-SID wird abgerufen 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 ihr eine SID zugewiesen. Um die SID der AD-Sicherheitsgruppe aus dem Active Directory abzurufen, können Sie das Cmdlet Get-ADGroup vom Windows-Client-Computer verwenden, der mit dieser Active Directory-Domäne verbunden ist. Der Identity-Parameter gibt den Active Directory-Gruppennamen an, um die entsprechende SID abzurufen.
Im folgenden Beispiel wird die SID der AD-Gruppe adgroup1
zurückgegeben.
C:\Users\Admin>
Get-ADGroup -Identity adgroup1 | select SID
SID ----------------------------------------------- S-1-5-21-3168537779-1985441202-1799118680-1612
Zuordnung 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 einer AD-Gruppe keine sicherheitsbasierte DB-Rolle gewährenrds_ad role
. Die Kerberos-Authentifizierung für die Sicherheitsgruppe wird ausgelöst, indem das Domainnamensuffix wie user1@example.com verwendet wird.
Diese DB-Rolle kann keine Passwort- oder IAM-Authentifizierung verwenden, um Zugriff auf die Datenbank zu erhalten.
Anmerkung
AD-Benutzer, denen eine entsprechende DB-Rolle in der Datenbank rds_ad
zugewiesen wurde, können sich nicht als Teil der AD-Sicherheitsgruppe anmelden. Sie erhalten Zugriff über die DB-Rolle als Einzelbenutzer.
Accounts-Group ist beispielsweise eine Sicherheitsgruppe in AD, für die Sie diese Sicherheitsgruppe in Aurora PostgreSQL als Accounts-Rolle bereitstellen möchten.
AD-Sicherheitsgruppe | PostgreSQL-DB-Rolle |
---|---|
Kontengruppe | Kontenrolle |
Wenn Sie die DB-Rolle der AD-Sicherheitsgruppe zuordnen, müssen Sie sicherstellen, dass für die DB-Rolle das LOGIN-Attribut gesetzt ist und dass sie über die CONNECT-Privilegien für die erforderliche Anmeldedatenbank verfügt.
postgres =>
alter role
accounts-role
login;ALTER ROLE
postgres =>
grant connect on databaseaccounts-db
toaccounts-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. Die Active Directory-Gruppen-SID wird abgerufen in PowerShell
Es kann vorkommen, dass ein AD-Benutzer mehreren Gruppen angehört. In diesem Fall erbt der AD-Benutzer die Rechte der DB-Rolle, der die höchste Gewichtung zugewiesen wurde. Wenn die beiden Rollen dasselbe Gewicht haben, erbt der AD-Benutzer die Rechte der DB-Rolle, die der kürzlich hinzugefügten Zuordnung entspricht. Es wird empfohlen, Gewichtungen anzugeben, die den relativen Berechtigungen/Privilegien der einzelnen DB-Rollen entsprechen. Je höher die Berechtigungen oder Privilegien einer DB-Rolle, desto höher die Gewichtung, die dem Zuordnungseintrag zugewiesen werden sollte. Dadurch wird die Mehrdeutigkeit vermieden, wenn zwei Zuordnungen dasselbe Gewicht haben.
Die folgende Tabelle zeigt ein Beispiel für die Zuordnung von AD-Sicherheitsgruppen zu Aurora PostgreSQL-DB-Rollen.
AD-Sicherheitsgruppe | PostgreSQL-DB-Rolle | Gewicht |
---|---|---|
Kontengruppe | Kontenrolle | 7 |
Vertriebsgruppe | Rolle im Vertrieb | 10 |
Entwicklungsgruppe | Entwicklungsrolle | 7 |
Im folgenden Beispiel erbt sie die Rechte von sales-role, user1
da sie die höhere Gewichtung hat, und erbt gleichzeitig user2
die Rechte von, dev-role
wie das Mapping für diese Rolle danach erstellt wurdeaccounts-role
, die dieselbe Gewichtung haben wie. accounts-role
Username | Mitgliedschaft in einer Sicherheitsgruppe |
---|---|
Benutzer 1 | Kundengruppe Vertriebsgruppe |
Benutzer 2 | Kontengruppe Dev-Gruppe |
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 Benutzer 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 Auditprotokollen nicht sichtbar. Der log_connections
Parameter kann aktiviert werden, um den Aufbau 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, bekannt als Azure Active Directory, wird nicht unterstützt.
Verwenden von Funktionen aus der Erweiterung pg_ad_mapping
pg_ad_mapping
Die Erweiterung bot Unterstützung für 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 | Name der AD-Gruppe. Der Wert darf nicht Null oder eine leere Zeichenfolge sein. |
db_role | Datenbankrolle, die der angegebenen AD-Gruppe zugeordnet werden soll. Der Wert darf nicht Null oder eine leere Zeichenfolge sein. |
ad_group_sid | 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 Die Active Directory-Gruppen-SID wird abgerufen in PowerShell. |
Gewicht | Gewicht, das der Datenbankrolle zugeordnet ist. Die Rolle mit der höchsten Gewichtung hat Vorrang, wenn der Benutzer Mitglied mehrerer Gruppen ist. Der Standardwert für das Gewicht ist 1. |
Rückgabetyp
None
Nutzungshinweise
Diese Funktion fügt eine neue Zuordnung von der AD-Sicherheitsgruppe zur Datenbankrolle hinzu. Sie kann nur auf der primären DB-Instance des DB-Clusters von einem Benutzer mit der Berechtigung rds_superuser 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 festgelegt wurden. pgadmap_set_mapping
Syntax
pgadmap_read_mapping()
Argumente
None
Rückgabetyp
Parameter | Beschreibung |
---|---|
ad_group_sid | 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 erhalten Sie unter .accounts-role@example.com Die Active Directory-Gruppen-SID wird abgerufen in PowerShell |
db_role | Datenbankrolle, die der angegebenen AD-Gruppe zugeordnet werden soll. Der Wert darf nicht Null oder eine leere Zeichenfolge sein. |
Gewicht | Gewicht, das der Datenbankrolle zugeordnet ist. Die Rolle mit der höchsten Gewichtung hat Vorrang, wenn der Benutzer Mitglied mehrerer Gruppen ist. Der Standardwert für das Gewicht ist 1. |
ad_group | Name der AD-Gruppe. Der Wert darf nicht Null oder 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 festgelegt wurden. pgadmap_set_mapping
Syntax
pgadmap_reset_mapping(
ad_group_sid,
db_role,
weight)
Argumente
Parameter | Beschreibung |
---|---|
ad_group_sid | Sicherheits-ID, die zur eindeutigen Identifizierung der AD-Gruppe verwendet wird. |
db_role | Datenbankrolle, die der angegebenen AD-Gruppe zugeordnet werden soll. |
Gewicht | Gewicht, das der Datenbankrolle zugeordnet ist. |
Wenn keine Argumente angegeben werden, werden alle Zuordnungen von AD-Gruppen zu DB-Rollen zurückgesetzt. Entweder müssen alle Argumente angegeben werden oder keine.
Rückgabetyp
None
Nutzungshinweise
Rufen Sie diese Funktion auf, um eine bestimmte AD-Gruppe zur DB-Rollenzuordnung zu löschen oder um alle Zuordnungen zurückzusetzen. Diese Funktion kann nur von einem Benutzer mit entsprechenden Rechten auf der primären DB-Instance des DB-Clusters ausgeführt werden. rds_superuser
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)