Die fein abgestimmte Zugriffssteuerung von Spanner kombiniert die Vorteile der Identitäts- und Zugriffsverwaltung (IAM) mit der herkömmlichen rollenbasierten Zugriffssteuerung in SQL. Mit der fein abgestimmten Zugriffssteuerung definieren Sie Datenbankrollen, gewähren den Rollen Berechtigungen und erstellen IAM-Richtlinien, um IAM-Hauptkonten Berechtigungen für Datenbankrollen zu erteilen.
Als Administrator müssen Sie die fein abgestimmte Zugriffssteuerung für einzelne IAM-Hauptkonten aktivieren. Hauptkonten, für die eine fein abgestimmte Zugriffssteuerung aktiviert ist (Nutzer mit detaillierter Zugriffssteuerung), müssen eine Datenbankrolle annehmen, 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 differenzierte Zugriffssteuerung ist vollständig kompatibel und kann mit der vorhandenen IAM-Zugriffssteuerung auf Datenbankebene verwendet werden.
Mit der fein abgestimmten Zugriffssteuerung können Sie den Zugriff auf Tabellen, Spalten, Ansichten und Änderungsstreams steuern.
Mit den folgenden DDL-Anweisungen können Sie eine detaillierte Zugriffssteuerung 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 zum Gewähren und Widerrufen von Berechtigungen für und von Datenbankrollen. Zu den Berechtigungen gehörenSELECT
,INSERT
,UPDATE
,DELETE
undEXECUTE
. Die Berechtigungsnamen entsprechen den ähnlich benannten SQL-Anweisungen. Eine Rolle mit der BerechtigungINSERT
kann beispielsweise die SQL-AnweisungINSERT
für die Tabellen ausführen, die in der AnweisungGRANT
angegeben sind.Mit den folgenden DDL-Anweisungen wird
SELECT
für die 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 in der Referenz zu Berechtigungen für detaillierte Zugriffssteuerung.
GRANT
-Anweisungen zum Gewähren von Rollen an andere Rollen, um Rollenhierarchien mit Berechtigungsübernahme zu erstellen
Anwendungsfälle
Im Folgenden finden Sie Beispiele für Anwendungsfälle für eine differenzierte Zugriffssteuerung:
- Ein HR-Informationssystem mit Rollen für Sales Vergütungsanalyst, Sales Management und HR Analyst, die jeweils unterschiedliche Zugriffsebenen auf die Daten haben. Zum Beispiel 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 detaillierten Berechtigungen für die Zugriffssteuerung, die Sie ihnen gewähren können.
- Tabellen
- Sie können Datenbankrollen die Berechtigungen
SELECT
,INSERT
,UPDATE
undDELETE
für Tabellen erteilen. Bei verschachtelten Tabellen wird eine Berechtigung, die für die übergeordnete Tabelle gewährt wurde, nicht auch für die untergeordnete Tabelle übernommen. - 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
erteilen. Für Ansichten wird nurSELECT
unterstützt. Spanner unterstützt sowohl die Ansichten der Aufrufrechte als auch die Rechte des Definierens. Wenn Sie eine Ansicht mit den Aufruferberechtigungen 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 Definitionsrechten erstellen, benötigt die Datenbankrolle oder der Nutzer für die Abfrage der Ansicht nur die BerechtigungSELECT
für die Ansicht. Weitere Informationen finden Sie unter Views – Übersicht. - Streams ändern
- Sie können
SELECT
für Änderungsstreams gewähren. 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
- Du kannst
EXECUTE
für Modelle zuweisen. Weitere Informationen finden Sie unter Detailgenaue Zugriffssteuerung für Modelle.
Detaillierte Systemrollen für die Zugriffssteuerung
Eine differenzierte Zugriffssteuerung verfügt für jede Datenbank über vordefinierte Systemrollen. Wie benutzerdefinierte Datenbankrollen können Systemrollen den Zugriff auf Spanner-Ressourcen steuern.
Einem Nutzer einer detaillierten Zugriffssteuerung muss beispielsweise die Systemrolle spanner_sys_reader
für den Zugriff auf Key Visualizer zugewiesen werden. Er benötigt außerdem die Systemrolle spanner_info_reader
, um beim Abfragen der INFORMATION_SCHEMA
-Tabellen ungefilterte Ergebnisse sehen zu können.
Weitere Informationen finden Sie unter Detailgenaue Systemrollen für die Zugriffssteuerung.
Datenbankrollenhierarchien und Übernahme
Sie können Hierarchien von Datenbankrollen erstellen, wobei 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 auch Mitglieder haben, die dann die Berechtigung SELECT
für employees
übernehmen.
Es gibt keine Einschränkungen in Bezug auf die Tiefe von Rollenhierarchien, aber die Abfrageleistung kann bei tiefen und breiten Rollenhierarchiestrukturen abnehmen.
Sichern und wiederherstellen
Spanner-Sicherungen enthalten Definitionen von Datenbankrollen. 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 den Zugriff auf Datenbankrollen noch einmal gewähren.
Detaillierte Zugriffssteuerung einrichten
Im Folgenden werden die allgemeinen Schritte beschrieben, die Sie ausführen, um mit der Sicherung von Daten mit einer fein abgestimmten Zugriffssteuerung zu beginnen. Weitere Informationen finden Sie unter Detaillierte Zugriffssteuerung konfigurieren.
Zum Ausführen dieser Aufgaben benötigen Sie die IAM-Rollen roles/spanner.admin
oder roles/spanner.databaseAdmin
.
- Erstellen Sie Datenbankrollen und gewähren Sie Berechtigungen für die Rollen.
- Optional: Erstellen Sie Rollenhierarchien mit Übernahme. Dazu weisen Sie anderen Rollen Rollen zu.
- Führen Sie die folgenden Schritte für jedes Hauptkonto aus, das ein Nutzer einer detaillierten Zugriffssteuerung sein soll:
- Aktivieren Sie eine fein abgestimmte 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 und das Hauptkonto IAM-Rollen auf Datenbankebene hat, sollten Sie die Rollen auf Datenbankebene widerrufen, damit die Zugriffssteuerung des Hauptkontos nur von einer Methode verwaltet wird.
- Aktivieren Sie eine fein abgestimmte Zugriffssteuerung für das Hauptkonto.
Dem Hauptkonto wird dann automatisch die Datenbankrolle
Beschränkungen
- Exportvorgänge exportieren keine Datenbankrollen und -berechtigungen, und Importvorgänge können sie nicht importieren. Sie müssen Rollen und Berechtigungen nach Abschluss des Imports manuell einrichten.
- Der Tab Daten auf der Seite TABELLE in der Google Cloud Console ist nicht für Nutzer der detaillierten Zugriffssteuerung 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:
- Detailgenaue Zugriffssteuerung für Änderungsstreams
- Detaillierte Zugriffssteuerung konfigurieren
- Referenz für detaillierte Zugriffssteuerungsberechtigungen
- Detaillierte Systemrollen für die Zugriffssteuerung
- GoogleSQL-Anweisungen
GRANT
undREVOKE
- PostgreSQL-Anweisungen vom Typ
GRANT
undREVOKE
- Detailgenaue Zugriffssteuerung für Sequenzen
- Detailgenaue Zugriffssteuerung für Modelle