Verwenden von AD-Sicherheitsgruppen für die Aurora SQL Postgre-Zugriffskontrolle - Amazon Aurora

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:

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
  1. Melden Sie sich an bei AWS Management Console und öffnen Sie die RDS Amazon-Konsole unter https://console.aws.amazon.com/rds/.

  2. Wählen Sie im Navigationsbereich die Writer-Instance Ihres Aurora SQL Postgre-DB-Clusters aus.

  3. Ö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).

  4. Wählen Sie den Link, um die benutzerdefinierten Parameter zu öffnen, die mit Ihrem Aurora SQL Postgre-DB-Cluster verknüpft sind.

  5. Geben Sie in das Suchfeld Parameters (Parameter) shared_pre ein, um den shared_preload_libraries-Parameter zu finden.

  6. Wählen Sie Edit parameters (Parameter bearbeiten) aus, um auf die Eigenschaftswerte zuzugreifen.

  7. Fügen Sie pg_ad_mapping der Liste im Feld Values (Werte) hinzu. Verwenden Sie ein Komma, um Elemente in der Werteliste zu trennen.

    Bild des shared_preload_libaries Parameters pgAudit wurde hinzugefügt.
  8. Starten Sie die Writer-Instance Ihres Aurora SQL Postgre-DB-Clusters neu, damit Ihre Änderung des shared_preload_libraries Parameters wirksam wird.

  9. 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)
  10. 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;
  11. 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.

  1. Verwenden Sie Folgendes AWS CLI Befehl zum Hinzufügen pg_ad_mapping zum shared_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" \ --region aws-region
  2. 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 \ --region aws-region
  3. 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;
  4. 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 database accounts-db to accounts-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_mappingDie 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)