Auf dieser Seite wird erläutert, wie Sie eine detaillierte Zugriffssteuerung für Spanner-Datenbanken konfigurieren.
Weitere Informationen zur detaillierten Zugriffssteuerung
Zum Konfigurieren einer detaillierten Zugriffssteuerung sind folgende Schritte erforderlich:
IAM-Hauptkonten (Identity and Access Management) Zugriff auf Datenbankrollen gewähren
Informieren Sie Nutzer und Entwickler über die Verwendung von Datenbankrollen.
Nutzer mit einer detailgenauen Zugriffssteuerung müssen dann eine Datenbankrolle angeben, um Abfragen, DML- oder Zeilenvorgänge für die Datenbank auszuführen.
Hinweise
Jedem Hauptkonto, das ein Nutzer mit detaillierter Zugriffssteuerung sein soll, muss die IAM-Rolle Cloud Spanner Viewer
(roles/spanner.viewer
) zugewiesen werden. Diese Rolle wird auf Projektebene für Nutzer empfohlen, die in der Google Cloud Console mit Spanner-Ressourcen interagieren müssen.
Eine Anleitung finden Sie unter Hauptkonten Berechtigungen gewähren.
Datenbankrollen erstellen und Berechtigungen gewähren
Eine Datenbankrolle ist eine Sammlung detaillierter Zugriffsberechtigungen. Sie können bis zu 100 Datenbankrollen pro Datenbank 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 statt separat vorzunehmen. Weitere Informationen finden Sie unter Häufigkeit von Schemaaktualisierungen begrenzen.
Console
So erstellen Sie eine Datenbankrolle und gewähren detaillierte Zugriffsberechtigungen:
Rufen Sie in der Google Cloud Console die Seite Instanzen auf.
Wählen Sie die Instanz mit der Datenbank aus, der 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 denen Sie Berechtigungen gewähren 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.
Geben Sie in die nächste Zeile nach der Anweisung
CREATE ROLE
eineGRANT
-Anweisung ein, um Berechtigungen für die Rolle zu gewähren.Informationen zur Syntax der
GRANT
-Anweisung finden Sie unter GoogleSQL-Datendefinitionssprache. Informationen zu Berechtigungen finden Sie unter Berechtigungen für detaillierte Zugriffssteuerung.Geben Sie beispielsweise die folgende Anweisung ein, um der Datenbankrolle
hr_manager
SELECT
,INSERT
undUPDATE
für die Tabellenemployees
undcontractors
zuzuweisen: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. Gehen Sie im Bereich Explorer zu der Rolle, für die Sie Berechtigungen gewähren möchten. Klicken Sie auf Aktionen ansehen und wählen Sie die Art der Berechtigung aus, die Sie für diese Rolle gewähren möchten. Die VorlagenanweisungGRANT
wird in einem neuen Editor-Tab angezeigt.
Klicken Sie auf Senden.
Wenn die DDL Fehler enthalten, 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.
Weitere Informationen zur Syntax der Anweisungen CREATE ROLE
und GRANT
finden Sie unter GoogleSQL-Datendefinitionssprache.
Verwenden Sie beispielsweise den folgenden Befehl, um eine Datenbankrolle zu erstellen und ihr Berechtigungen für eine oder mehrere Tabellen zu 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 detaillierter Berechtigungen für die Zugriffssteuerung. Informationen zu Berechtigungen finden Sie unter Berechtigungen für detaillierte Zugriffssteuerung.TABLES
ist eine durch Kommas getrennte Liste von Tabellen.
Geben Sie beispielsweise die folgende Anweisung ein, um der Datenbankrolle hr_analyst
in der Datenbank hrdb1
in der Instanz hr
SELECT
, INSERT
und UPDATE
für die Tabellen employees
und contractors
zuzuweisen:
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 Übernahme erstellen
Sie können eine Hierarchie von Datenbankrollen erstellen, indem Sie einer anderen Datenbankrolle eine andere Rolle zuweisen. Untergeordnete Rollen, die als Mitgliederrollen bezeichnet werden, übernehmen die Berechtigungen der übergeordneten Rolle.
Verwenden Sie die folgende Anweisung, um einer anderen Datenbankrolle eine Datenbankrolle zuzuweisen:
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
Bevor 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 ANZEIGEN, wenn 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 des detaillierten Zugriffs in Cloud Spanner aus.
Sie müssen diese Rolle jedem Hauptkonto nur einmal zuweisen. Damit wird das Hauptkonto 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.
Führen Sie die folgenden Schritte aus, um die IAM-Bedingung zu erstellen, die die zu gewährenden Rollen angibt.
Klicken Sie neben der Rolle „Nutzer der 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 zuweisen, geben Sie in der Regel den Rollennamen in den Bedingungstitel an. Wenn Sie mehrere Rollen gewähren, können Sie Angaben zu den Rollen machen.
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 mehr als einer Rolle Zugriff auf das Hauptkonto gewähren möchten, fügen Sie mit dem Operator or (
||
) weitere Bedingungen 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 zuweisen möchten, fügen Sie weitere or-Bedingungen hinzu.Sie können jeden Bedingungsausdruck verwenden, der von IAM unterstützt wird. Weitere Informationen finden Sie in der Ü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.
Beachten Sie im Infofeld unter Rolle/Hauptkonto, dass für jede definierte Bedingung Cloud Spanner-Datenbankrollennutzer angezeigt wird.
Die Zahl in Klammern neben der Bedingung gibt die Anzahl der Hauptkonten an, denen durch diese Bedingung die Datenbankrolle zugewiesen wird. Sie können auf den Erweiterungspfeil klicken, um die Liste der Hauptkonten aufzurufen.
Gehen Sie so vor, um Fehler in Namen oder Bedingungen von Datenbankrollen zu korrigieren oder zusätzliche Datenbankrollen für ein Hauptkonto hinzuzufügen:
Maximieren Sie den Eintrag Cloud Spanner-Datenbankrollennutzer, in dem die gewünschte Bedingung aufgeführt ist.
Klicken Sie neben einem Hauptkonto auf das Symbol Bearbeiten (Stift).
Führen Sie im Bereich Bearbeitungszugriff auf database_name einen der folgenden Schritte aus:
Klicken Sie auf WEITERE ROLLE HINZUFÜGEN.
Klicken Sie zum Bearbeiten der Bedingung neben dem Namen der Bedingung auf das Symbol Bearbeiten (Stift). Klicken Sie dann auf der Seite Bedingung bearbeiten auf BEDINGUNGSEDITOR, nehmen Sie Korrekturen 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 das Hauptkonto. Dazu verwenden Sie den 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 das Hauptkonto. Sie muss das Formatuser|group|serviceAccount:email
oderdomain:domain
haben.Mit diesem Befehl wird das Hauptkonto zu einem Nutzer mit detaillierter Zugriffssteuerung. Senden Sie diesen Befehl nur einmal für jedes Hauptkonto.
Bei Erfolg gibt der Befehl die gesamte Richtlinie für die Datenbank aus.
Mit dem Befehl
gcloud spanner databases add-iam-policy-binding
gewähren Sie die Berechtigung zur Verwendung einer oder mehrerer Datenbankrollen: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 das Hauptkonto. Sie muss das Formatuser|group|serviceAccount:email
oderdomain:domain
haben.CONDITION
ist ein IAM-Bedingungsausdruck, der die Rollen angibt, die dem Hauptkonto zugewiesen werden sollen.CONDITION
hat das folgende Format:--condition='expression=(resource.type == "spanner.googleapis.com/DatabaseRole" && resource.name.endsWith("/ROLE1")),title=TITLE,description=DESCRIPTION'
Wenn Sie mehr als einer Rolle Zugriff auf das Hauptkonto gewähren möchten, fügen Sie mit dem Operator or (
||
) weitere Bedingungen 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 zuweisen möchten, fügen Sie mit dem Operator||
weitere or-Bedingungen hinzu.Sie können jeden Bedingungsausdruck verwenden, der von IAM unterstützt wird. Weitere Informationen finden Sie in der Ü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
gewährt.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 über die Verwendung von Datenbankrollen informieren
Nachdem die anfängliche Konfiguration der detaillierten Zugriffssteuerung abgeschlossen ist, informieren Sie die Nutzer und Anwendungsentwickler darüber, dass sie mit der Verwendung von Datenbankrollen beginnen müssen.
Nutzer mit einer detaillierten Zugriffssteuerung müssen eine Datenbankrolle angeben, wenn sie über die Google Cloud Console oder die Google Cloud CLI auf Spanner-Datenbanken zugreifen.
Anwendungen mit detaillierter Zugriffssteuerung müssen beim Zugriff auf die Datenbank eine Datenbankrolle angeben.
Weitere Informationen finden Sie unter Mit detaillierter Zugriffssteuerung auf eine Datenbank zugreifen.
Hauptkonto auf detaillierte Zugriffssteuerung umstellen
So stellen Sie ein IAM-Hauptkonto von der Zugriffssteuerung auf Datenbankebene auf eine 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.
Widerrufen Sie alle IAM-Rollen auf Datenbankebene für das Hauptkonto. Auf diese Weise wird der Zugriff für das Hauptkonto nur durch eine Methode geregelt.
Ausnahme: Alle Nutzer müssen die IAM-Rolle
roles/spanner.viewer
haben, um mit Spanner-Ressourcen in der Google Cloud Console interagieren zu können.Folgen Sie der Anleitung unter Berechtigungen auf Datenbankebene entfernen, um IAM-Rollen auf Datenbankebene zu widerrufen.
Datenbankrollen auflisten
Sie können die Datenbankrollen auflisten, die mit einer Datenbank verknüpft sind.
Console
Geben Sie auf der Spanner Studio-Seite für die Datenbank die folgende Abfrage ein, um Datenbankrollen aufzulisten:
GoogleSQL
SELECT * FROM INFORMATION_SCHEMA.ROLES;
PostgreSQL
SELECT * FROM information_schema.enabled_roles;
Die Antwort enthält die aktuelle Rolle und die Rollen, deren Berechtigungen die aktuelle Rolle durch Übernahme verwenden kann. Rufen Sie alle Rollen mit dem Google Cloud CLI-Befehl ab.
gcloud
Geben Sie den folgenden Befehl ein, um eine ungefilterte Liste von Datenbankrollen zu erhalten.
Dafü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
Berechtigungen aufrufen, die einer Datenbankrolle gewährt wurden
Führen Sie die folgenden Abfragen aus, um die mit einer Rolle gewährten Berechtigungen anzusehen:
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 mit detaillierter Zugriffssteuerung aufrufen
Führen Sie den folgenden Befehl aus, um eine Liste der Hauptkonten aufzurufen, die Nutzer mit detaillierten Zugriffssteuerungen sind. Zum Ausführen des Befehls müssen Sie die Cloud Asset API für Ihr Projekt aktiviert haben und die IAM-Berechtigung cloudasset.assets.searchAllIamPolicies
haben.
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 im Google Cloud-Projekt aktivieren.
IAM-Hauptkonten mit Zugriff auf eine Datenbankrolle ansehen
Führen Sie den folgenden Befehl aus, um eine Liste der Hauptkonten aufzurufen, denen Zugriff auf eine bestimmte Datenbankrolle gewährt wurde. Zum Ausführen des Befehls müssen Sie die Cloud Asset API für Ihr Projekt aktiviert und die IAM-Berechtigung cloudasset.assets.searchAllIamPolicies
haben.
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 ein Hauptkonto ansehen
Führen Sie den folgenden Befehl aus, um eine Liste der IAM-Bedingungen aufzurufen, die angegeben wurden, als Sie einem Hauptkonto die Rolle Cloud Spanner-Datenbankrollennutzer gewährt haben:
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)'
Dabei steht PRINCIPAL_IDENTIFIER für:
{ 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
Das folgende Ausgabebeispiel 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 dafür sorgen, dass für jede IAM-Bindung eine Bedingung angegeben ist.
Führen Sie den folgenden Befehl aus, um diese Prüfung durchzuführen:
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…"
Im ersten Ergebnis fehlt eine Bedingung. Daher haben die Hauptkonten in dieser Bindung Zugriff auf alle Datenbankrollen.
Datenbankrolle löschen
Durch das Verwerfen einer Datenbankrolle wird automatisch die Mitgliedschaft anderer Rollen aus der Rolle und die Mitgliedschaft der Rolle in anderen Rollen aufgehoben.
Führen Sie zuerst die folgenden Schritte aus, um eine Datenbankrolle zu entfernen:
- Widerrufen Sie der Rolle alle Berechtigungen für die detaillierte Zugriffssteuerung.
- Entfernen Sie alle IAM-Richtlinienbindungen, die sich auf diese Rolle beziehen, damit eine später mit demselben Namen erstellte Datenbankrolle diese Bindungen nicht übernimmt.
Console
So entfernen Sie eine Datenbankrolle:
Klicken Sie auf der Seite Übersicht der Datenbank auf Spanner Studio.
Wenn Sie Berechtigungen für die Rolle widerrufen möchten, geben Sie eine
REVOKE
-Anweisung ein.GoogleSQL
Informationen zur Syntax der
REVOKE
-Anweisung finden Sie unter GoogleSQL-Datendefinitionssprache. Informationen zu Berechtigungen finden Sie unter Berechtigungen für detaillierte Zugriffssteuerung.Wenn Sie beispielsweise
SELECT
,INSERT
undUPDATE
für die Tabellenemployees
undcontractors
aus der Datenbankrollehr_manager
widerrufen möchten, geben Sie die folgende Anweisung ein:REVOKE SELECT, INSERT, UPDATE ON TABLE employees, contractors FROM ROLE hr_manager;
PostgreSQL
Einzelheiten zur Syntax für die
REVOKE
-Anweisung finden Sie unter PostgreSQL-Datendefinitionssprache. Informationen zu Berechtigungen finden Sie unter Berechtigungen für detaillierte Zugriffssteuerung.Wenn Sie beispielsweise die Berechtigungen
SELECT
,INSERT
undUPDATE
für die Tabellenemployees
undcontractors
aus der Datenbankrollehr_manager
widerrufen möchten, geben Sie die folgende Anweisung 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 die Berechtigung widerrufen möchten. Klicken Sie auf Aktionen ansehen und wählen Sie die Art der Berechtigung aus, der Sie den Zugriff für diese Rolle entziehen möchten. Die VorlagenanweisungREVOKE
wird in einem neuen Editor-Tab angezeigt.Löschen Sie alle IAM-Bedingungen, die mit der Rolle verknüpft sind.
Suchen Sie in der Liste der Rollen im Infofeld nach der Rolle Cloud Spanner-Datenbankrollennutzer, neben der der relevante Bedingungstitel steht, und maximieren Sie dann die Rolle, um die Hauptkonten anzusehen, die Zugriff auf die Rolle haben.
Klicken Sie für eines der Hauptkonten auf das Symbol Hauptkonto bearbeiten (Stiftsymbol).
Klicken Sie auf der Seite Zugriff bearbeiten neben der Rolle „Nutzer von Cloud Spanner-Datenbankrolle“ auf das Symbol Rolle löschen (Papierkorb).
Klicken Sie auf Speichern.
Wiederholen Sie die vorherigen drei Schritte für andere Hauptkonten, die unter der Bedingung aufgeführt sind.
Rufen Sie zum Entfernen der Rolle 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 dann die Rolle löschen möchten, verwenden Sie den Befehl
gcloud spanner databases ddl update
: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
.Verwenden Sie zum Löschen zugehöriger IAM-Bedingungen den Befehl
gcloud spanner databases remove-iam-policy-binding
so: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 das Hauptkonto. Sie muss das Formatuser|group|serviceAccount:email
oderdomain:domain
haben.CONDITION
ist ein IAM-Bedingungsausdruck, der die Rollen angibt, die dem Hauptkonto zugewiesen werden sollen.CONDITION
hat das folgende 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 in dem Befehl verwendet wurde, der die Berechtigung erteilt hat, 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
- Detailgenaue Zugriffssteuerung für Änderungsstreams
- Detaillierte Zugriffssteuerung
- GoogleSQL-DDL-Referenz
- Schemaaktualisierungen vornehmen