Die detaillierte Zugriffssteuerung von Spanner kombiniert die Vorteile von Identity and Access Management (IAM) mit Rollenbasierte SQL-Zugriffssteuerung Mit der differenzierten Zugriffssteuerung definieren Sie Datenbankrollen erstellen, den Rollen Berechtigungen gewähren und IAM-Richtlinien zum Gewähren von Berechtigungen für Datenbankrollen IAM-Hauptkonten.
Als Administrator müssen Sie die differenzierte Zugriffssteuerung für einzelne IAM-Berechtigungen aktivieren. Hauptkonten. Hauptkonten für die eine differenzierte Zugriffssteuerung aktiviert ist („Nutzer mit fein abgestimmten Zugriffssteuerung“) müssen von einer Datenbank ausgehen. Rolle für den Zugriff auf Spanner-Ressourcen.
Der Ressourcenzugriff für Nutzer, die keine detaillierte Zugriffssteuerung haben, wird geregelt nach IAM-Rollen auf Datenbankebene. Die detaillierte Zugriffssteuerung ist vollständig kompatibel und kann parallel zu bestehenden Zugriffssteuerung auf IAM-Datenbankebene. Sie können damit auf für einzelne Datenbankobjekte. Um den Zugriff auf die gesamte Datenbank zu steuern, verwenden Sie IAM-Rollen:
Mit der detaillierten Zugriffssteuerung können Sie den Zugriff auf Tabellen, Spalten, Ansichten und Änderungsstreams.
Verwenden Sie die folgende DDL, um eine detaillierte Zugriffssteuerung zu verwalten Anweisungen:
- Die Anweisungen
CREATE
undDROP
zum Erstellen und Löschen von Datenbankrollen. Datenbankrollen sind Sammlungen von Berechtigungen. Sie können bis zu 100 Rollen pro Datenbank. GRANT
- undREVOKE
-Anweisungen zum Gewähren und Entziehen von Berechtigungen für und vom Datenbankrollen. Zu den Berechtigungen gehörenSELECT
,INSERT
,UPDATE
,DELETE
undEXECUTE
Berechtigungsnamen den gleich benannten SQL-Anweisungen entsprechen. Zum Beispiel kann eine Rolle mit dem Mit der BerechtigungINSERT
kann die SQL-AnweisungINSERT
für die Tabellen ausgeführt werden, die werden in derGRANT
-Anweisung angegeben.Die folgenden DDL-Anweisungen gewähren
SELECT
für Tabelleemployees
in die Datenbankrollehr_rep
ein.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 Detaillierte Referenz zu Berechtigungen für die Zugriffssteuerung
GRANT
-Anweisungen zum Zuweisen von Rollen zu anderen Rollen, um Hierarchien von Rollen mit Übernahme von Berechtigungen.
Anwendungsfälle
Im Folgenden finden Sie Beispiele für Anwendungsfälle für eine detaillierte Zugriffssteuerung:
- Ein HR-Informationssystem mit Rollen als Vertriebsmitarbeiter, Verkaufsmanagement und Personalanalyse, die jeweils unterschiedliche Zugriffsebenen für die Daten haben. Beispielsweise sollten Vergütungsanalysten und das Verkaufsmanagement keine sozialen Sozialversicherungsnummern.
- Eine Mitfahrdienstanwendung mit verschiedenen Dienstkonten und Berechtigungen für Fahrgäste und Fahrer.
- Ein Verzeichnis, das
SELECT
- undINSERT
-Vorgänge, aber nichtUPDATE
undDELETE
Vorgänge.
Spanner-Ressourcen und ihre Berechtigungen
Im Folgenden finden Sie eine Liste der Spanner-Ressourcen und der detaillierten Zugriffssteuerung Berechtigungen, die Sie ihnen erteilen können.
- Schemas
- Sie können bestimmten Datenbankrollen die Berechtigung
USAGE
für Schemas gewähren. Für ein nicht standardmäßiges Schema ist, müssen Datenbankrollen die BerechtigungUSAGE
haben, um darauf zuzugreifen die Datenbankobjekte. 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.
- Tabellen
- Sie können die Berechtigungen
SELECT
,INSERT
,UPDATE
undDELETE
für Tabellen zu Datenbankrollen zu wechseln. Für verschränkte Tabellen wird eine Berechtigung für die wird die übergeordnete Tabelle nicht an die untergeordnete Tabelle weitergegeben. - Spalten
- Sie können
SELECT
,INSERT
undUPDATE
für eine Teilmenge von Spalten in einer . Die Berechtigung gilt dann nur für diese Spalten.DELETE
ist nicht Spaltenebene zulässig. - Aufrufe
- Sie können für eine Datenansicht die Berechtigung
SELECT
gewähren. NurSELECT
wird unterstützt für Aufrufe. Spanner unterstützt sowohl die Rechteansichten des Aufrufers als auch die der Definierende. auf die Rechte anderer. Wenn Sie eine Ansicht mit den Rechten des Aufrufers erstellen, um die Ansicht abzufragen, Datenbankrolle oder Nutzer benötigt die BerechtigungSELECT
für die Ansicht sowie dieSELECT
-Berechtigung für die zugrunde liegenden Objekte, auf die in der Ansicht verwiesen wird. Wenn Sie Erstellen Sie eine Ansicht mit den Rechten des Definiereners, um die Ansicht abzufragen, die Datenbankrolle oder Nutzer benötigt nur die BerechtigungSELECT
für die Datenansicht. Weitere Informationen finden Sie unter Ansichten - Streams ändern
- Sie können
SELECT
für Änderungsstreams zuweisen. Sie müssenEXECUTE
auch für die read-Funktion, die mit einem Änderungsstream verknüpft ist. Weitere Informationen Siehe Detailgenaue Zugriffssteuerung für Änderungsstreams. - Sequenzen
- Sie können
SELECT
undUPDATE
für Sequenzen zuweisen. Weitere Informationen Siehe Detailgenaue Zugriffssteuerung für Sequenzen. - Modelle
- Sie können
EXECUTE
für Modelle gewähren. Weitere Informationen Siehe Detailgenaue Zugriffssteuerung für Modelle.
Detaillierte Zugriffssteuerungssystemrollen
Die differenzierte Zugriffssteuerung umfasst für jede Datenbank vordefinierte Systemrollen. Wie bei benutzerdefinierten Datenbankrollen können Systemrollen den Zugriff auf Spanner-Ressourcen.
Einem Nutzer mit einer detaillierten Zugriffssteuerung muss beispielsweise die Berechtigung spanner_sys_reader
gewährt werden
Systemrolle für den Zugriff auf Key Visualizer und benötigt das spanner_info_reader
-System
um ungefilterte Ergebnisse bei der Abfrage der
INFORMATION_SCHEMA
Tabellen.
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 der übergeordneten Rollen übernehmen. Untergeordnete Rollen werden als Mitglieder von die übergeordnete Rolle.
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 Tabelle employees
.
hr_manager
und hr_director
können ebenfalls Mitglieder haben. Diese Mitglieder
die Berechtigung SELECT
für employees
übernehmen.
Es gibt keine Grenzen für die Tiefe von Rollenhierarchien, aber die Abfrageleistung mit tiefen und breiten Rollenhierarchiestrukturen verschlechtert.
Sichern und wiederherstellen
Spanner-Sicherungen enthalten Datenbankrolle Definitionen. Wenn eine Datenbank aus einer Sicherung wiederhergestellt wird, werden Datenbankrollen mit den erteilten Berechtigungen neu erstellt. IAM Richtlinien nicht Teil von Datenbanksicherungen sind, daher müssen Sie den Zugriff Datenbankrollen zu Hauptkonten in der wiederhergestellten Datenbank.
Detaillierte Zugriffssteuerung einrichten
Im Folgenden werden die übergeordneten Schritte beschrieben, die Sie unternehmen, um Schützen von Daten mit einer differenzierten Zugriffssteuerung. Weitere Informationen finden Sie unter Detaillierte Zugriffssteuerung konfigurieren
Ihnen muss die roles/spanner.admin
oder
roles/spanner.databaseAdmin
IAM-Rollen zum Ausführen dieser Aufgaben.
- Erstellen Sie Datenbankrollen und gewähren Sie den Rollen Berechtigungen.
- Optional: Erstellen Sie Rollenhierarchien mit Übernahme, indem Sie Rollen andere Rollen.
- Führen Sie diese Schritte für jedes Hauptkonto aus, das ein Nutzer mit detaillierter Zugriffssteuerung sein soll:
<ph type="x-smartling-placeholder">
- </ph>
- 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 jede Prinzipal. - IAM-Berechtigungen für eine oder mehrere gewähren dem Hauptkonto.
- Nachdem dem Hauptkonto alle erforderlichen Datenbankrollen gewährt wurden, wenn das Hauptkonto IAM-Rollen auf Datenbankebene hat, Widerrufen Sie gegebenenfalls die Rollen auf Datenbankebene sodass die Zugriffssteuerung des Hauptkontos mit nur 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 importiert Operationen nicht importieren können. 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 nicht verfügbar für Nutzer mit detaillierter Zugriffssteuerung.
- 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