Auf dieser Seite wird erläutert, wie Sie eine fein abgestimmte Zugriffssteuerung für Spanner-Datenbanken konfigurieren.
Weitere Informationen zur fein abgestimmten Zugriffssteuerung
Das Konfigurieren einer detaillierten Zugriffssteuerung umfasst die folgenden Schritte:
Optional: Eine Hierarchie von Rollen mit Übernahme erstellen
IAM-Hauptkonten (Identity and Access Management) Zugriff auf Datenbankrollen gewähren
Informieren Sie Nutzer und Entwickler über die Verwendung von Datenbankrollen.
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 einer detaillierten Zugriffssteuerung sein soll, die IAM-Rolle Cloud Spanner Viewer
(roles/spanner.viewer
) zugewiesen wird. Diese Rolle wird auf Projektebene für Nutzer empfohlen, die mit Spanner-Ressourcen in der Google Cloud Console interagieren müssen.
Eine Anleitung finden Sie unter Hauptkonten Berechtigungen gewähren.
Datenbankrollen erstellen und Berechtigungen gewähren
Eine Datenbankrolle ist eine Sammlung detaillierter Zugriffsrechte. Sie können bis zu 100 Datenbankrollen für jede Datenbank erstellen.
Rollen und Rollenhierarchien in Ihrer Datenbank festlegen und in DDL codieren Wie bei anderen Schemaänderungen in Spanner empfehlen wir dringend, Schemaänderungen in einem Batch und nicht separat vorzunehmen. 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, 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 Berechtigungen gewähren möchten, die folgenden Schritte aus:
Geben Sie die folgende Anweisung ein, um die Rolle zu erstellen:
CREATE ROLE ROLE_NAME;
Klicken Sie noch nicht auf Senden.
Wenn Sie Berechtigungen für die Rolle gewähren möchten, geben Sie in der nächsten Zeile nach der Anweisung
CREATE ROLE
eineGRANT
-Anweisung ein.Details zur Syntax der
GRANT
-Anweisung finden Sie unter GoogleSQL-Datendefinitionssprache. Informationen zu Berechtigungen finden Sie unter Detailgenaue Berechtigungen für die Zugriffssteuerung.Wenn Sie beispielsweise der Datenbankrolle
hr_manager
SELECT
,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. 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, der Sie Zugriff auf diese Rolle gewähren möchten. Die VorlagenanweisungGRANT
wird in einem neuen Editor-Tab dargestellt.
Klicken Sie auf Senden.
Wenn die DDL Fehler enthält, gibt die Google Cloud Console einen Fehler zurück.
gcloud
Verwenden Sie den Befehl gcloud spanner databases ddl update
mit den Anweisungen CREATE ROLE
und GRANT
, um eine Datenbankrolle zu erstellen und detaillierte Zugriffsberechtigungen zu gewähren.
Weitere Informationen zur Syntax zu den 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 Zugriffssteuerungsberechtigungen. Informationen zu Berechtigungen finden Sie unter Detailgenaue Berechtigungen für die 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 die folgende Anweisung 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 Übernahme erstellen
Sie können eine Hierarchie von Datenbankrollen erstellen, indem Sie einer anderen Datenbankrolle zuweisen. Untergeordnete Rollen, sogenannte Mitgliederrollen, übernehmen die Berechtigungen der übergeordneten Rollen.
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 Datenbankrollenhierarchien und Übernahme.
IAM-Hauptkonten Zugriff auf Datenbankrollen gewähren
Bevor ein Hauptkonto mit einer Datenbankrolle auf Spanner-Ressourcen zugreifen 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, 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 nur einmal jedem Hauptkonto gewähren. Dadurch wird das Hauptkonto zu einem Nutzer der detaillierten Zugriffssteuerung.
Klicken Sie auf WEITERE ROLLE HINZUFÜGEN.
Wählen Sie im Menü Rolle auswählen die Option Cloud Spanner > Nutzer von Cloud Spanner-Datenbankrollen 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 für Cloud Spanner-Datenbankrollen“ auf IAM-BEDINGUNG HINZUFÜGEN.
Geben Sie im Bereich Bedingung hinzufügen einen Titel und optional eine Beschreibung für die Bedingung ein.
Wenn Sie eine einzelne Datenbankrolle gewähren, fügen Sie in der Regel den Namen der Rolle in den Bedingungstitel ein. Wenn Sie mehrere Rollen zuweisen, können Sie Angaben zur Gruppe von 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 dem Hauptkonto Zugriff auf mehr als eine Rolle 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 einen beliebigen 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.
Im Infofeld unter Rolle/Hauptkonto wird für jede definierte Bedingung der Wert Nutzer für Cloud Spanner-Datenbankrollen angezeigt.
Die Zahl in Klammern neben der Bedingung gibt die Anzahl der Hauptkonten an, denen durch diese Bedingung die Datenbankrolle gewährt wird. Sie können auf den Erweiterungspfeil klicken, um die Liste der Hauptkonten aufzurufen.
Führen Sie die folgenden Schritte aus, um Fehler in Datenbankrollennamen oder -bedingungen zu korrigieren oder zusätzliche Datenbankrollen für ein Hauptkonto hinzuzufügen:
Maximieren Sie den Eintrag Nutzer von Cloud Spanner-Datenbankrollen, in dem die gewünschte Bedingung aufgeführt ist.
Klicken Sie neben einem Hauptkonto auf das Symbol Bearbeiten (Bleistiftsymbol).
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 auf das Stiftsymbol Bearbeiten neben dem Namen der Bedingung. Klicken Sie dann auf der Seite Bedingung bearbeiten auf BEDINGUNGSEDITOR, nehmen Sie die Korrekturen vor und klicken Sie zweimal auf Speichern.
gcloud
So gewähren Sie einem IAM-Hauptkonto Zugriff auf Datenbankrollen:
Aktivieren Sie mit dem Befehl
gcloud spanner databases add-iam-policy-binding
eine detaillierte Zugriffssteuerung für das Hauptkonto: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 ID für das Hauptkonto. Er muss das Formatuser|group|serviceAccount:email
oderdomain:domain
haben.Dieser Befehl macht das Hauptkonto zu einem Nutzer für die detaillierte Zugriffssteuerung. Senden Sie diesen Befehl nur einmal pro Hauptkonto.
Bei Erfolg gibt der Befehl die gesamte Richtlinie für die Datenbank aus.
Erteilen Sie die Berechtigung zur Verwendung einer oder mehrerer Datenbankrollen mit dem Befehl
gcloud spanner databases add-iam-policy-binding
so: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 ID für das Hauptkonto. Er 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 das folgende Format:--condition='expression=(resource.type == "spanner.googleapis.com/DatabaseRole" && resource.name.endsWith("/ROLE1")),title=TITLE,description=DESCRIPTION'
Wenn Sie dem Hauptkonto Zugriff auf mehr als eine Rolle 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 weitere OR-Bedingungen mit dem Operator||
hinzu.Sie können einen beliebigen 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
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 über die Verwendung von Datenbankrollen informieren
Nachdem die erste fein abgestimmte Konfiguration der Zugriffssteuerung abgeschlossen ist, informieren Sie Nutzer und Anwendungsentwickler darüber, dass sie mit der Verwendung von Datenbankrollen beginnen müssen.
Nutzer einer detaillierten Zugriffssteuerung müssen mit der Angabe einer Datenbankrolle beginnen, wenn sie über die Google Cloud Console oder die Google Cloud CLI auf Spanner-Datenbanken zugreifen.
Für Anwendungen mit detaillierter Zugriffssteuerung muss beim Zugriff auf die Datenbank eine Datenbankrolle angegeben werden.
Weitere Informationen finden Sie unter Auf eine Datenbank mit detaillierter Zugriffssteuerung zugreifen.
Hauptkonto auf detaillierte Zugriffssteuerung umstellen
So stellen Sie ein IAM-Hauptkonto von der Zugriffssteuerung auf Datenbankebene zur detaillierten Zugriffssteuerung um:
Aktivieren Sie eine 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 von einer Methode gesteuert.
Ausnahme: Alle Nutzer müssen die IAM-Rolle
roles/spanner.viewer
haben, um in der Google Cloud Console mit Spanner-Ressourcen zu interagieren.Um IAM-Rollen auf Datenbankebene zu widerrufen, folgen Sie der Anleitung unter Berechtigungen auf Datenbankebene entfernen.
Datenbankrollen auflisten
Sie können die mit einer Datenbank verknüpften Datenbankrollen auflisten.
Console
Zum Auflisten von Datenbankrollen 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 die Rollen, deren Berechtigungen die aktuelle Rolle durch Übernahme verwenden kann. Verwenden Sie den Befehl der Google Cloud CLI, um alle Rollen abzurufen.
gcloud
Geben Sie den folgenden Befehl ein, um eine ungefilterte Liste von Datenbankrollen abzurufen.
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 ansehen, die einer Datenbankrolle gewährt wurden
Führen Sie die folgenden Abfragen aus, um die 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.
Detaillierte Nutzer für die Zugriffssteuerung ansehen
Führen Sie den folgenden Befehl aus, um eine Liste der Hauptkonten aufzurufen, die Nutzer einer detaillierten Zugriffssteuerung sind. Zum Ausführen des Befehls muss die Cloud Asset API in Ihrem Projekt aktiviert sein. Außerdem benötigen Sie 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 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 muss die Cloud Asset API für Ihr Projekt aktiviert sein. Außerdem benötigen Sie 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 ein Hauptkonto ansehen
Führen Sie den folgenden Befehl aus, um eine Liste der IAM-Bedingungen aufzurufen, die beim Zuweisen der Rolle Nutzer von Cloud Spanner-Datenbankrollen an ein Hauptkonto angegeben wurden:
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 in anderen Rollen sowie die Zugehörigkeit zu anderen Rollen aufgehoben.
Um eine Datenbankrolle zu löschen, müssen Sie zuerst Folgendes tun:
- Alle Berechtigungen für die detaillierte Zugriffssteuerung der Rolle entziehen.
- Entfernen Sie alle IAM-Richtlinienbindungen, die sich auf diese Rolle beziehen, sodass eine später mit demselben Namen erstellte Datenbankrolle diese Bindungen nicht übernimmt.
Console
So löschen 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
Details zur Syntax der
REVOKE
-Anweisung finden Sie unter GoogleSQL-Datendefinitionssprache. Informationen zu Berechtigungen finden Sie unter Detailgenaue Berechtigungen für die 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
Informationen zur Syntax für die
REVOKE
-Anweisung finden Sie unter PostgreSQL-Datendefinitionssprache. Informationen zu Berechtigungen finden Sie unter Detailgenaue Berechtigungen für die Zugriffssteuerung.Wenn Sie beispielsweise die Berechtigungen
SELECT
,INSERT
undUPDATE
für die Tabellenemployees
undcontractors
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 dieser Rolle entziehen möchten. Die VorlagenanweisungREVOKE
wird in einem neuen Editor-Tab dargestellt.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 Nutzer von Cloud Spanner-Datenbankrollen, neben der der entsprechende Bedingungstitel angezeigt wird. Maximieren Sie dann die Rolle, um die Hauptkonten mit Zugriff auf die Rolle anzusehen.
Klicken Sie für eines der Hauptkonten auf das Symbol Hauptkonto bearbeiten (Stift).
Klicken Sie auf der Seite Zugriff bearbeiten neben der Rolle „Nutzer von Cloud Spanner-Datenbankrollen“ auf das Symbol Rolle löschen (Papierkorb).
Klicken Sie auf Speichern.
Wiederholen Sie die vorherigen drei Schritte für andere Hauptkonten, die in 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
Um alle Berechtigungen für eine Rolle zu widerrufen und dann die Rolle zu löschen, verwenden Sie den Befehl
gcloud spanner databases ddl update
so: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 ID für das Hauptkonto. Er 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 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, 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
- Detailgenaue Zugriffssteuerung für Änderungsstreams
- Detailgenaue Berechtigungen für die Zugriffssteuerung
- GoogleSQL-DDL-Referenz
- Schemaaktualisierungen vornehmen