Benutzer, Rollen und Berechtigungen verwalten
PostgreSQL verwendet ein Rollensystem, um Datenbankberechtigungen zu verwalten. Rollen werden verwendet, um einem einzelnen Benutzer oder einer Gruppe von Benutzern eine Gruppe von Berechtigungen zu erteilen. Bestimmen Sie Rollen, Gruppen und
Berechtigungen in Ihrer Implementierung mit dem psql
-Befehl \du
.
Wenn Sie eine neue Einrichtung in IBM Cloud bereitstellen, erhalten Sie automatisch einen admin
-Benutzer für den Zugriff und die Verwaltung von PostgreSQL.
Der Benutzer admin
Wenn Sie eine neue Einrichtung in IBM Cloud bereitstellen, erhalten Sie automatisch einen admin
-Benutzer für den Zugriff und die Verwaltung von PostgreSQL. Sobald Sie das Administratorkennwort festgelegt haben,
können Sie sich damit mit Ihrer Einrichtung verbinden.
Wenn admin
eine Ressource in einer Datenbank erstellt, z. B. eine Tabelle, ist admin
Eigentümer dieses Objekts. Ressourcen, die von admin
erstellt werden, sind für andere Benutzer nicht zugänglich, es sei
denn, Sie erteilen ihnen ausdrücklich die entsprechenden Rechte.
Der größte Unterschied zwischen dem Benutzer admin
und allen anderen Benutzern, die Sie zu Ihrer Bereitstellung hinzufügen, ist die pg_monitor
und pg_signal_backend
rollen. Die Rolle pg_monitor
stellt eine Gruppe von Berechtigungen bereit, die den Benutzer mit Administratorberechtigung
für die Überwachung des Datenbankservers qualifiziert. Die Rolle pg_signal_backend
ermöglicht es dem Administratorbenutzer, Signale zu senden, um Abfragen und Verbindungen abzubrechen, die von anderen Benutzern eingeleitet wurden.
Er kann keine Signale an Prozesse senden, deren Eigner Superuser sind.
Sie können auch den Benutzer admin
verwenden, um diese beiden Rollen anderen Benutzern in Ihrer Einrichtung zuzuweisen.
Um anderen Datenbankbenutzern die Möglichkeit zu geben, Abfragen abzubrechen, gewähren Sie die Rolle pg_signal_backend
des Benutzers admin
. Verwenden Sie einen Befehl wie den folgenden:
GRANT pg_signal_backend TO joe;
Damit der Benutzer joe
Back-Ends abbrechen kann, erteilen Sie allen Benutzern mit der Rolle ibm-cloud-base-user
die Berechtigung pg_signal_backend
mit einem Befehl wie dem folgenden:
GRANT pg_signal_backend TO "ibm-cloud-base-user";
Diese Berechtigung ermöglicht es dem Benutzer oder den Benutzern, alle Verbindungen zur Datenbank zu beenden.
Verwenden Sie zum Einrichten eines bestimmten Überwachungsbenutzers mary
einen Befehl wie den folgenden:
GRANT pg_monitor TO mary;
Erteilen Sie allen Benutzern mit der Rolle ibm-cloud-base-user
mit einem Befehl wie dem folgenden pg_signal_backend
:
GRANT pg_monitor TO "ibm-cloud-base-user";
Festlegen des Admin-Passworts in der Benutzeroberfläche
Legen Sie Ihr Admin-Passwort über die Benutzeroberfläche fest, indem Sie Ihre Instanz aus der Ressourcenliste im IBM Cloud Dashboard auswählen. Wählen Sie anschließend Einstellungen aus. Geben Sie dann im Abschnitt Passwort für Datenbankadministrator ändern ein neues Passwort ein und klicken Sie auf Passwort ändern.
Einstellen des Admin-Passworts in der CLI
Verwenden Sie den Befehl cdb user-password
aus dem Cloud Databases-CLI-Plug-in, um das admin
-Kennwort festzulegen.
Um beispielsweise das Administratorkennwort für eine Bereitstellung namens example-deployment
festzulegen, verwenden Sie den folgenden Befehl:
ibmcloud cdb user-password example-deployment admin <NEW_PASSWORD>
Festlegen des Admin-Kennworts in der API
Der Basisendpunkt, der im Abschnitt Bereitstellungsdetails des Übersichtsfensters Ihres Dienstes angezeigt wird, bietet die Basis URL für den Zugriff auf diese Bereitstellung über die API. Verwenden Sie ihn zusammen mit dem Endpunkt Set specified user's password, um das Administratorkennwort festzulegen.
curl -X PATCH `https://api.{region}.databases.cloud.ibm.com/v5/ibm/deployments/{id}/users/admin` \
-H `Authorization: Bearer <>` \
-H `Content-Type: application/json` \
-d `{"password":"newrootpasswordsupersecure21"}` \
Serviceberechtigungsnachweis-Benutzer
Benutzer, die Sie über die Anzeige Serviceberechtigungsnachweise erstellen, sind Mitglieder von ibm-cloud-base-user
.
Sie können sich anmelden, Benutzer erstellen und Datenbanken erstellen.
Wenn ein Benutzer in einer Gruppe eine Ressource in einer Datenbank erstellt, wie z. B. eine Tabelle, haben alle Benutzer, die sich in derselben Gruppe befinden, Zugriff auf diese Ressource. Ressourcen, die von einem beliebigen Benutzer in ibm-cloud-base-user
erstellt werden, sind für die anderen Benutzer in ibm-cloud-base-user
, einschließlich des Administratorbenutzers, zugänglich.
Über die Befehlszeilenschnittstelle erstellte Benutzer
Benutzer, die Sie über das Cloud Databases CLI-Plug-in erstellen, sind auch Mitglieder von ibm-cloud-base-user
. Sie können sich anmelden, Benutzer erstellen und Datenbanken erstellen.
Wenn ein Benutzer eine Ressource in einer Datenbank erstellt, wie z. B. eine Tabelle, haben alle Benutzer, die sich in derselben Gruppe befinden, Zugriff auf diese Ressource. Ressourcen, die von einem der Benutzer in ibm-cloud-base-user
erstellt wurden, sind für andere Benutzer in ibm-cloud-base-user
zugänglich, einschließlich des Benutzers admin
.
Benutzer, die direkt über die API und CLI erstellt werden, werden nicht unter Serviceberechtigungsnachweise angezeigt, aber Sie können sie hinzufügen, wenn Sie möchten.
Über die API erstellte Benutzer
Benutzer, die Sie über Cloud Databases-API erstellen, sind auch Mitglieder von ibm-cloud-base-user
. Sie können sich anmelden, Benutzer
erstellen und Datenbanken erstellen.
Wenn ein Benutzer eine Ressource in einer Datenbank erstellt, wie z. B. eine Tabelle, haben alle Benutzer, die sich in derselben Gruppe befinden, Zugriff auf diese Ressource. Ressourcen, die von einem beliebigen Benutzer in ibm-cloud-base-user
erstellt werden, sind für die anderen Benutzer in ibm-cloud-base-user
, einschließlich des Administratorbenutzers, zugänglich.
Benutzer, die direkt über die API und CLI erstellt werden, werden nicht unter Serviceberechtigungsnachweise angezeigt, aber Sie können sie hinzufügen, wenn Sie möchten.
Benutzer mit Leseberechtigung
ibm-cloud-base-user-ro
verwaltet die Berechtigungen für Benutzer, die für den Zugriff auf Nur-Lese-Replikate erstellt werden. Weitere Informationen finden Sie unter Konfiguration von schreibgeschützten Repliken.
Der Benutzer repl
Der Benutzer repl
verfügt über Replikationsberechtigungen und wird verwendet, wenn Sie das Plug-in wal2json
für Ihre Bereitstellung
aktivieren. Legen Sie bei der Aktivierung von wal2json
das Kennwort für den Benutzer repl
fest, damit das Plug-in wal2json
es verwenden kann.
Weitere ibm
-Benutzer
Wenn Sie den Befehl \du
mit Ihrem admin
-Konto ausführen, werden Sie feststellen, dass es Benutzer mit den Namen ibm
, ibm-cloud-base-user
, ibm-replication
und ibm-rewind
gibt.
ibm-cloud-base-user
wird als Vorlage für die Verwaltung von Gruppenrollen für andere Benutzer verwendet. Dieser Benutzer wird zum Verwalten der über die CLI und die API erstellten Benutzer und zur Ermöglichung der Integration mit
der Benutzererstellung über Serviceberechtigungsnachweise in IBM Cloud verwendet. Ein Benutzer, der Member von ibm-cloud-base-user
ist, übernimmt die Erstellungsrolle und erstellt Datenbankattribute aus ibm-cloud-base-user
.
Der ibm-cloud-base-user
-Benutzer kann sich nicht anmelden.
Das Konto ibm
ist der einzige Superuser für Ihre Bereitstellung. Ein Superuser-Konto steht Ihnen bei uns nicht zur Verfügung. Dieser Benutzer ist ein interner Verwaltungsaccount, der die Stabilität Ihrer Implementierung verwaltet.
Mit psql
erstellte Benutzer
Sie können die Erstellung von Benutzern über IBM Cloud vollständig umgehen und Benutzer direkt in PostgreSQL mit psql
erstellen. Dies ermöglicht die Nutzung der PostgreSQL's Rollen- und Benutzerverwaltung. Für die in psql
erstellten Benutzer/Rollen müssen alle Berechtigungen manuell festgelegt werden, ebenso wie die Berechtigungen für die Objekte, die sie erstellen.
Benutzer, die direkt in PostgreSQL erstellt werden, werden nicht unter Serviceberechtigungsnachweise angezeigt, aber Sie können hinzufügen, wenn Sie möchten.
Beachten Sie, dass diese Benutzer nicht in IAM-Steuerelemente integriert sind, auch wenn sie zu Serviceberechtigungsnachweise hinzugefügt wurden.
Zusätzliche Benutzer und Verbindungszeichenfolgen
Der Zugriff auf Ihre Databases for PostgreSQL Bereitstellung ist nicht auf den Benutzer admin
beschränkt. Fügen Sie Benutzer in der Benutzeroberfläche unter Service-Anmeldeinformationen, mit dem Cloud Databases CLI-Plug-in oder der Cloud Databases API hinzu.
Alle Benutzer in Ihrer Bereitstellung können die Verbindungszeichenfolgen verwenden, einschließlich Verbindungszeichenfolgen für öffentliche oder private Endpunkte.
Wenn Sie einen Benutzer erstellen, werden ihm bestimmte Datenbankrollen und -berechtigungen zugeordnet. Zu diesen Berechtigungen gehören die Möglichkeit, sich anzumelden, Datenbanken zu erstellen und andere Benutzer zu erstellen.
Benutzer in der Benutzeroberfläche anlegen
- Wechseln Sie zum Service-Dashboard für Ihren Service.
- Klicken Sie auf Dienstanmeldeinformationen, um Dienstanmeldeinformationen zu öffnen.
- Klicken Sie auf Neuer Berechtigungsnachweis.
- Wählen Sie einen beschreibenden Namen für Ihren neuen Berechtigungsnachweis aus.
- Optional Geben Sie an, ob die neuen Anmeldedaten einen öffentlichen oder privaten Endpunkt verwenden sollen. Verwenden Sie entweder
{ "service-endpoints": "public" }
/{ "service-endpoints": "private" }
im Feld Inline-Konfigurationsparameter hinzufügen, um Verbindungszeichenfolgen unter Verwendung des angegebenen Endpunkts zu erzeugen. Die Verwendung des Endpunkts wird nicht erzwungen. Es wird nur gesteuert, welche Hostnamen in den Verbindungszeichenfolgen enthalten sind. Private Endpunkte werden standardmäßig erzeugt. - Klicken Sie auf Hinzufügen, um die neuen Berechtigungsnachweise bereitzustellen. Ein Benutzername und Kennwort sowie ein zugehöriger Datenbankbenutzer in der PostgreSQL-Datenbank werden automatisch generiert.
Die neuen Berechtigungsnachweise werden in der Tabelle angezeigt und die Verbindungszeichenfolgen sind als JSON in einem Click-to-Copy-Feld unter Berechtigungsnachweise anzeigen verfügbar.
Anlegen von Benutzern über die CLI
Wenn Sie Ihren Service über die IBM Cloud-CLI und das Cloud Database-Plug-in verwalten, können Sie mit cdb user-create
einen neuen Benutzer erstellen. Um zum Beispiel einen
neuen Benutzer für eine "Beispiel-Bereitstellung" zu erstellen, verwenden Sie den folgenden Befehl:
ibmcloud cdb user-create example-deployment <NEW_USER_NAME> <NEW_PASSWORD>
Nachdem die Task abgeschlossen ist, können Sie die Verbindungszeichenfolgen des neuen Benutzers mit dem Befehl ibmcloud cdb deployment-connections
abrufen.
Benutzer über die API erstellen
Der Basisendpunkt, der in der Anzeige Übersicht unter Bereitstellungsdetails angezeigt wird, stellt die Basis-URL für den Zugriff auf diese Bereitstellung über die API bereit. Verwenden Sie zum Erstellen und Verwalten
von Benutzern die Basis-URL mit dem Endpunkt /users
.
curl -X POST 'https://api.{region}.databases.cloud.ibm.com/v4/ibm/deployments/{id}/users' \
-H "Authorization: Bearer $APIKEY" \
-H "Content-Type: application/json" \
-d '{"username":"jane_smith", "password":"newsupersecurepassword"}'
Nach Beendigung der Aufgabe rufen Sie die Verbindungszeichenfolgen des neuen Benutzers vom Endpunkt /users/{userid}/connections
ab.
Benutzer zu Serviceberechtigungsnachweise hinzufügen
Beim Erstellen eines neuen Benutzers über die CLI oder API werden die Verbindungszeichenfolgen dieses Benutzers nicht automatisch in Serviceberechtigungsnachweise eingetragen. Um sie hinzuzufügen, erstellen Sie einen neuen Berechtigungsnachweis mit den vorhandenen Benutzerinformationen.
Geben Sie den Benutzernamen und das Kennwort im JSON-Feld Integrierte Konfigurationsparameter hinzufügen ein oder geben Sie eine Datei an, in der die JSON-Informationen gespeichert sind. Wenn Sie beispielsweise {"existing_credentials":{"username":"Robert","password":"supersecure"}}
in das Feld eingeben, werden Serviceberechtigungsnachweise generiert, wobei der Benutzername "Robert" und das Kennwort "supersecure" in Verbindungszeichenfolgen eingetragen werden.
Bei der Generierung von Berechtigungsnachweisen von einem vorhandenen Benutzer erfolgt keine Überprüfung oder Erstellung dieses Benutzers.