Die detaillierte Zugriffssteuerung von Spanner kombiniert die Vorteile der Identitäts- und Zugriffsverwaltung (IAM) mit der rollenbasierten Zugriffssteuerung von SQL. Bei der detaillierten Zugriffssteuerung definieren Sie Datenbankrollen, gewähren den Rollen Berechtigungen und erstellen IAM-Richtlinien, um IAM-Hauptkonten Berechtigungen für Datenbankrollen zu gewähren. Auf dieser Seite wird beschrieben, wie Sie die detaillierte Zugriffssteuerung mit Spanner für Datenbanken mit GoogleSQL- und PostgreSQL-Dialekt verwenden.
Als Administrator müssen Sie die detaillierte Zugriffssteuerung für einzelne IAM-Hauptkonten aktivieren. Hauptkonten, für die die detaillierte Zugriffssteuerung aktiviert ist („Nutzer der detaillierten Zugriffssteuerung“), müssen eine Datenbankrolle übernehmen, um auf Spanner-Ressourcen zuzugreifen.
Der Ressourcenzugriff für Nutzer, die keine Nutzer der detaillierten Zugriffssteuerung sind, wird durch IAM-Rollen auf Datenbankebene gesteuert. Die detaillierte Zugriffssteuerung ist vollständig kompatibel und kann mit der vorhandenen IAM-Zugriffssteuerung auf Datenbankebene zusammen verwendet werden. Sie können damit auf einzelne Datenbankobjekte zugreifen. Verwenden Sie IAM-Rollen, um den Zugriff auf die gesamte Datenbank zu steuern.
Mit der detaillierten Zugriffssteuerung können Sie den Zugriff auf Tabellen, Spalten, Ansichten und Änderungsstreams steuern.
Für die Verwaltung der detaillierten Zugriffssteuerung verwenden Sie die folgenden DDL-Anweisungen:
CREATE
- undDROP
-Anweisungen zum Erstellen und Löschen von Datenbankrollen Datenbankrollen sind Sammlungen von Berechtigungen. Sie können bis zu 100 Rollen für eine Datenbank erstellen.GRANT
- undREVOKE
-Anweisungen zum Gewähren und Widerrufen von Berechtigungen für und von Datenbankrollen. Zu den Berechtigungen gehörenSELECT
,INSERT
,UPDATE
,DELETE
undEXECUTE
. Die Namen der Berechtigungen entsprechen den gleichnamigen SQL-Anweisungen. Eine Rolle mit demINSERT
-Berechtigung kann beispielsweise die SQL-AnweisungINSERT
auf die Tabellen ausführen, die in derGRANT
-Anweisung angegeben sind.Mit den folgenden DDL-Anweisungen wird der Datenbankrolle
hr_rep
SELECT
für die Tabelleemployees
gewährt.GoogleSQL
CREATE ROLE hr_rep; GRANT SELECT ON TABLE employees TO ROLE hr_rep;
PostgreSQL
CREATE ROLE hr_rep; GRANT SELECT ON TABLE employees TO hr_rep;
Weitere Informationen zu Berechtigungen finden Sie unter Referenz zu Berechtigungen für die detaillierte Zugriffssteuerung.
GRANT
-Anweisungen zum Gewähren von Rollen an andere Rollen, um Hierarchien von Rollen mit Berechtigungsübernahme zu erstellen.
Anwendungsfälle
Im Folgenden finden Sie Beispiele für Anwendungsfälle für die detaillierte Zugriffssteuerung:
- Ein HR-Informationssystem mit Rollen für Analysten für Vertriebsvergütung, Vertriebsmanagement und HR-Analysten, jeweils mit unterschiedlichen Zugriffsebenen auf die Daten. Beispielsweise sollten Vergütungsanalysten und das Vertriebsmanagement keine Sozialversicherungsnummern sehen.
- Eine Mitfahrdienst-App mit unterschiedlichen Dienstkonten und Berechtigungen für Fahrgäste und Fahrer.
- Ein Ledger, das
SELECT
- undINSERT
-Vorgänge, aber keineUPDATE
- undDELETE
-Vorgänge zulässt.
Spanner-Ressourcen und ihre Berechtigungen
Die folgende Liste enthält Spanner-Ressourcen und die Berechtigungen für die detaillierte Zugriffssteuerung, die Sie für sie gewähren können.
- Schemas
- Sie können das Berechtigungsobjekt
USAGE
für Schemata für bestimmte Datenbankrollen gewähren. Bei einem nicht standardmäßigen Schema müssen Datenbankrollen die BerechtigungUSAGE
für den Zugriff auf die Datenbankobjekte haben. Die Berechtigungsprüfung sieht so aus:
Haben Sie USAGE
im Schema?
Nein: Lehnen Sie den Zugriff ab.
Ja: Haben Sie auch die entsprechenden Berechtigungen für die Tabelle?
Nein: Lehnen Sie den Zugriff ab.
Ja: Sie können auf die Tabelle zugreifen.
- Tabellen
- Sie können Datenbankrollen die Berechtigungen
SELECT
,INSERT
,UPDATE
undDELETE
für Tabellen gewähren. Bei überlappenden Tabellen wird eine Berechtigung, die für die übergeordnete Tabelle gewährt wurde, nicht an die untergeordnete Tabelle weitergegeben. - Spalten
- Sie können
SELECT
,INSERT
undUPDATE
für einen Teil der Spalten in einer Tabelle gewähren. Das Berechtigungsobjekt gilt dann nur für diese Spalten.DELETE
ist auf Spaltenebene nicht zulässig. - Aufrufe
- Sie können einer Datenansicht das
SELECT
-Recht erteilen. Für Datenansichten wird nurSELECT
unterstützt. Spanner unterstützt sowohl die Sicht auf die Rechte des Aufrufers als auch die Sicht auf die Rechte des Definierers. Wenn Sie eine Ansicht mit den Rechten des Aufrufers erstellen, benötigt die Datenbankrolle oder der Nutzer zum Abfragen der Ansicht die BerechtigungSELECT
für die Ansicht und die BerechtigungSELECT
für die zugrunde liegenden Objekte, auf die in der Ansicht verwiesen wird. Wenn Sie eine Ansicht mit den Rechten des Erstellers erstellen, benötigt die Datenbankrolle oder der Nutzer zum Abfragen der Ansicht nur die BerechtigungSELECT
für die Ansicht. Weitere Informationen finden Sie unter Übersicht über Aufrufe. - Streams ändern
- Sie können
SELECT
für Änderungsstreams gewähren. Außerdem müssen SieEXECUTE
für die Lesefunktion gewähren, die mit einem Änderungsstream verknüpft ist. Weitere Informationen finden Sie unter Detaillierte Zugriffssteuerung für Änderungsstreams. - Sequenzen
- Sie können
SELECT
undUPDATE
für Sequenzen gewähren. Weitere Informationen finden Sie unter Detaillierte Zugriffssteuerung für Sequenzen. - Modelle
- Sie können
EXECUTE
für Modelle gewähren. Weitere Informationen finden Sie unter Detaillierte Zugriffssteuerung für Modelle.
Rollen für die detaillierte Zugriffssteuerung
Bei der detaillierten Zugriffssteuerung gibt es für jede Datenbank vordefinierte Systemrollen. Wie benutzerdefinierte Datenbankrollen können auch Systemrollen den Zugriff auf Spanner-Ressourcen steuern.
Beispiel: Ein Nutzer mit detaillierter Zugriffssteuerung muss die Systemrolle spanner_sys_reader
haben, um auf den Key Visualizer zugreifen zu können, und die Systemrolle spanner_info_reader
, um bei der Abfrage der INFORMATION_SCHEMA
-Tabellen unfiltrierte Ergebnisse zu sehen.
Weitere Informationen finden Sie unter Systemrollen für die detaillierte Zugriffssteuerung.
Hierarchien und Übernahme von Datenbankrollen
Sie können Hierarchien von Datenbankrollen erstellen, bei denen untergeordnete Rollen die Berechtigungen der übergeordneten Rollen übernehmen. Untergeordnete Rollen werden als Mitglieder der übergeordneten Rolle bezeichnet.
Betrachten Sie beispielsweise die folgenden GRANT
-Anweisungen:
GoogleSQL
GRANT SELECT ON TABLE employees TO ROLE pii_access;
GRANT ROLE pii_access TO ROLE hr_manager, hr_director;
PostgreSQL
GRANT SELECT ON TABLE employees TO pii_access;
GRANT pii_access TO hr_manager, hr_director;
hr_manager
und hr_director
sind Mitglieder der Rolle pii_access
und erben die Berechtigung SELECT
für die Tabelle employees
.
hr_manager
und hr_director
können auch Mitglieder haben. Diese Mitglieder erhalten dann die Berechtigung SELECT
für employees
.
Die Tiefe von Rollenhierarchien ist nicht begrenzt. Bei tiefen und breiten Rollenhierarchien kann die Abfrageleistung jedoch beeinträchtigt werden.
Sichern und wiederherstellen
Spanner-Sicherungen enthalten Definitionen von Datenbankrollen. Wenn eine Datenbank aus einer Sicherung wiederhergestellt wird, werden die Datenbankrollen mit den gewährten Berechtigungen neu erstellt. IAM-Richtlinien sind jedoch keine Bestandteile von Datenbanksicherungen. Daher müssen Sie den Hauptpersonen in der wiederhergestellten Datenbank den Zugriff auf Datenbankrollen neu gewähren.
Detaillierte Zugriffssteuerung einrichten
Im Folgenden finden Sie eine allgemeine Übersicht über die Schritte, die Sie ausführen müssen, um Daten mit einer detaillierten Zugriffssteuerung zu schützen. Weitere Informationen finden Sie unter Detaillierte Zugriffssteuerung konfigurieren.
Sie benötigen die IAM-Rollen roles/spanner.admin
oder roles/spanner.databaseAdmin
, um diese Aufgaben ausführen zu können.
- Erstellen Sie Datenbankrollen und gewähren Sie den Rollen Berechtigungen.
- Optional: Erstellen Sie Rollenhierarchien mit Vererbung, indem Sie Rollen anderen Rollen zuweisen.
- Führen Sie die folgenden Schritte für jedes Hauptkonto aus, das ein Nutzer für die Zugriffssteuerung sein soll:
- Aktivieren Sie die detaillierte Zugriffssteuerung für den Hauptberechtigten.
Dem Hauptkonto wird dann automatisch die Datenbankrolle
public
zugewiesen, die standardmäßig keine Berechtigungen hat. Dieser Vorgang muss für jeden Hauptbevollmächtigten nur einmal ausgeführt werden. - Weisen Sie dem Hauptkonto IAM-Berechtigungen für eine oder mehrere Datenbankrollen zu.
- Wenn dem Hauptkonto alle erforderlichen Datenbankrollen zugewiesen wurden und es IAM-Rollen auf Datenbankebene hat, sollten Sie die Rollen auf Datenbankebene widerrufen, damit die Zugriffssteuerung des Hauptkontos nur mit einer Methode verwaltet wird.
- Aktivieren Sie die detaillierte Zugriffssteuerung für den Hauptberechtigten.
Dem Hauptkonto wird dann automatisch die Datenbankrolle
Beschränkungen
- Bei Exportvorgängen werden keine Datenbankrollen und ‑berechtigungen exportiert und Importvorgänge können sie nicht importieren. Rollen und Berechtigungen müssen Sie nach Abschluss des Imports manuell einrichten.
- Der Tab Daten auf der Seite TABELLE in der Google Cloud Console ist für Nutzer mit einer detaillierten Zugriffssteuerung nicht verfügbar.
Nächste Schritte
- Mit detaillierter Zugriffssteuerung auf eine Datenbank zugreifen
- Detaillierte Zugriffssteuerung für Änderungsstreams
- Detaillierte Zugriffssteuerung konfigurieren
- Referenz zu Berechtigungen für die detaillierte Zugriffssteuerung
- Systemrollen für die detaillierte Zugriffssteuerung
- GoogleSQL-
GRANT
- undREVOKE
-Anweisungen - PostgreSQL-Anweisungen
GRANT
undREVOKE
- Detaillierte Zugriffssteuerung für Sequenzen
- Detaillierte Zugriffssteuerung für Modelle