Auf dieser Seite wird beschrieben, wie Sie die detaillierte Zugriffssteuerung für Spanner für Datenbanken mit GoogleSQL- und PostgreSQL-Dialekt konfigurieren.
Weitere Informationen zur detaillierten Zugriffssteuerung finden Sie unter Detaillierte Zugriffssteuerung.
So konfigurieren Sie die detaillierte Zugriffssteuerung:
Gewähren Sie IAM-Hauptkonten (Identity and Access Management) Zugriff auf Datenbankrollen.
Informieren Sie Nutzer und Entwickler, dass sie Datenbankrollen verwenden müssen.
Nutzer der detaillierten Zugriffssteuerung müssen dann eine Datenbankrolle angeben, um Abfragen, DML- oder Zeilenvorgänge für die Datenbank auszuführen.
Hinweise
Achten Sie darauf, dass jedem Hauptkonto, das ein Nutzer mit fein abgestimmter Zugriffssteuerung sein soll, die IAM-Rolle Cloud Spanner Viewer
(roles/spanner.viewer
) zugewiesen ist. Diese Rolle wird auf Projektebene für Nutzer empfohlen, die in der Google Cloud -Konsole mit Spanner-Ressourcen interagieren müssen.
Eine Anleitung finden Sie unter Berechtigungen für Principals erteilen.
Datenbankrollen erstellen und Berechtigungen gewähren
Eine Datenbankrolle ist eine Sammlung von detaillierten Zugriffsberechtigungen. Sie können für jede Datenbank bis zu 100 Datenbankrollen erstellen.
Legen Sie Rollen und Rollenhierarchien in Ihrer Datenbank fest und codieren Sie sie in DDL. Wie bei anderen Schemaänderungen in Spanner empfehlen wir dringend, Schemaänderungen in einem Batch auszuführen und nicht einzeln. Weitere Informationen finden Sie unter Häufigkeit von Schemaaktualisierungen begrenzen.
Console
So erstellen Sie eine Datenbankrolle und gewähren ihr detaillierte Zugriffsberechtigungen:
Rufen Sie in der Google Cloud -Console die Seite Instanzen auf.
Wählen Sie die Instanz mit der Datenbank aus, für die Sie die Rolle hinzufügen möchten.
Wählen Sie die Datenbank aus.
Klicken Sie auf der Seite Übersicht auf Spanner Studio.
Führen Sie auf der Seite Spanner Studio für jede Datenbankrolle, die Sie erstellen und der Sie Berechtigungen erteilen möchten, die folgenden Schritte aus:
Geben Sie zum Erstellen der Rolle die folgende Anweisung ein:
CREATE ROLE ROLE_NAME;
Klicken Sie noch nicht auf Senden.
Wenn Sie der Rolle Berechtigungen zuweisen möchten, geben Sie in der nächsten Zeile nach der
CREATE ROLE
-Anweisung eineGRANT
-Anweisung ein.Details zur Syntax der
GRANT
-Anweisung finden Sie unter GoogleSQL-Datendefinitionssprache. Informationen zu Berechtigungen finden Sie unter Berechtigungen für die detaillierte Zugriffssteuerung.Wenn Sie beispielsweise der Datenbankrolle
hr_manager
die BerechtigungenSELECT
,INSERT
undUPDATE
für die Tabellenemployees
undcontractors
zuweisen möchten, geben Sie die folgende Anweisung ein:GoogleSQL
GRANT SELECT, INSERT, UPDATE ON TABLE employees, contractors TO ROLE hr_manager;
PostgreSQL
GRANT SELECT, INSERT, UPDATE ON TABLE employees, contractors TO hr_manager;
Sie können eine DDL-Vorlage für die
GRANT
-Anweisung verwenden. Rufen Sie im Bereich Explorer die Rolle auf, für die Sie Berechtigungen gewähren möchten. Klicken Sie auf Aktionen ansehen und wählen Sie die Art der Berechtigung aus, für die Sie dieser Rolle Zugriff gewähren möchten. Die VorlagenbeschreibungGRANT
wird in einem neuen Editortab eingefügt.
Klicken Sie auf Senden.
Wenn Ihre DDL Fehler enthält, gibt die Google Cloud -Console einen Fehler zurück.
gcloud
Verwenden Sie den Befehl gcloud spanner databases ddl update
mit CREATE ROLE
- und GRANT
-Anweisungen, um eine Datenbankrolle zu erstellen und ihr detaillierte Zugriffsberechtigungen zu gewähren.
Details zur Syntax der Anweisungen CREATE ROLE
und GRANT
finden Sie unter GoogleSQL-Datendefinitionssprache.
Mit dem folgenden Befehl können Sie beispielsweise eine Datenbankrolle erstellen und ihr Berechtigungen für eine oder mehrere Tabellen gewähren.
GoogleSQL
gcloud spanner databases ddl update DATABASE_NAME --instance=INSTANCE_NAME \ --ddl='CREATE ROLE ROLE_NAME; GRANT PRIVILEGES ON TABLE TABLES TO ROLE ROLE_NAME;'
PostgreSQL
gcloud spanner databases ddl update DATABASE_NAME --instance=INSTANCE_NAME \ --ddl='CREATE ROLE ROLE_NAME; GRANT PRIVILEGES ON TABLE TABLES TO ROLE_NAME;'
Ersetzen Sie Folgendes:
PRIVILEGES
ist eine durch Kommas getrennte Liste von Berechtigungen für die detaillierte Zugriffssteuerung. Informationen zu Berechtigungen finden Sie unter Berechtigungen für die detaillierte Zugriffssteuerung.TABLES
ist eine durch Kommas getrennte Liste von Tabellen.
Wenn Sie beispielsweise SELECT
, INSERT
und UPDATE
für die Tabellen employees
und contractors
der Datenbankrolle hr_analyst
in der Datenbank hrdb1
in der Instanz hr
zuweisen möchten, geben Sie Folgendes ein:
GoogleSQL
gcloud spanner databases ddl update hrdb1 --instance=hr \ --ddl='CREATE ROLE hr_analyst; GRANT SELECT, INSERT, UPDATE ON TABLE employees, contractors TO ROLE hr_analyst;'
PostgreSQL
gcloud spanner databases ddl update hrdb1 --instance=hr \ --ddl='CREATE ROLE hr_analyst; GRANT SELECT, INSERT, UPDATE ON TABLE employees, contractors TO hr_analyst;'
Clientbibliotheken
In diesen Codebeispielen wird eine Datenbankrolle erstellt und gelöscht.
C++
C#
Go
Java
Node.js
PHP
Python
Ruby
Hierarchie von Rollen mit Vererbung erstellen
Sie können eine Hierarchie von Datenbankrollen erstellen, indem Sie einer Datenbankrolle eine andere zuweisen. Untergeordnete Rollen (Mitgliedsrollen) übernehmen Berechtigungen von der übergeordneten Rolle.
Mit der folgenden Anweisung können Sie einer anderen Datenbankrolle eine Datenbankrolle gewähren:
GoogleSQL
GRANT ROLE role1 TO ROLE role2;
PostgreSQL
GRANT role1 TO role2;
Weitere Informationen finden Sie unter Hierarchien und Übernahme von Datenbankrollen.
IAM-Hauptkonten Zugriff auf Datenbankrollen gewähren
Damit ein Hauptkonto eine Datenbankrolle für den Zugriff auf Spanner-Ressourcen verwenden kann, müssen Sie ihm Zugriff auf die Datenbankrolle gewähren.
Console
So gewähren Sie einem IAM-Hauptkonto Zugriff auf Datenbankrollen:
Klicken Sie auf der Seite Übersicht der Datenbank auf INFOFELD ANSEHEN, falls das Infofeld noch nicht geöffnet ist.
Klicken Sie auf HAUPTKONTO HINZUFÜGEN.
Geben Sie im Bereich Zugriff auf database_name gewähren unter Hauptkonten hinzufügen ein oder mehrere IAM-Hauptkonten an.
Wählen Sie unter Rollen zuweisen im Menü Rolle auswählen die Option Cloud Spanner > Nutzer mit Cloud Spanner-Detaillierten Zugriff aus.
Sie müssen diese Rolle jedem Hauptkonto nur einmal gewähren. Dadurch wird der Hauptbenutzer zu einem Nutzer mit detaillierter Zugriffssteuerung.
Klicken Sie auf WEITERE ROLLE HINZUFÜGEN.
Wählen Sie im Menü Rolle auswählen die Option Cloud Spanner > Nutzer der Cloud Spanner-Datenbankrolle aus.
So erstellen Sie die IAM-Bedingung, in der die zu gewährenden Rollen angegeben werden:
Klicken Sie neben der Rolle „Nutzer einer Cloud Spanner-Datenbankrolle“ auf IAM-BEDINGUNG HINZUFÜGEN.
Geben Sie im Bereich Bedingung hinzufügen einen Titel und eine optionale Beschreibung für die Bedingung ein.
Wenn Sie eine einzelne Datenbankrolle gewähren, geben Sie den Rollennamen in der Bedingung an. Wenn Sie mehrere Rollen gewähren, können Sie etwas über die Rollen angeben.
Klicken Sie auf BEDINGUNGSEDITOR.
Geben Sie im Feld Ausdruck den folgenden Code ein:
resource.type == "spanner.googleapis.com/DatabaseRole" && resource.name.endsWith("/ROLE")
Ersetzen Sie
ROLE
durch den Namen Ihrer Rolle.Wenn Sie dem Hauptkonto Zugriff auf mehrere Rollen gewähren möchten, fügen Sie weitere Bedingungen mit dem Operator oder (
||
) hinzu, wie im folgenden Beispiel gezeigt:resource.type == "spanner.googleapis.com/DatabaseRole" && (resource.name.endsWith("/ROLE1") || resource.name.endsWith("/ROLE2"))
Mit diesem Code werden zwei Rollen gewährt. Ersetzen Sie
ROLE1
undROLE2
durch Ihre Rollennamen. Wenn Sie mehr als zwei Rollen gewähren möchten, fügen Sie weitere oder-Bedingungen hinzu.Sie können jeden von IAM unterstützten Bedingungsausdruck verwenden. Weitere Informationen finden Sie unter Übersicht über IAM-Bedingungen.
Klicken Sie auf Speichern.
Prüfen Sie im vorherigen Bereich, ob die Bedingung in der Spalte IAM-Bedingung neben dem Feld Rolle angezeigt wird.
Klicken Sie auf Speichern.
Im Infofeld unter Rolle/Hauptkonto wird für jede definierte Bedingung Nutzer einer Cloud Spanner-Datenbankrolle angezeigt.
Die Zahl in Klammern neben der Bedingung gibt die Anzahl der Hauptkonten an, denen die Datenbankrolle durch diese Bedingung gewährt wird. Klicken Sie auf den Aufklapppfeil, um die Liste der Hauptbevollmächtigten aufzurufen.
So korrigieren Sie Fehler in den Namen oder Bedingungen von Datenbankrollen oder fügen einem Prinzipal zusätzliche Datenbankrollen hinzu:
Maximieren Sie den Eintrag Nutzer einer Cloud Spanner-Datenbankrolle, in dem die gewünschte Bedingung aufgeführt ist.
Klicken Sie neben einem Hauptkonto auf das Symbol Bearbeiten (Stift).
Führen Sie im Bereich Zugriff auf database_name eine der folgenden Aktionen aus:
Klicken Sie auf WEITERE ROLLE HINZUFÜGEN.
Wenn Sie die Bedingung bearbeiten möchten, klicken Sie neben dem Namen der Bedingung auf das Symbol Bearbeiten (Stift). Klicken Sie dann auf der Seite Bedingung bearbeiten auf BEDINGUNG BEARBEITEN, nehmen Sie die gewünschten Änderungen vor und klicken Sie zweimal auf Speichern.
gcloud
So gewähren Sie einem IAM-Hauptkonto Zugriff auf Datenbankrollen:
Aktivieren Sie die detaillierte Zugriffssteuerung für den Hauptbenutzer mit dem Befehl
gcloud spanner databases add-iam-policy-binding
:gcloud spanner databases add-iam-policy-binding DATABASE_NAME \ --instance=INSTANCE_NAME \ --role=roles/spanner.fineGrainedAccessUser \ --member=MEMBER_NAME \ --condition=None
MEMBER_NAME
ist die Kennung für den Hauptberechtigten. Muss das Formatuser|group|serviceAccount:email
oderdomain:domain
haben.Mit diesem Befehl wird das Hauptkonto zu einem Nutzer der detaillierten Zugriffssteuerung. Reichen Sie diesen Befehl nur einmal für jeden Hauptberechtigten ein.
Bei Erfolg gibt der Befehl die gesamte Richtlinie für die Datenbank aus.
So gewähren Sie die Berechtigung zur Verwendung einer oder mehrerer Datenbankrollen mit dem Befehl
gcloud spanner databases add-iam-policy-binding
:gcloud spanner databases add-iam-policy-binding DATABASE_NAME \ --instance=INSTANCE_NAME \ --role=roles/spanner.databaseRoleUser \ --member=MEMBER_NAME \ --condition=CONDITION
MEMBER_NAME
ist die Kennung für den Hauptberechtigten. Muss das Formatuser|group|serviceAccount:email
oderdomain:domain
haben.CONDITION
ist ein IAM-Bedingungsausdruck, der die Rollen angibt, die dem Hauptkonto gewährt werden sollen.CONDITION
hat folgendes Format:--condition='expression=(resource.type == "spanner.googleapis.com/DatabaseRole" && resource.name.endsWith("/ROLE1")),title=TITLE,description=DESCRIPTION'
Wenn Sie dem Hauptkonto Zugriff auf mehrere Rollen gewähren möchten, fügen Sie weitere Bedingungen mit dem Operator oder (
||
) hinzu, wie im folgenden Beispiel gezeigt:--condition='expression=(resource.type == "spanner.googleapis.com/DatabaseRole" && (resource.name.endsWith("/ROLE1") || resource.name.endsWith("/ROLE2"))),title=TITLE,description=DESCRIPTION'
Mit diesem Code werden zwei Rollen gewährt. Ersetzen Sie
ROLE1
undROLE2
durch Ihre Rollennamen. Wenn Sie mehr als zwei Rollen gewähren möchten, fügen Sie mit dem Operator||
weitere oder-Bedingungen hinzu.Sie können jeden von IAM unterstützten Bedingungsausdruck verwenden. Weitere Informationen finden Sie unter Übersicht über IAM-Bedingungen.
Bei Erfolg gibt der Befehl die gesamte Richtlinie für die Datenbank aus.
Im folgenden Beispiel werden dem Hauptkonto
jsmith@example.com
die Datenbankrollenhr_rep
undhr_manager
zugewiesen.gcloud spanner databases add-iam-policy-binding myDatabase \ --instance=myInstance \ --role=roles/spanner.databaseRoleUser \ --member=user:jsmith@example.com \ --condition='expression=(resource.type == "spanner.googleapis.com/DatabaseRole" && (resource.name.endsWith("/hr_rep") || resource.name.endsWith("/hr_manager"))),title=HR roles,description=Grant permissions on HR roles'
Clientbibliotheken
C++
C#
Go
Java
Node.js
PHP
Python
Ruby
Nutzer und Entwickler bitten, Datenbankrollen zu verwenden
Nachdem die Erstkonfiguration der detaillierten Zugriffssteuerung abgeschlossen ist, informieren Sie die Nutzer und App-Entwickler darüber, dass sie jetzt Datenbankrollen verwenden müssen.
Nutzer der detaillierten Zugriffssteuerung müssen eine Datenbankrolle angeben, wenn sie über die Google Cloud -Konsole oder die Google Cloud CLI auf Spanner-Datenbanken zugreifen.
Bei Anwendungen, die die detaillierte Zugriffssteuerung verwenden, muss beim Zugriff auf die Datenbank eine Datenbankrolle angegeben werden.
Weitere Informationen finden Sie unter Auf eine Datenbank mit detaillierter Zugriffssteuerung zugreifen.
Principal zur detaillierten Zugriffssteuerung migrieren
So stellen Sie für einen IAM-Principal die Zugriffssteuerung von der Datenbankebene auf die detaillierte Zugriffssteuerung um:
Aktivieren Sie die detaillierte Zugriffssteuerung für das Hauptkonto und gewähren Sie Zugriff auf alle erforderlichen Datenbankrollen, wie unter IAM-Hauptkonten Zugriff auf Datenbankrollen gewähren beschrieben.
Aktualisieren Sie alle Anwendungen, die als dieses Hauptkonto ausgeführt werden. Geben Sie die entsprechenden Datenbankrollen in Aufrufen von Clientbibliotheksmethoden an.
Entziehen Sie dem Hauptkonto alle IAM-Rollen auf Datenbankebene. So wird der Zugriff für das Hauptkonto nur durch eine Methode gesteuert.
Ausnahme: Für die Interaktion mit Spanner-Ressourcen in derGoogle Cloud -Console müssen alle Nutzer die IAM-Rolle
roles/spanner.viewer
haben.Wenn Sie IAM-Rollen auf Datenbankebene widerrufen möchten, folgen Sie der Anleitung unter Berechtigungen auf Datenbankebene entfernen.
Datenbankrollen auflisten
Sie können die Datenbankrollen auflisten, die mit einer Datenbank verknüpft sind.
Console
Wenn Sie die Datenbankrollen auflisten möchten, geben Sie auf der Spanner Studio-Seite für die Datenbank die folgende Abfrage ein:
GoogleSQL
SELECT * FROM INFORMATION_SCHEMA.ROLES;
PostgreSQL
SELECT * FROM information_schema.enabled_roles;
Die Antwort enthält die aktuelle Rolle und Rollen, deren Berechtigungen die aktuelle Rolle durch Vererbung nutzen kann. Wenn Sie alle Rollen abrufen möchten, verwenden Sie den Befehl der Google Cloud CLI.
gcloud
Geben Sie den folgenden Befehl ein, um eine unbefilterte Liste der Datenbankrollen aufzurufen.
Hierfür ist die Berechtigung spanner.databaseRoles.list
erforderlich.
gcloud spanner databases roles list --database=DATABASE_NAME --instance=INSTANCE_NAME
Clientbibliotheken
C++
C#
Go
Java
Node.js
PHP
Python
Ruby
Einem Nutzer eine Datenbankrolle zuweisen
Führen Sie die folgenden Abfragen aus, um die einer Rolle gewährten Berechtigungen aufzurufen:
GoogleSQL
SELECT * FROM INFORMATION_SCHEMA.TABLE_PRIVILEGES WHERE grantee = 'ROLE_NAME'; SELECT * FROM INFORMATION_SCHEMA.COLUMN_PRIVILEGES WHERE grantee = 'ROLE_NAME'; SELECT * FROM INFORMATION_SCHEMA.CHANGE_STREAM_PRIVILEGES WHERE grantee = 'ROLE_NAME';
INFORMATION_SCHEMA.TABLE_PRIVILEGES
gibt Berechtigungen für Tabellen und Ansichten zurück.
Die Berechtigungen SELECT
, INSERT
und UPDATE
in TABLE_PRIVILEGES
werden auch in COLUMN_PRIVILEGES
angezeigt.
PostgreSQL
SELECT * FROM information_schema.table_privileges WHERE grantee = 'ROLE_NAME'; SELECT * FROM information_schema.column_privileges WHERE grantee = 'ROLE_NAME'; SELECT * FROM information_schema.change_stream_privileges WHERE grantee = 'ROLE_NAME';
information_schema.table_privileges
gibt Berechtigungen für Tabellen und Ansichten zurück.
Die Berechtigungen SELECT
, INSERT
und UPDATE
in table_privileges
werden auch in column_privileges
angezeigt.
Nutzer der detaillierten Zugriffssteuerung aufrufen
Führen Sie den folgenden Befehl aus, um eine Liste der Hauptpersonen aufzurufen, die Nutzer der detaillierten Zugriffssteuerung sind. Zum Ausführen des Befehls muss die Cloud Asset API in Ihrem Projekt aktiviert sein und Sie benötigen die IAM-Berechtigung cloudasset.assets.searchAllIamPolicies
.
gcloud asset search-all-iam-policies \ --scope=projects/PROJECT_NAME \ --query='roles=roles/spanner.fineGrainedAccessUser AND resource=//spanner.googleapis.com/projects/PROJECT_NAME/instances/INSTANCE_NAME/databases/DATABASE_NAME' \ --flatten=policy.bindings[].members[] \ --format='table(policy.bindings.members)'
Die Ausgabe sieht etwa so aus:
MEMBERS user:222larabrown@gmail.com user:baklavainthebalkans@gmail.com serviceAccount:cs-fgac-sa-1@cloud-spanner-demo.google.com.iam.gserviceaccount.com serviceAccount:cs-fgac-sa-2@cloud-spanner-demo.google.com.iam.gserviceaccount.com
Weitere Informationen finden Sie unter API in Ihrem Google Cloud -Projekt aktivieren.
IAM-Hauptkonten mit Zugriff auf eine Datenbankrolle aufrufen
Führen Sie den folgenden Befehl aus, um eine Liste der Hauptpersonen aufzurufen, denen Zugriff auf eine bestimmte Datenbankrolle gewährt wurde. Damit Sie den Befehl ausführen können, muss die Cloud Asset API in Ihrem Projekt aktiviert sein und Sie benötigen die IAM-Berechtigung cloudasset.assets.searchAllIamPolicies
.
gcloud asset search-all-iam-policies \ --scope=projects/PROJECT_NAME \ --query='roles=roles/spanner.databaseRoleUser AND policy:"resource.name" AND policy:/ROLE_NAME AND resource=//spanner.googleapis.com/projects/PROJECT_NAME/instances/INSTANCE_NAME/databases/DATABASE_NAME' \ --flatten=policy.bindings[].members[] \ --format='table(policy.bindings.members)'
Die Ausgabe sieht etwa so aus:
MEMBERS 222larabrown@gmail.com
IAM-Bedingungen für einen Nutzer aufrufen
Wenn Sie eine Liste der IAM-Bedingungen aufrufen möchten, die beim Zuweisen der Rolle Nutzer einer Cloud Spanner-Datenbankrolle an ein Hauptkonto angegeben wurden, führen Sie den folgenden Befehl aus:
gcloud asset search-all-iam-policies \ --scope=projects/PROJECT_NAME \ --query='roles=roles/spanner.databaseRoleUser AND policy:resource.name AND policy:"PRINCIPAL_IDENTIFIER" AND resource=//spanner.googleapis.com/projects/PROJECT_NAME/instances/INSTANCE_NAME/databases/DATABASE_NAME' \ --flatten=policy.bindings[] \ --format='table(policy.bindings.condition.expression)'
wobei PRINCIPAL_IDENTIFIER Folgendes ist:
{ user:user-account-name | serviceAccount:service-account-name }
PRINCIPAL_IDENTIFIER Beispiele:
user:222larabrown@gmail.com serviceAccount:cs-fgac-sa-1@cloud-spanner-demo.google.com.iam.gserviceaccount.com
Die folgende Beispielausgabe zeigt zwei Bedingungsausdrücke.
EXPRESSION resource.type == "spanner.googleapis.com/DatabaseRole" && resource.name.endsWith("/hr_analyst") resource.type == "spanner.googleapis.com/DatabaseRole" && resource.name.endsWith("/hr_manager")
IAM-Richtlinien auf fehlende Bedingungen für Datenbankrollen prüfen
Nachdem Sie Hauptkonten Zugriff auf Datenbankrollen gewährt haben, sollten Sie für jede IAM-Bindung eine Bedingung angeben.
Führen Sie dazu den folgenden Befehl aus:
gcloud asset search-all-iam-policies \ --scope=projects/PROJECT_NAME \ --query='roles:roles/spanner.databaseRoleUser AND resource=//spanner.googleapis.com/projects/PROJECT_NAME/instances/INSTANCE_NAME/databases/DATABASE_NAME' --flatten=policy.bindings[].members[]
Die Ausgabe sieht in etwa so aus:
ROLE MEMBERS EXPRESSION roles/spanner.databaseRoleUser serviceAccount:cs-fgac-sa-1@... roles/spanner.databaseRoleUser serviceAccount:cs-fgac-sa-2@... resource.type == "spanner…"
Beachten Sie, dass für das erste Ergebnis keine Bedingung angegeben ist. Daher haben die Hauptkonten in dieser Bindung Zugriff auf alle Datenbankrollen.
Datenbankrolle löschen
Wenn Sie eine Datenbankrolle löschen, werden die Mitgliedschaften anderer Rollen in dieser Rolle und die Mitgliedschaft dieser Rolle in anderen Rollen automatisch widerrufen.
Wenn Sie eine Datenbankrolle löschen möchten, müssen Sie zuerst Folgendes tun:
- Heben Sie alle Berechtigungen für die detaillierte Zugriffssteuerung für die Rolle auf.
- Entfernen Sie alle IAM-Richtlinienbindungen, die sich auf diese Rolle beziehen, damit eine später mit demselben Namen erstellte Datenbankrolle diese Bindungen nicht erbt.
Console
So löschen Sie eine Datenbankrolle:
Klicken Sie auf der Seite Übersicht der Datenbank auf Spanner Studio.
Wenn Sie der Rolle Berechtigungen entziehen möchten, geben Sie eine
REVOKE
-Anweisung ein.GoogleSQL
Details zur Syntax der
REVOKE
-Anweisung finden Sie unter GoogleSQL-Datendefinitionssprache. Informationen zu Berechtigungen finden Sie unter Berechtigungen für die detaillierte Zugriffssteuerung.Wenn Sie beispielsweise
SELECT
,INSERT
undUPDATE
für die Tabellenemployees
undcontractors
von der Datenbankrollehr_manager
widerrufen möchten, geben Sie Folgendes ein:REVOKE SELECT, INSERT, UPDATE ON TABLE employees, contractors FROM ROLE hr_manager;
PostgreSQL
Details zur Syntax der
REVOKE
-Anweisung finden Sie unter PostgreSQL-Datendefinitionssprache. Informationen zu Berechtigungen finden Sie unter Berechtigungen für die detaillierte Zugriffssteuerung.Wenn Sie beispielsweise die Berechtigungen
SELECT
,INSERT
undUPDATE
für die Tabellenemployees
undcontractors
von der Datenbankrollehr_manager
widerrufen möchten, geben Sie Folgendes ein:REVOKE SELECT, INSERT, UPDATE ON TABLE employees, contractors FROM hr_manager;
Sie können eine DDL-Vorlage für die
REVOKE
-Anweisung verwenden. Gehen Sie im Bereich Explorer zu der Rolle, für die Sie das Berechtigung widerrufen möchten. Klicken Sie auf Aktionen ansehen und wählen Sie die Art der Berechtigung aus, für die Sie den Zugriff für diese Rolle widerrufen möchten. Die VorlagenbeschreibungREVOKE
wird in einem neuen Editortab eingefügt.Löschen Sie alle IAM-Bedingungen, die mit der Rolle verknüpft sind.
Suchen Sie in der Liste der Rollen im Infobereich nach der Rolle Nutzer einer Cloud Spanner-Datenbankrolle, neben der sich der gewünschte Bedingungstitel befindet. Maximieren Sie dann die Rolle, um die Hauptkonten aufzurufen, die Zugriff auf die Rolle haben.
Klicken Sie bei einem der Hauptkonten auf das Symbol Hauptkonto bearbeiten (Stift).
Klicken Sie auf der Seite Zugriff bearbeiten neben der Rolle „Nutzer der Cloud Spanner-Datenbankrolle“ auf das Symbol Rolle löschen (Mülleimer).
Klicken Sie auf Speichern.
Wiederholen Sie die drei vorherigen Schritte für andere Berechtigungsinhaber, die unter der Bedingung aufgeführt sind.
Wenn Sie die Rolle zurückziehen möchten, rufen Sie die Seite Spanner Studio auf und geben Sie die folgende Anweisung ein:
DROP ROLE ROLE_NAME;
Klicken Sie auf Senden.
gcloud
Wenn Sie alle Berechtigungen für eine Rolle widerrufen und die Rolle dann löschen möchten, verwenden Sie den Befehl
gcloud spanner databases ddl update
folgendermaßen:GoogleSQL
gcloud spanner databases ddl update DATABASE_NAME \ --instance=INSTANCE_NAME \ --ddl='REVOKE PERMISSIONS ON TABLE TABLE_NAME FROM ROLE ROLE_NAME; DROP ROLE ROLE_NAME;'
PostgreSQL
gcloud spanner databases ddl update DATABASE_NAME \ --instance=INSTANCE_NAME \ --ddl='REVOKE PERMISSIONS ON TABLE TABLE_NAME FROM ROLE_NAME; DROP ROLE ROLE_NAME;'
Gültige Werte für
PERMISSIONS
sindSELECT
,INSERT
,UPDATE
undDELETE
.Wenn Sie alle zugehörigen IAM-Bedingungen löschen möchten, verwenden Sie den Befehl
gcloud spanner databases remove-iam-policy-binding
:gcloud spanner databases remove-iam-policy-binding DATABASE_NAME \ --instance=INSTANCE_NAME \ --role=ROLE_NAME \ --member=MEMBER_NAME \ --condition=CONDITION
MEMBER_NAME
ist die Kennung für den Hauptberechtigten. Muss das Formatuser|group|serviceAccount:email
oderdomain:domain
haben.CONDITION
ist ein IAM-Bedingungsausdruck, der die Rollen angibt, die dem Hauptkonto gewährt werden sollen.CONDITION
hat folgendes Format:--condition='expression=(resource.type == "spanner.googleapis.com/DatabaseRole" && (resource.name.endsWith("/ROLE1") || resource.name.endsWith("/ROLE2"))),title=TITLE,description=DESCRIPTION'
Die gesamte Bedingungsspezifikation muss genau mit der Bedingungsspezifikation übereinstimmen, die im Befehl verwendet wurde, mit dem die Berechtigung gewährt wurde, einschließlich Titel und Beschreibung.
Clientbibliotheken
In diesen Codebeispielen wird eine Datenbankrolle erstellt und gelöscht.
C++
C#
Go
Java
Node.js
PHP
Python
Ruby
Weitere Informationen
- Detaillierte Zugriffssteuerung
- Detaillierte Zugriffssteuerung für Änderungsstreams
- Berechtigungen für die detaillierte Zugriffssteuerung
- GoogleSQL-DDL-Referenz
- Schemaaktualisierungen vornehmen