Wie verwalte ich Objektberechtigungen in meinem DB-Cluster von Aurora PostgreSQL-Compatible?
Ich möchte wissen, wie Objektberechtigungen in Datenbank (DB)-Clustern von Amazon Aurora PostgreSQL-Compatible Edition verwaltet werden.
Lösung
Um Objektberechtigungen in DB-Clustern von Aurora-PostgreSQL-Compatible zu verwalten, gewähre Benutzern oder Rollen spezifische Berechtigungen, um verschiedene Aktionen an Datenbankobjekten auszuführen.
Weitere Informationen zu den Arten von Datenbankberechtigungen findest du unter Privileges (Berechtigungen) auf der PostgreSQL-Website.
Hinweis: AWS verwendet den Begriff „Berechtigung“ für „Recht“.
Eine(n) Benutzer:in erstellen und dem/der Benutzer:in die Objektberechtigung erteilen
Gehe wie folgt vor:
- Stelle mit einem PostgreSQL-Client wie psql eine Verbindung zum Aurora-PostgreSQL-Compatible-Cluster her.
- Führe den folgenden Befehl aus, um eine(n) Benutzer:in zu erstellen:
Hinweis: Ersetze username und password durch deinen Benutzernamen und dein Passwort.CREATE USER username WITH PASSWORD 'password'; - Um einem/einer Benutzer:in oder einer Rolle die Berechtigung zu erteilen, eine Aktion an einem Objekt auszuführen, führe den folgenden Befehl aus:
Hinweis: Ersetze privilege_type durch die Datenbankaktion, die der/die Benutzer:in ausführen soll. Ersetze object_name durch das Datenbankobjekt, für das der/die Benutzer:in eine Aktion ausführen soll. Ersetze user_or_role durch den/die Benutzer:in oder die Rolle, dem/der du Objektberechtigungen zuweisen möchtest.GRANT privilege_type ON object_name TO user_or_role;
Du kannst beispielsweise den folgenden Befehl ausführen, um user_or_role mehrere Objektberechtigungen zu erteilen:
GRANT SELECT, INSERT, UPDATE ON object_name TO user_or_role;
Weitere Informationen findest du unter GRANT auf der PostgreSQL-Website.
Berechtigungen für Benutzer und Rollen widerrufen
Führe den folgenden Befehl aus, um Berechtigungen für Benutzer oder Rollen zu widerrufen:
REVOKE privilege_type ON object_name FROM user_or_role;
Hinweis: Ersetze privilege_type durch die Datenbankaktion, die du entfernen möchtest. Ersetze object_name durch das Datenbankobjekt. Ersetze user_or_role durch den/die Benutzer:in oder die Rolle, für den/die du Berechtigungen entfernen möchtest.
Weitere Informationen findest du unter REVOKE auf der PostgreSQL-Website.
Benutzern die erforderlichen Mindestberechtigungen erteilen
Es hat sich bewährt, dem/der Benutzer:in oder der Rolle nur die erforderlichen Berechtigungen zu erteilen.
Führe den folgenden Befehl aus, um die Berechtigungen für eine Tabelle zu überprüfen:
\z table_name
Hinweis: Ersetze table_name durch den Namen der Tabelle, die du überprüfen möchtest.
Alternativ kannst du den folgenden Befehl ausführen:
SELECT * FROM information_schema.table_privileges WHERE table_name = 'your_table';
Rollen für Benutzergruppen erstellen und zuweisen
Es hat sich bewährt, Rollen für Benutzergruppen zu erstellen und den Rollen statt einzelnen Benutzern Berechtigungen zuzuweisen. Weitere Informationen findest du unter Database roles for server administration (Datenbankrollen für Serveradministration) und Database roles (Datenbankrollen) auf der PostgreSQL-Website.
Um eine Rolle zu erstellen und die Rollenberechtigung für alle Tabellen in der Datenbank zu erteilen, führe den folgenden Befehl aus:
CREATE ROLE analyst_role; GRANT SELECT ON ALL TABLES IN SCHEMA schema_name TO analyst_role;
Hinweis: Ersetze schema_name durch den Namen deines Schemas und analyst_role durch den Namen deiner Rolle.
Benutzern und Rollen Berechtigungen auf Schemaebene erteilen
Führe den folgenden Befehl aus, um einem/einer Benutzer:in oder einer Rolle Berechtigungen auf Schemaebene zu erteilen:
GRANT USAGE ON SCHEMA schema_name TO user_or_role;
Hinweis: Ersetze schema_name durch den Namen deines Schemas und user_or_role durch den Namen deines Benutzers oder deiner Rolle.
Eine Standardberechtigung für zukünftige Objekte festlegen
Führe den folgenden Befehl aus, um für die readonly _role eine Standardberechtigung für neue Tabellen festzulegen:
ALTER DEFAULT PRIVILEGES IN SCHEMA schema_name GRANT SELECT ON TABLES TO readonly_role;
Hinweis: Ersetze schema_name durch den Namen deines Schemas.
Objekteigentum zwischen Benutzern übertragen
Um Sicherheitsproblemen vorzubeugen, stelle sicher, dass du das Objekteigentum verwaltest.
Um das Eigentum auf einen neuen Eigentümer zu übertragen, führe den folgenden Befehl aus:
ALTER TABLE table_name OWNER TO new_owner;
Hinweis: Ersetze table_name durch den Namen der Tabelle und new_owner durch den Namen des neuen Eigentümers.
Überwachen der Berechtigungsänderungen mit Aktivitätenlisten
Um die Datenbankaktivität zu überwachen, starte eine Aktivitätenliste für den DB-Cluster und verwende ein databaseActivityEventList-JSON-Array. Weitere Informationen findest du unter databaseActivityEvents-JSON-Objekt.
Regelmäßige Berechtigungsprüfungen planen
Plane regelmäßige Berechtigungsprüfungen ein und aktualisiere die Berechtigungen auf der Grundlage der aktuellen Anforderungen.
Du kannst beispielsweise die folgende Abfrage ausführen, um alle Berechtigungen anzuzeigen, die du für Tabellen und Ansichten erteilt hast:
-- To view table and view privileges SELECT grantee, table_schema, table_name, privilege_type FROM information_schema.role_table_grants ORDER BY grantee, table_schema, table_name, privilege_type; -- List schema privileges SELECT nspname, rolname, nspacl FROM pg_namespace n JOIN pg_roles r ON r.oid = n.nspowner; -- Show all privileges for a specific role SELECT table_catalog, table_schema, table_name, privilege_typeFROM information_schema.table_privilegesWHERE grantee = 'role_name'; -- Show role-specific schema privileges SELECT n.nspname as schema_name, r.rolname as role_name, has_schema_privilege(r.oid, n.oid, 'CREATE') as has_create, has_schema_privilege(r.oid, n.oid, 'USAGE') as has_usageFROM pg_namespace nCROSS JOIN pg_roles rWHERE n.nspname NOT LIKE 'pg_%' AND n.nspname != 'information_schema';
- Themen
- Database
- Sprache
- Deutsch
