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 SQL Postgre-Zugriffskontrolle
Ab den Versionen Aurora Postgre SQL 14.10 und 15.5 kann die Aurora SQL Postgre-Zugriffskontrolle verwaltet werden mit AWS Directory Service für Microsoft Active Directory (AD) -Sicherheitsgruppen. Frühere Versionen von Aurora Postgre SQL 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 Postgre-DB-Cluster ein. SQL Weitere Informationen finden Sie unter Kerberos-Authentifizierung für Postgre-DB-Cluster einrichten. SQL
Anmerkung
Bei AD-Sicherheitsgruppen überspringen Sie Schritt 7: SQL Postgre-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 Postgre bietet jetzt SQL eine pg_ad_mapping
Erweiterung zur Verwaltung der Zuordnung zwischen AD-Sicherheitsgruppen und DB-Rollen im Aurora SQL Postgre-Cluster. Weitere Informationen zu den Funktionen von finden Sie pg_ad_mapping
unter. Verwenden von Funktionen aus der Erweiterung pg_ad_mapping
Um die pg_ad_mapping
Erweiterung auf Ihrem Aurora SQL Postgre-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 SQL Postgre-DB-Cluster hinzu. Informationen zum 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 das AWS Management Console oder die 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 SQL Postgre-DB-Cluster einer benutzerdefinierten DB-Cluster-Parametergruppe zugeordnet ist.
Um die Erweiterung einzurichten pg_ad_mapping
Melden Sie sich an bei AWS Management Console und öffnen Sie die RDS Amazon-Konsole unter https://console.aws.amazon.com/rds/
. -
Wählen Sie im Navigationsbereich die Writer-Instance Ihres Aurora SQL Postgre-DB-Clusters aus.
-
Öffnen Sie die Registerkarte Konfiguration für Ihre Aurora SQL Postgre-DB-Cluster-Writer-Instance. Suchen Sie in den Instance-Details den Link Parameter group (Parametergruppe).
-
Wählen Sie den Link, um die benutzerdefinierten Parameter zu öffnen, die mit Ihrem Aurora SQL Postgre-DB-Cluster verknüpft 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 SQL Postgre-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 SQL Postgre-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 AWS CLI, rufen Sie den modify-db-parameter-groupVorgang auf, um diesen Parameter zu Ihrer benutzerdefinierten Parametergruppe hinzuzufügen, wie im folgenden Verfahren gezeigt.
Verwenden Sie Folgendes AWS CLI Befehl zum Hinzufügen
pg_ad_mapping
zumshared_preload_libraries
Parameter.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 Folgendes AWS CLI Befehl, um die Writer-Instance Ihres Aurora SQL Postgre-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 SQL Postgre-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 verwenden können AWS CLI.labdb=>
\q
Die Active Directory-Gruppe 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, SID wird ihr eine zugewiesen. Um die AD-Sicherheitsgruppe SID aus dem Active Directory abzurufen, können Sie das ADGroup Get-Cmdlet 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 Datei abzurufen. SID
Im folgenden Beispiel wird der Wert SID der AD-Gruppe zurückgegeben adgroup1
.
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 SQL Postgre-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 folgt verwendet wird user1@example.com
. Diese DB-Rolle kann weder Passwort noch 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 im Aurora Postgre SQL als Account-Rolle bereitstellen möchten.
AD-Sicherheitsgruppe | SQLDB-Rolle posten |
---|---|
Kontengruppe | Kontenrolle |
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 CONNECT Berechtigungen 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 SQL Postgre-DB-Rolle fortfahren.
admin=>
select pgadmap_set_mapping(
'accounts-group'
,'accounts-role'
,<SID>
,<Weight>
);
Informationen zum Abrufen SID der AD-Sicherheitsgruppe finden Sie unter. Die Active Directory-Gruppe 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 SQL Postgre-DB-Rollen.
AD-Sicherheitsgruppe | SQLDB-Rolle posten | 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. Das mit dieser Ausgabe PID verknüpfte Backend 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-Gruppe 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 AD-Sicherheitsgruppe und 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-Gruppe 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)