Auf dieser Seite erfahren Sie, wie Cloud SQL mit PostgreSQL-Nutzern und -Rollen arbeitet. Mit PostgreSQL-Rollen können Sie den Zugriff und die Funktionen von Nutzern steuern, die auf eine PostgreSQL-Instanz zugreifen.
Eine vollständige Dokumentation zu PostgreSQL-Rollen finden Sie unter Datenbankrollen in der PostgreSQL-Dokumentation. Informationen zum Erstellen und Verwalten von Cloud SQL-Nutzern finden Sie unter Nutzer erstellen und verwalten.
Unterschied zwischen Nutzern und Rollen
PostgreSQL-Rollen können eine einzelne Rolle oder eine Gruppe von Rollen darstellen.
Ein Nutzer ist eine Rolle mit der Berechtigung zur Anmeldung (die Rolle hat das Attribut LOGIN
). Da alle Rollen, die von Cloud SQL erstellt werden, das Attribut LOGIN
enthalten, verwendet Cloud SQL die Begriffe Rolle und Nutzer synonym.
Wenn Sie jedoch eine Rolle mit dem psql
-Client erstellen, hat die Rolle nicht unbedingt das Attribut LOGIN
.
Alle PostgreSQL-Nutzer müssen ein Passwort haben. Sie können sich nicht mit einem Nutzer anmelden, der kein Passwort hat.
Einschränkungen und Berechtigungen für Superuser
Cloud SQL for PostgreSQL ist ein verwalteter Dienst, daher wird der Zugriff auf bestimmte Systemprozeduren und -tabellen eingeschränkt, für die erweiterte Berechtigungen erforderlich sind. In Cloud SQL können Kunden keine Nutzer mit Superuser-Attributen erstellen oder darauf zugreifen.
Sie können keine Datenbanknutzer erstellen, die Superuser-Berechtigungen haben. Sie können jedoch Datenbanknutzer mit der Rolle cloudsqlsuperuser
erstellen, die einige dieser Superuser-Berechtigungen hat, darunter:
- Erweiterungen erstellen, die Superuser-Berechtigungen erfordern.
- Ereignistrigger erstellen.
- Replikationsnutzer erstellen.
- Replikationspublikationen und -abos erstellen.
Führen Sie die Anweisungen
CREATE CAST
undDROP CAST
als Datenbanknutzer mit der Rollecloudsqlsuperuser
aus. Dieser Nutzer muss jedoch die BerechtigungUSAGE
für die Quell- und Zieldatentypen haben. Beispielsweise kann ein Nutzer eine Umwandlung erstellen, die den Quelldatentypint
in den Zieldatentypboolean
konvertiert.- Vollständiger Zugriff auf die Katalogtabelle
pg_largeobject
.
PostgreSQL-Standardnutzer
Wenn Sie eine neue Cloud SQL for PostgreSQL-Instanz erstellen, wird der Standardadministrator postgres
erstellt, aber nicht das zugehörige Passwort. Sie müssen ein Passwort für diesen Nutzer festlegen, bevor Sie sich anmelden können. Dies können Sie entweder in der Google Cloud Console oder mit dem folgenden gcloud
-Befehl tun:
gcloud sql users set-password postgres \ --instance=INSTANCE_NAME \ --password=PASSWORD
Der postgres
-Nutzer gehört zur cloudsqlsuperuser
-Rolle und hat die folgenden Attribute (Berechtigungen): CREATEROLE
, CREATEDB
und LOGIN
. Er hat nicht die Attribute SUPERUSER
oder REPLICATION
.
Ein cloudsqlimportexport
-Standardnutzer wird mit den minimalen Berechtigungen erstellt, die für CSV-Importe- und -Exporte erforderlich sind. Sie können Ihre eigenen Nutzer erstellen, um diese Vorgänge auszuführen. Wenn Sie das nicht tun, wird der cloudsqlimportexport
-Standardnutzer verwendet. Der cloudsqlimportexport
-Nutzer ist ein Systemnutzer, der von Kunden nicht direkt verwendet werden kann.
Cloud SQL-IAM-Nutzer für die IAM-Datenbankauthentifizierung
IAM ist in Cloud SQL über das Feature der IAM-Datenbankauthentifizierung eingebunden. Wenn Sie Instanzen mit diesem Feature erstellen, können sich IAM-Nutzer mit ihrem IAM-Nutzernamen und -Passwort bei der Instanz anmelden. Der Vorteil der Verwendung der IAM-Datenbankauthentifizierung besteht darin, dass Sie die vorhandenen IAM-Anmeldedaten eines Nutzers verwenden können, wenn Sie ihm Zugriff auf eine Datenbank gewähren. Wenn der Nutzer die Organisation verlässt, wird sein IAM-Konto gesperrt und der Zugriff wird automatisch aufgehoben. Weitere Informationen zur IAM-Datenbankauthentifizierung finden Sie unter Cloud SQL-IAM-Datenbankauthentifizierung.
Weitere PostgreSQL-Nutzer
Sie können weitere PostgreSQL-Nutzer oder -Rollen erstellen. Alle von Ihnen mit Cloud SQL erstellten Nutzer gehören zur Rolle cloudsqlsuperuser
und haben dieselben Attribute wie der postgres
-Nutzer: CREATEROLE
, CREATEDB
und LOGIN
. Mit dem Befehl ALTER ROLE können Sie die Attribute von Nutzern ändern.
Wenn Sie einen neuen Nutzer mit dem psql
-Client erstellen, können Sie ihn mit einer anderen Rolle verknüpfen oder ihm andere Attribute zuweisen.
Zugriff auf die Ansicht pg_shadow
und die Tabelle pg_authid
Durch Verwendung der Ansicht pg_shadow
können Sie mit den Attributen von Rollen arbeiten, die in der Katalogtabelle pg_authid
als rolcanlogin
markiert sind.
Die Ansicht pg_shadow
enthält gehashte Passwörter und andere Attribute der Rollen (Nutzer), die sich in einem Cluster anmelden dürfen. Die Katalogtabelle pg_authid
enthält gehashte Passwörter und andere Attribute für alle Datenbankrollen.
In Cloud SQL können Kunden nicht mit den Standardberechtigungen auf die Ansicht pg_shadow
oder die Tabelle pg_authid
zugreifen. Der Zugriff auf Rollennamen und gehashte Passwörter ist jedoch in bestimmten Situationen nützlich, einschließlich:
- Proxys oder Load-Balancing mit vorhandenen Nutzern und Passwörtern einrichten
- Nutzer ohne Änderung der Passwörter migrieren
- Benutzerdefinierte Lösungen für die Verwaltung von Passwortrichtlinien implementieren
Flags für die Ansicht pg_shadow
und die Tabelle pg_authid
festlegen
Legen Sie das Flag cloudsql.pg_shadow_select_role
auf einen PostgreSQL-Rollennamen fest, um auf die Ansicht pg_shadow
zuzugreifen. Legen Sie für das Flag cloudsql.pg_authid_select_role
einen PostgreSQL-Rollennamen fest, um auf die Tabelle pg_authid
zuzugreifen.
Wenn cloudsql.pg_shadow_select_role
vorhanden ist, dann hat es schreibgeschützt (SELECT
)-Zugriff auf die pg_shadow
-Ansicht: Wenn das cloudsql.pg_authid_select_role
vorhanden ist, hat es SELECT
-Zugriff auf die Tabelle pg_authid
.
Wenn eine der Rollen nicht vorhanden ist, haben die Einstellungen keine Auswirkungen, aber es tritt kein Fehler auf.
Wenn ein Nutzer versucht, auf die Ansicht oder die Tabelle zuzugreifen, wird jedoch ein Fehler protokolliert.
Der Fehler wird im PostgreSQL-Datenbanklog protokolliert: cloudsql.googleapis.com/postgres.log
.
Informationen zum Aufrufen dieses Logs finden Sie unter Instanzlogs ansehen.
Prüfen Sie, ob die konfigurierten Rollen vorhanden sind und das Flag cloudsql.pg_shadow_select_role
oder cloudsql.pg_authid_select_role
keinen Tippfehler enthält. Sie können auch die Funktion pg_has_role
verwenden, um zu prüfen, ob ein Nutzer Mitglied dieser Rollen ist. Informationen zu dieser Funktion finden Sie auf der Seite Systeminformationsfunktionen und Operatoren.
Sie können das Flag cloudsql.pg_shadow_select_role
oder cloudsql.pg_authid_select_role
mit der PostgreSQL-Rollenmitgliedschaft verwenden, um den Zugriff von pg_shadow
oder pg_authid
für mehrere Nutzer zu verwalten.
Änderungen an einem der Flags erfordern keinen Neustart der Datenbank.
Weitere Informationen zu unterstützten Flags finden Sie unter Datenbank-Flags konfigurieren.
Format für die Passwortspeicherung auswählen
Cloud SQL for PostgreSQL speichert Nutzerpasswörter in einem Hash-Format.
Sie können das Flag password_encryption
verwenden, um den Verschlüsselungsalgorithmus auf md5
oder scram-sha-256
festzulegen. Der md5
-Algorithmus bietet die größtmögliche Kompatibilität. scram-sha-256
ist zwar sicherer, dafür aber möglicherweise nicht mit älteren Clients kompatibel.
Wenn Sie den pg_shadow
-Zugriff zum Exportieren von Rollenattributen aus einer Cloud SQL-Instanz aktivieren, sollten Sie den sichersten Algorithmus verwenden, der von Ihren Clients unterstützt wird.
In der PostgreSQL-Dokumentation finden Sie auch weitere Informationen:
Nächste Schritte
- Nutzer erstellen und verwalten
- Datenbanken erstellen und verwalten
- Siehe PostgreSQL-Dokumentation zu Rollen
- Verbindungsoptionen für Instanzen