Auf dieser Seite wird erläutert, wie Sie eine detaillierte Zugriffssteuerung für Spanner-Datenbanken.
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.
Detaillierte Zugriffssteuerung Benutzer müssen dann eine Datenbankrolle zum Ausführen von Abfragen angeben, DML- oder Zeilenvorgänge für die Datenbank.
Hinweise
Achten Sie darauf, dass jedem Hauptkonto, das ein Nutzer mit detaillierter Zugriffssteuerung sein soll, gewährt wird
die IAM-Rolle Cloud Spanner Viewer
(roles/spanner.viewer
)
Diese Rolle wird auf Projektebene für Nutzer empfohlen, die mit
Spanner-Ressourcen in der Google Cloud Console.
Anweisungen 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. Als mit anderen Schemaänderungen in Spanner verwendet, empfehlen wir dringend, in einem Batch und nicht separat. Weitere Informationen finden Sie unter Häufigkeit von Schemaaktualisierungen begrenzen.
Console
So erstellen Sie eine Datenbankrolle und gewähren detaillierte Zugriffsberechtigungen: führen Sie folgende Schritte aus:
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.
Auf der Seite Spanner Studio für jede Datenbankrolle, die Sie zum Erstellen und Gewähren von Berechtigungen gehen Sie so vor:
Geben Sie die folgende Anweisung ein, um die Rolle zu erstellen:
CREATE ROLE ROLE_NAME;
Klicken Sie noch nicht auf Senden.
Um Berechtigungen für die Rolle zu gewähren, geben Sie auf der nächsten
GRANT
Zeile nach derCREATE ROLE
-Anweisung.Syntaxdetails für die
GRANT
-Anweisung Siehe GoogleSQL-Datendefinitionssprache. Informationen zu Berechtigungen finden Sie unter Berechtigungen für die detaillierte Zugriffssteuerung.Um beispielsweise
SELECT
zuzuweisen,INSERT
undUPDATE
für die Tabellenemployees
undcontractors
in den Datenbankrollehr_manager
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. Im Explorer – gehen Sie zu der Rolle, die Sie gewähren möchten. Berechtigungen. 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 angezeigt.
Klicken Sie auf Senden.
Wenn die DDL Fehler enthält, gibt die Google Cloud Console eine Meldung Fehler.
gcloud
So erstellen Sie eine Datenbankrolle und gewähren detaillierte Zugriffsberechtigungen:
gcloud spanner databases ddl update
verwenden
mit den Anweisungen CREATE ROLE
und GRANT
.
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 zu gewähren, für eine oder mehrere Tabellen.
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 detaillierte Berechtigungen für die Zugriffssteuerung. Informationen zu Berechtigungen Siehe Berechtigungen für 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 Übernahme erstellen
Sie können eine Hierarchie von Datenbankrollen erstellen, indem Sie eine andere. Untergeordnete Rollen, die als Mitgliederrollen bezeichnet werden, übernehmen die Berechtigungen 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
Bevor ein Hauptkonto eine Datenbankrolle für den Zugriff auf Spanner verwenden kann Ressourcen, müssen Sie ihnen Zugriff auf die Datenbankrolle gewähren.
Console
So gewähren Sie einem IAM-Hauptkonto Zugriff auf Datenbankrollen: diese Schritte:
Klicken Sie auf der Seite Übersicht der Datenbank auf INFOFELD ANZEIGEN, wenn die Infoseite noch nicht geöffnet ist.
Klicken Sie auf HAUPTKONTO HINZUFÜGEN.
im Bereich Zugriff auf database_name gewähren unter Hauptkonten hinzufügen und mindestens ein IAM-Hauptkonto angeben
Wählen Sie unter Rollen zuweisen im Menü Rolle auswählen die Option Cloud Spanner aus > Cloud Spanner-Nutzer für detaillierten Zugriff.
Sie müssen diese Rolle jedem Hauptkonto nur einmal zuweisen. Sie sorgt dafür, ein 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 gibt die zu gewährenden Rollen an.
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 optional eine Beschreibung ein. für die Bedingung hinzu.
Wenn Sie eine einzelne Datenbankrolle zuweisen, den Namen der Rolle im Titel der Bedingung. Wenn Sie mehrere Rollen ein, könnten Sie etwas über die Rollengruppe 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 Rollen hinzu or-Operator (
||
) verwendet, wie im Folgenden gezeigt: Beispiel: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 angezeigt wird. in der Spalte IAM-Bedingung neben dem Feld Rolle.
Klicken Sie auf Speichern.
Gehen Sie zurück zum Infofeld und wählen Sie unter Rolle/Hauptkonto die folgenden Schritte aus: Cloud Spanner-Datenbankrollennutzer für jede definierte Bedingung.
Zahl in Klammern gibt die Anzahl der Hauptkonten an, die die Datenbankrolle durch diese Bedingung zugewiesen hat. Klicken Sie auf das Erweiterungspfeil, um die Liste der Hauptkonten aufzurufen.
Um Fehler in Datenbankrollennamen oder -bedingungen zu korrigieren oder Zusätzliche Datenbankrollen für ein Hauptkonto führen Sie die folgenden Schritte aus:
Maximieren Sie den Eintrag Cloud Spanner-Datenbankrollennutzer, in dem die gewünschte Bedingung.
Klicken Sie neben einem Hauptkonto auf das Symbol Bearbeiten (Stift).
Führen Sie im Bereich Bearbeitungszugriff auf database_name einen der folgenden Schritte aus: Folgendes:
Klicken Sie auf WEITERE ROLLE HINZUFÜGEN.
Klicken Sie zum Bearbeiten der Bedingung auf das Symbol Bearbeiten (Stift) neben zum Namen der Bedingung hinzu. Klicken Sie dann auf der Seite Bedingung bearbeiten CONDITION EDITOR, nehmen Sie Korrekturen vor und klicken Sie auf Speichern. zweimal.
gcloud
So gewähren Sie einem IAM-Hauptkonto Zugriff auf Datenbankrollen:
Aktivieren Sie eine detaillierte Zugriffssteuerung für das Hauptkonto mithilfe der
gcloud spanner databases add-iam-policy-binding
wie folgt: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 den Prinzipal. Sie muss das Formatuser|group|serviceAccount:email
haben oderdomain:domain
.Mit diesem Befehl wird das Hauptkonto zu einem Nutzer mit detaillierter Zugriffssteuerung. Senden für jedes Hauptkonto nur einmal ausführen.
Bei Erfolg gibt der Befehl die gesamte Richtlinie für die Datenbank aus.
Gewähren Sie die Berechtigung zur Verwendung einer oder mehrerer Datenbankrollen mithilfe von
gcloud spanner databases add-iam-policy-binding
wie folgt: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 den Prinzipal. Sie muss das Formatuser|group|serviceAccount:email
haben oderdomain:domain
.CONDITION
ist eine IAM-Bedingung Ausdruck, 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 dem Hauptkonto Zugriff auf mehrere Rollen gewähren möchten, fügen Sie weitere Rollen hinzu or-Operator (
||
) verwendet, wie im Folgenden gezeigt: Beispiel:--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 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 die Datenbankrollen
hr_rep
undhr_manager
gewährt. mit dem Hauptkontojsmith@example.com
.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
Sobald die anfängliche Konfiguration der detaillierten Zugriffssteuerung abgeschlossen ist, informieren Sie die Nutzer und Anwendungsentwicklern, dass sie mit der Verwendung von Datenbankrollen beginnen müssen.
Nutzer der detaillierten Zugriffssteuerung müssen eine Datenbankrolle angeben, wenn sie über die Google Cloud Console oder die Google Cloud CLI auf Spanner-Datenbanken zugreifen.
Für Anwendungen mit detaillierter Zugriffssteuerung muss in folgenden Fällen eine Datenbankrolle angegeben werden: auf die Datenbank zugreifen.
Weitere Informationen finden Sie unter Mit detaillierter Zugriffssteuerung auf eine Datenbank zugreifen
Hauptkonto auf detaillierte Zugriffssteuerung umstellen
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 der Datenbankrollen, wie in IAM-Hauptkonten Zugriff auf Datenbankrollen gewähren
Aktualisieren Sie alle Anwendungen, die als dieses Hauptkonto ausgeführt werden. Geben Sie die entsprechenden Datenbankrollen in Aufrufen von Clientbibliotheksmethoden.
Widerrufen Sie alle IAM-Rollen auf Datenbankebene für das Hauptkonto. Auf diese Weise Der Zugriff für das Hauptkonto wird nur durch eine Methode gesteuert.
Ausnahme: So interagieren Sie mit Spanner-Ressourcen in der Google Cloud Console müssen alle Nutzer die
roles/spanner.viewer
haben IAM-RolleFolgen Sie zum Widerrufen von IAM-Rollen auf Datenbankebene der Anleitung unter Entfernen Sie Berechtigungen auf Datenbankebene.
Datenbankrollen auflisten
Sie können die Datenbankrollen auflisten, die mit einer Datenbank verknüpft sind.
Console
Geben Sie zum Auflisten der Datenbankrollen die folgende Abfrage in die Spanner Studio-Seite für die Datenbank:
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 Rolle kann über Übernahme verwendet werden. Um alle Rollen abzurufen, Verwenden Sie den Befehl der Google Cloud CLI.
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
sind auch
gezeigt in column_privileges
.
Nutzer der detaillierten Zugriffssteuerung aufrufen
Führen Sie den folgenden Befehl aus, um eine Liste der Hauptkonten aufzurufen, die Nutzer mit detaillierter Zugriffssteuerung sind
. Damit der Befehl ausgeführt werden kann, muss die Cloud Asset API auf Ihrem Gerät aktiviert sein.
und Sie müssen über
cloudasset.assets.searchAllIamPolicies
IAM-Berechtigung
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
Wenn Sie eine Liste der Hauptkonten aufrufen möchten, denen Zugriff auf ein bestimmtes
führen Sie den folgenden Befehl aus. Zum Ausführen des Befehls benötigen Sie den
die Cloud Asset API für Ihr Projekt aktiviert ist und Sie die
cloudasset.assets.searchAllIamPolicies
IAM-Berechtigung
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
So rufen Sie eine Liste der angegebenen IAM-Bedingungen auf: beim Gewähren der Rolle Cloud Spanner-Datenbankrollennutzer zu einem Hauptkonto, 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)'
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
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 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…"
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
Durch das Verwerfen einer Datenbankrolle wird automatisch die Mitgliedschaft anderer Rollen widerrufen aus der Rolle aus und widerruft die Mitgliedschaft der Rolle in anderen Rollen.
Führen Sie zuerst die folgenden Schritte aus, um eine Datenbankrolle zu entfernen:
- Heben Sie alle Berechtigungen für die detaillierte Zugriffssteuerung für die Rolle auf.
- Alle IAM-Richtlinienbindungen entfernen die sich auf diese Rolle beziehen, sodass eine später mit derselben Rolle erstellte Datenbankrolle name 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
Syntaxdetails für die
REVOKE
-Anweisung Siehe GoogleSQL-Datendefinitionssprache. Informationen zu Berechtigungen finden Sie unter Berechtigungen für detaillierte Zugriffssteuerung.Wenn Sie beispielsweise
SELECT
widerrufen möchten,INSERT
undUPDATE
für die Tabellenemployees
undcontractors
aus dem Datenbankrollehr_manager
die folgende Anweisung ein:REVOKE SELECT, INSERT, UPDATE ON TABLE employees, contractors FROM ROLE hr_manager;
PostgreSQL
Syntaxdetails für die
REVOKE
-Anweisung Siehe PostgreSQL-Datendefinitionssprache. Informationen zu Berechtigungen finden Sie unter Berechtigungen für detaillierte Zugriffssteuerung.Um beispielsweise den
SELECT
zu widerrufen, BerechtigungenINSERT
undUPDATE
füremployees
undcontractors
Tabellen der Datenbankrollehr_manager
. Geben Sie den folgende Erklärung:REVOKE SELECT, INSERT, UPDATE ON TABLE employees, contractors FROM hr_manager;
Sie können eine DDL-Vorlage für die
REVOKE
-Anweisung verwenden. Im Explorer – gehen Sie zu der Rolle, die Sie widerrufen möchten. privilegiert. 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 angezeigt.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 für eines der Hauptkonten auf das Symbol Hauptkonto bearbeiten (Stiftsymbol).
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 entfernen möchten, rufen Sie die Seite Spanner Studio auf und geben Sie Folgendes ein: Anweisung:
DROP ROLE ROLE_NAME;
Klicken Sie auf Senden.
gcloud
Um alle Berechtigungen für eine Rolle zu widerrufen und die Rolle dann zu entfernen, verwenden Sie die
gcloud spanner databases ddl update
wie folgt: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 die
gcloud spanner databases remove-iam-policy-binding
wie folgt: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 den Prinzipal. Sie muss das Formatuser|group|serviceAccount:email
haben oderdomain:domain
.CONDITION
ist eine IAM-Bedingung Ausdruck, 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 Bedingung übereinstimmen Spezifikation, 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