Erteilen von Berechtigungen in Azure Database for PostgreSQL
Um Benutzern den Zugriff auf Datenbanken zu ermöglichen, die auf Ihrem Azure Database for PostgreSQL-Server gehostet werden, müssen Sie Rollen (Benutzer) erstellen und Berechtigungen für Datenbankobjekte erteilen oder verweigern.
Erstellen von Datenbankbenutzern in Azure Database for PostgreSQL
Stellen Sie in Azure Data Studio (oder Ihrem bevorzugten Clienttool) mit den Anmeldeinformationen des Administrators eine Verbindung mit Ihrem Azure Database for PostgreSQL-Server her.
Mit der entsprechenden Datenbank als aktueller Datenbank führen Sie
CREATE ROLE
mit den entsprechenden Optionen aus, um eine neue Rolle (bzw. einen Benutzer) zu erstellen.Die folgende Abfrage bewirkt beispielsweise Folgendes:
- Erstellt die neue Datenbank „testdb“
- Erstellt einen neuen Benutzer mit einem sicheren Kennwort
- Erteilt Berechtigungen zum Herstellen einer Verbindung mit der Datenbank testdb
CREATE DATABASE testdb; CREATE ROLE <db_user> WITH LOGIN NOSUPERUSER INHERIT CREATEDB NOCREATEROLE NOREPLICATION PASSWORD '<StrongPassword!>'; GRANT CONNECT ON DATABASE testdb TO <db_user>;
Um die Abfrage zu testen, können Sie die Platzhalter durch Ihre Benutzerinformationen ersetzen.
Anschließend können Sie Objekten in der Datenbank weitere Berechtigungen zuweisen. Zum Beispiel:
GRANT SELECT ON ALL TABLES IN SCHEMA <schema_name> TO <db_user>;
Die Syntax für CREATE ROLE lautet wie folgt:
CREATE ROLE name [ [ WITH ] option [ ... ] ]
Dabei kann option wie folgt lauten:
SUPERUSER | NOSUPERUSER
| CREATEDB | NOCREATEDB
| CREATEROLE | NOCREATEROLE
| INHERIT | NOINHERIT
| LOGIN | NOLOGIN
| REPLICATION | NOREPLICATION
| BYPASSRLS | NOBYPASSRLS
| CONNECTION LIMIT connlimit
| [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL
| VALID UNTIL 'timestamp'
| IN ROLE role_name [, ...]
| ROLE role_name [, ...]
| ADMIN role_name [, ...]
Folgende Parameter sind optional:
- SUPERUSER | NOSUPERUSER: Sie können innerhalb von Azure Database for PostgreSQL keine SUPERUSER-Berechtigungen zuweisen. Falls nicht angegeben, ist NOSUPERUSER die Standardeinstellung.
- CREATEDB | NOCREATEDB: gibt an, ob die Rolle Datenbanken erstellen kann. Die Standardeinstellung ist NOCREATEDB.
- CREATEROLE | NOCREATEROLE gibt an, ob die Rolle neue Rollen erstellen, d. h. CREATE ROLE ausführen kann. Wenn die Berechtigung CREATEROLE erteilt wird, kann die Rolle auch andere Rollen ändern und löschen. NOCREATEROLE ist die Standardeinstellung.
- INHERIT | NOINHERIT gibt an, ob die Rolle die Berechtigungen von Rollen erbt, deren Mitglied sie direkt oder indirekt ist. INHERIT ist die Standardeinstellung.
- LOGIN | NOLOGIN gibt an, ob eine Rolle sich anmelden darf. Eine Rolle mit dem LOGIN-Attribut ist eine Datenbankbenutzerin oder ein Datenbankbenutzer. Rollen ohne das LOGIN-Attribut können zum Verwalten von Datenbankberechtigungen verwendet werden. NOLOGIN ist die Standardeinstellung.
- REPLICATION | NOREPLICATION: gibt an, ob eine Rolle eine Replikationsrolle ist. Eine Rolle muss über dieses Attribut verfügen, um sich im Replikationsmodus mit dem Server zu verbinden und um Replikationsslots zu erstellen oder zu löschen. Das Attribut REPLICATION kennzeichnet eine berechtigte Rolle, die nur für die Replikation genutzt werden sollte. NOREPLICATION ist die Standardeinstellung. Sie müssen Mitglied von azure_pg_admin sein, um diese Rolle erstellen zu können.
- BYPASSRLS | NOBYPASSRLS: gibt an, ob eine Rolle alle Richtlinien für Sicherheit auf Zeilenebene (Row-Level Security, RLS) umgeht.
- CONNECTION LIMIT (connlimit) gibt an, wie viele gleichzeitige Verbindungen eine Rolle herstellen kann, die sich anmelden darf. Der Standardwert ist -1. Dieser Parameter schränkt die Anzahl gleichzeitiger Verbindungen nicht ein.
- [ ENCRYPTED ] PASSWORD 'password'| PASSWORD NULL: dient zum Festlegen des Kennworts der Rolle. Ein Kennwort wird nur von Rollen mit dem Attribut LOGIN benötigt. Wenn kein Kennwort angegeben wird, lautet das Kennwort NULL, woraufhin die Kennwortauthentifizierung fehlschlägt. Alternativ können Sie PASSWORD NULL explizit angeben.
- VALID UNTIL (Zeitstempel): Datum und Uhrzeit, nach der das Kennwort der Rolle nicht mehr gültig ist. Falls keine Angabe erfolgt, gibt es keine zeitliche Begrenzung für das Kennwort.
- IN ROLE role_name: eine oder mehrere Rollen, denen die neue Rolle als neues Mitglied hinzugefügt wird. Es gibt keine Möglichkeit, eine neue Rolle als Administratorin oder Administrator hinzuzufügen. Verwenden Sie den Befehl GRANT.
- IN GROUP role_name: eine veraltete Alternative für IN ROLE.
- ROLE role_name: Eine oder mehrere Rollen werden als Mitglieder der neuen Rolle hinzugefügt. (Durch diese Änderung wird die neue Rolle praktisch zu einer Gruppe.)
- ADMIN role_name: Die Klausel ADMIN entspricht ROLE, aber die benannten Rollen werden der neuen Rolle WITH ADMIN OPTION hinzugefügt, wodurch sie das Recht erhalten, anderen die Mitgliedschaft in dieser Rolle zu gewähren.
Hinweis
Sie können die Attribute einer Rolle mit ALTER ROLE ändern und eine Rolle mit DROP ROLE entfernen.