Die differenzierte Zugriffssteuerung von Spanner kombiniert die Vorteile von Identity and Access Management (IAM) mit der rollenbasierten SQL-Zugriffssteuerung. Mit einer differenzierten Zugriffssteuerung definieren Sie Datenbankrollen, gewähren den Rollen Berechtigungen und erstellen IAM-Richtlinien, um IAM-Hauptkonten Berechtigungen für Datenbankrollen zu gewähren.
Als Administrator müssen Sie die differenzierte Zugriffssteuerung für einzelne IAM-Hauptkonten aktivieren. Hauptkonten, für die eine detaillierte Zugriffssteuerung aktiviert ist („Nutzer mit detaillierter Zugriffssteuerung“), müssen eine Datenbankrolle für den Zugriff auf Spanner-Ressourcen annehmen.
Der Ressourcenzugriff für Nutzer, die keine detaillierte Zugriffssteuerung haben, wird über IAM-Rollen auf Datenbankebene gesteuert. Die differenzierte Zugriffssteuerung ist vollständig kompatibel und kann mit der vorhandenen IAM-Zugriffssteuerung auf Datenbankebene kombiniert werden. Sie können damit auf einzelne Datenbankobjekte zugreifen. Verwenden Sie IAM-Rollen, um den Zugriff auf die gesamte Datenbank zu steuern.
Mit einer differenzierten Zugriffssteuerung können Sie den Zugriff auf Tabellen, Spalten, Ansichten und Änderungsstreams steuern.
Verwenden Sie die folgenden DDL-Anweisungen, um eine detaillierte Zugriffssteuerung zu verwalten:
- Die Anweisungen
CREATE
undDROP
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, um Berechtigungen für und von Datenbankrollen zu gewähren und zu widerrufen. Zu den Berechtigungen gehörenSELECT
,INSERT
,UPDATE
,DELETE
undEXECUTE
. Berechtigungsnamen entsprechen den entsprechenden SQL-Anweisungen. Beispielsweise kann eine Rolle mit der BerechtigungINSERT
die SQL-AnweisungINSERT
für die Tabellen ausführen, die in derGRANT
-Anweisung angegeben sind.Mit den folgenden DDL-Anweisungen wird
SELECT
für Tabelleemployees
der Datenbankrollehr_rep
zugewiesen.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 Zuweisen von Rollen zu anderen Rollen, um Hierarchien von Rollen mit Rechteübernahme zu erstellen.
Anwendungsfälle
Im Folgenden finden Sie Beispiele für Anwendungsfälle für eine detaillierte Zugriffssteuerung:
- Ein HR-Informationssystem mit den Rollen für Vertriebsvergütungsanalysten, Verkaufsmanagement und Personalanalysten, die jeweils unterschiedliche Zugriffsebenen für die Daten haben. Beispielsweise sollten Vergütungsanalysten und das Verkaufsmanagement keine Sozialversicherungsnummern sehen.
- Eine Mitfahrdienstanwendung mit verschiedenen Dienstkonten und Berechtigungen für Fahrgäste und Fahrer.
- Ein Verzeichnis, das
SELECT
- undINSERT
-Vorgänge, aber keineUPDATE
- undDELETE
-Vorgänge zulässt.
Spanner-Ressourcen und ihre Berechtigungen
Im Folgenden finden Sie eine Liste der Spanner-Ressourcen und der Berechtigungen für die detaillierte Zugriffssteuerung, die Sie ihnen erteilen können.
- Schemas
- Sie können bestimmten Datenbankrollen die Berechtigung
USAGE
für Schemas gewähren. Bei einem nicht standardmäßigen Schema müssen Datenbankrollen die BerechtigungUSAGE
haben, um auf die Datenbankobjekte zugreifen zu können. Die Berechtigungsprüfung sieht so aus:
Haben Sie USAGE
für das Schema?
Nein: Zugriff ablehnen.
Ja: Haben Sie auch die entsprechenden Rechte am Tisch?
Nein: Zugriff ablehnen.
Ja: Sie können auf die Tabelle zugreifen.
- Tables
- Sie können Datenbankrollen die Berechtigungen
SELECT
,INSERT
,UPDATE
undDELETE
für Tabellen erteilen. Bei verschränkten Tabellen wird eine für die übergeordnete Tabelle gewährte Berechtigung nicht auf die untergeordnete Tabelle übertragen. - Spalten
- Sie können
SELECT
,INSERT
undUPDATE
für eine Teilmenge von Spalten in einer Tabelle zuweisen. Die Berechtigung gilt dann nur für diese Spalten.DELETE
ist auf Spaltenebene nicht zulässig. - Ansichten
- Sie können für eine Datenansicht die Berechtigung
SELECT
gewähren. Für Ansichten wird nurSELECT
unterstützt. Spanner unterstützt sowohl die Rechteansichten des Aufrufers als auch die Rechteansichten der Definitionseinheit. Wenn Sie eine Ansicht mit Aufruferrechten erstellen, benötigt die Datenbankrolle oder der Nutzer zum Abfragen der Ansicht die BerechtigungSELECT
für die Ansicht sowie die BerechtigungSELECT
für die zugrunde liegenden Objekte, auf die in der Ansicht verwiesen wird. Wenn Sie eine Ansicht mit Definierenderrechten erstellen, benötigt die Datenbankrolle oder der Nutzer zum Abfragen der Ansicht nur die BerechtigungSELECT
für die Ansicht. Weitere Informationen finden Sie unter Ansichten – Übersicht. - Streams ändern
- Sie können
SELECT
für Änderungsstreams zuweisen. Außerdem müssen SieEXECUTE
für die Lesefunktion zuweisen, die mit einem Änderungsstream verknüpft ist. Weitere Informationen finden Sie unter Detailgenaue Zugriffssteuerung für Änderungsstreams. - Sequenzen
- Sie können
SELECT
undUPDATE
für Sequenzen zuweisen. Weitere Informationen finden Sie unter Detailgenaue Zugriffssteuerung für Sequenzen. - Modelle
- Sie können
EXECUTE
für Modelle gewähren. Weitere Informationen finden Sie unter Detailgenaue Zugriffssteuerung für Modelle.
Detaillierte Zugriffssteuerungssystemrollen
Die differenzierte Zugriffssteuerung umfasst für jede Datenbank vordefinierte Systemrollen. Wie benutzerdefinierte Datenbankrollen können Systemrollen den Zugriff auf Spanner-Ressourcen steuern.
Einem Nutzer mit einer detaillierten Zugriffssteuerung muss beispielsweise die Systemrolle spanner_sys_reader
für den Zugriff auf Key Visualizer gewährt werden. Er benötigt außerdem die Systemrolle spanner_info_reader
, um beim Abfragen der Tabellen INFORMATION_SCHEMA
ungefilterte 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, in denen untergeordnete Rollen die Berechtigungen von ü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 übernehmen die Berechtigung SELECT
für die Tabelle employees
.
hr_manager
und hr_director
können auch Mitglieder haben, die dann die Berechtigung SELECT
für employees
übernehmen würden.
Es gibt keine Grenzen für die Tiefe der Rollenhierarchien, aber die Abfrageleistung kann bei tiefen und breiten Rollenhierarchiestrukturen sinken.
Sichern und wiederherstellen
Spanner-Sicherungen enthalten Datenbankrollendefinitionen. Wenn eine Datenbank aus einer Sicherung wiederhergestellt wird, werden Datenbankrollen mit den ihnen gewährten Berechtigungen neu erstellt. IAM-Richtlinien sind jedoch nicht Teil von Datenbanksicherungen. Daher müssen Sie Hauptkonten in der wiederhergestellten Datenbank noch einmal Zugriff auf Datenbankrollen gewähren.
Detaillierte Zugriffssteuerung einrichten
Im Folgenden werden die übergeordneten Schritte beschrieben, um Daten mit einer detaillierten Zugriffssteuerung zu sichern. Weitere Informationen finden Sie unter Detaillierte Zugriffssteuerung konfigurieren.
Zum Ausführen dieser Aufgaben benötigen Sie die IAM-Rolle roles/spanner.admin
oder roles/spanner.databaseAdmin
.
- Erstellen Sie Datenbankrollen und gewähren Sie den Rollen Berechtigungen.
- Optional: Erstellen Sie Rollenhierarchien mit Übernahme, indem Sie anderen Rollen Rollen zuweisen.
- Führen Sie diese Schritte für jedes Hauptkonto aus, das ein Nutzer mit detaillierter Zugriffssteuerung sein soll:
- Aktivieren Sie die detaillierte Zugriffssteuerung für das Hauptkonto.
Dem Hauptkonto wird dann automatisch die Datenbankrolle
public
zugewiesen, die standardmäßig keine Berechtigungen hat. Dies ist ein einmaliger Vorgang für jedes Hauptkonto. - Gewähren Sie dem Hauptkonto IAM-Berechtigungen für eine oder mehrere Datenbankrollen.
- Nachdem dem Hauptkonto alle erforderlichen Datenbankrollen gewährt wurden, sollten Sie, wenn es IAM-Rollen auf Datenbankebene hat, gegebenenfalls die Rollen auf Datenbankebene widerrufen, sodass die Zugriffssteuerung des Hauptkontos nur von einer Methode verwaltet wird.
- Aktivieren Sie die detaillierte Zugriffssteuerung für das Hauptkonto.
Dem Hauptkonto wird dann automatisch die Datenbankrolle
Beschränkungen
- Bei Exportvorgängen werden keine Datenbankrollen und ‐berechtigungen exportiert und sie können nicht von Importvorgängen importiert werden. Sie müssen Rollen und Berechtigungen manuell einrichten, nachdem der Import abgeschlossen ist.
- Der Tab Daten auf der Seite TABELLE in der Google Cloud Console ist für Nutzer mit detaillierter Zugriffssteuerung nicht verfügbar.
- Für
UPDATE
- undDELETE
-Vorgänge istSELECT
für alle Schlüsselspalten erforderlich.
Nächste Schritte
Weitere Informationen finden Sie unter den folgenden Themen:
- Mit detaillierter Zugriffssteuerung auf eine Datenbank zugreifen
- Detailgenaue Zugriffssteuerung für Änderungsstreams
- Detaillierte Zugriffssteuerung konfigurieren
- Detaillierte Referenz zu Berechtigungen für die Zugriffssteuerung
- Detailgenaue Rollen für die Zugriffssteuerung
GRANT
- undREVOKE
-Anweisungen von GoogleSQL- PostgreSQL-Anweisungen
GRANT
undREVOKE
- Detailgenaue Zugriffssteuerung für Sequenzen
- Detailgenaue Zugriffssteuerung für Modelle