Die detaillierte Zugriffssteuerung von Spanner kombiniert die Vorteile von Identity and Access Management (IAM) mit der rollenbasierten SQL-Zugriffssteuerung. Mit 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 Cloud Spanner für Datenbanken im GoogleSQL-Dialekt und Datenbanken im 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 geregelt. Die detaillierte Zugriffssteuerung ist vollständig kompatibel und kann mit der vorhandenen IAM-Zugriffssteuerung auf Datenbankebene koexistieren. 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.
Verwenden Sie die folgenden DDL-Anweisungen, um die detaillierte Zugriffssteuerung zu verwalten:
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, um Datenbankrollen Berechtigungen zu gewähren und zu entziehen. Zu den Berechtigungen gehörenSELECT,INSERT,UPDATE,DELETEundEXECUTE. Die Namen der Berechtigungen entsprechen den gleichnamigen SQL-Anweisungen. Eine Rolle mit der BerechtigungINSERTkann beispielsweise die SQL-AnweisungINSERTfür die Tabellen ausführen, die in der AnweisungGRANTangegeben sind.Mit den folgenden DDL-Anweisungen wird der Datenbankrolle
hr_repdie BerechtigungSELECTfür die Tabelleemployeesgewä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 für detaillierte Zugriffssteuerungsberechtigungen.
GRANT-Anweisungen, um anderen Rollen Rollen zuzuweisen und so Rollenhierarchien mit Berechtigungsvererbung zu erstellen.
Anwendungsfälle
Im Folgenden finden Sie Beispielanwendungsfälle für die detaillierte Zugriffssteuerung:
- Ein HR-Informationssystem mit Rollen für Analysten für Vertriebsvergütung, Vertriebsmanagement und HR-Analysten, die jeweils unterschiedliche Zugriffsebenen auf die Daten haben. Beispielsweise sollten Vergütungsanalysten und Vertriebsleiter keine Sozialversicherungsnummern sehen.
- Eine Fahrdienst-App mit verschiedenen Dienstkonten und Berechtigungen für Fahrgäste und Fahrer.
- Ein Ledger, das
SELECT- undINSERT-Vorgänge zulässt, aber keineUPDATE- undDELETE-Vorgänge.
Spanner-Ressourcen und ihre Berechtigungen
Im Folgenden finden Sie eine Liste der Spanner-Ressourcen und der Berechtigungen für die detaillierte Zugriffssteuerung, die Sie dafür gewähren können.
- Schemas
- Sie können die Berechtigung
USAGEfür Schemas bestimmten Datenbankrollen gewähren. Für ein nicht standardmäßiges Schema müssen Datenbankrollen die BerechtigungUSAGEhaben, um auf die Datenbankobjekte zuzugreifen. Die Berechtigungsprüfung sieht so aus:
Haben Sie USAGE im Schema?
Nein: Zugriff ablehnen.
Ja: Haben Sie auch die entsprechenden Berechtigungen für die Tabelle?
Nein: Zugriff ablehnen.
Ja: Sie können auf die Tabelle zugreifen.
- Tabellen
- Sie können Datenbankrollen die Berechtigungen
SELECT,INSERT,UPDATEundDELETEfür Tabellen gewähren. Bei verschachtelten Tabellen wird eine Berechtigung, die für die übergeordnete Tabelle gewährt wurde, nicht an die untergeordnete Tabelle weitergegeben. - Spalten
- Sie können
SELECT,INSERTundUPDATEfür eine Teilmenge von Spalten in einer Tabelle gewähren. Die Berechtigung gilt dann nur für diese Spalten.DELETEist auf Spaltenebene nicht zulässig. - Aufrufe
- Sie können die Berechtigung
SELECTfür eine Ansicht gewähren. Für Ansichten wird nurSELECTunterstützt. Spanner unterstützt sowohl Ansichten mit Aufruferrechten als auch Ansichten mit Erstellerrechten. Wenn Sie eine Ansicht mit den Rechten des Aufrufers erstellen, benötigt die Datenbankrolle oder der Nutzer zum Abfragen der Ansicht die BerechtigungSELECTfür die Ansicht und die BerechtigungSELECTfü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 BerechtigungSELECTfür die Ansicht. Weitere Informationen finden Sie unter Ansichten – Übersicht. - Änderungsstreams
- Sie können
SELECTfür Änderungsstreams gewähren. Sie müssen auchEXECUTEfü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
SELECTundUPDATEfür Sequenzen gewähren. Weitere Informationen finden Sie unter Detaillierte Zugriffssteuerung für Sequenzen. - Modelle
- Sie können
EXECUTEfür Modelle gewähren. Weitere Informationen finden Sie unter Detaillierte Zugriffssteuerung für Modelle.
Systemrollen für die detaillierte Zugriffssteuerung
Für die detaillierte Zugriffssteuerung gibt es vordefinierte Systemrollen für jede Datenbank. Wie benutzerdefinierte Datenbankrollen können auch Systemrollen den Zugriff auf Spanner-Ressourcen steuern.
Beispielsweise muss einem Nutzer mit detaillierter Zugriffssteuerung die Systemrolle spanner_sys_reader zugewiesen werden, um auf Key Visualizer zuzugreifen. Außerdem benötigt er die Systemrolle spanner_info_reader, um ungefilterte Ergebnisse beim Abfragen der INFORMATION_SCHEMA-Tabellen zu sehen.
Weitere Informationen finden Sie unter Systemrollen für die detaillierte Zugriffssteuerung.
Datenbankrollenhierarchien und -übernahme
Sie können Hierarchien von Datenbankrollen erstellen, in denen untergeordnete Rollen die Berechtigungen übergeordneter 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 ebenfalls Mitglieder haben, die die Berechtigung SELECT für employees übernehmen.
Die Tiefe von Rollenhierarchien ist nicht begrenzt, aber die Abfrageleistung kann sich bei tiefen und breiten Rollenhierarchiestrukturen verschlechtern.
Sichern und wiederherstellen
Spanner-Sicherungen enthalten Datenbankrollendefinitionen. Wenn eine Datenbank aus einer Sicherung wiederhergestellt wird, werden die Datenbankrollen mit den ihnen gewährten Berechtigungen neu erstellt. IAM-Richtlinien sind jedoch nicht Teil von Datenbanksicherungen. Sie müssen daher Hauptkonten in der wiederhergestellten Datenbank noch einmal Zugriff auf Datenbankrollen gewähren.
Übersicht über die Einrichtung einer detaillierten Zugriffssteuerung
Im Folgenden finden Sie die allgemeinen Schritte, die Sie ausführen müssen, um Daten mit einer detaillierten Zugriffssteuerung zu sichern. Weitere Informationen finden Sie unter Detaillierte Zugriffssteuerung konfigurieren.
Sie benötigen die IAM-Rolle roles/spanner.admin oder roles/spanner.databaseAdmin, um diese Aufgaben auszuführen.
- Datenbankrollen erstellen und den Rollen Berechtigungen gewähren.
- Optional: Erstellen Sie Rollenhierarchien mit Vererbung, 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
publiczugewiesen, die standardmäßig keine Berechtigungen hat. Dieser Vorgang muss für jedes Hauptkonto nur einmal ausgeführt werden. - Gewähren Sie dem Hauptkonto IAM-Berechtigungen für eine oder mehrere Datenbankrollen.
- 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 über eine 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 bei Importvorgängen können sie nicht importiert werden. Nach Abschluss des Imports müssen Sie Rollen und Berechtigungen manuell einrichten.
- Der Tab Daten auf der Seite TABELLE in der Google Cloud Console ist für Nutzer mit detaillierter Zugriffssteuerung nicht verfügbar.
Nächste Schritte
- Auf eine Datenbank mit detaillierter Zugriffssteuerung zugreifen
- Detaillierte Zugriffssteuerung für Änderungsstreams
- Detaillierte Zugriffssteuerung konfigurieren
- Referenz zu Berechtigungen für die detaillierte Zugriffssteuerung
- Systemrollen für die detaillierte Zugriffssteuerung
- GoogleSQL-Anweisungen
GRANTundREVOKE - PostgreSQL-Anweisungen
GRANTundREVOKE - Detaillierte Zugriffssteuerung für Sequenzen
- Detaillierte Zugriffssteuerung für Modelle