Detaillierte Zugriffssteuerung – Übersicht

Die detaillierte Zugriffssteuerung von Spanner kombiniert die Vorteile der Identitäts- und Zugriffsverwaltung (IAM) mit der rollenbasierten Zugriffssteuerung von SQL. 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 detaillierte Zugriffssteuerung für einzelne IAM-Hauptkonten aktivieren. Hauptkonten für die eine detaillierte 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:

  • CREATE- und DROP-Anweisungen zum Erstellen und Löschen von Datenbankrollen Datenbankrollen sind Sammlungen von Berechtigungen. Sie können bis zu 100 Rollen pro Datenbank.
  • GRANT- und REVOKE-Anweisungen zum Gewähren und Entziehen von Berechtigungen für und vom Datenbankrollen. Zu den Berechtigungen gehören SELECT, INSERT, UPDATE, DELETE und EXECUTE. Die Namen der Berechtigungen entsprechen den gleichnamigen SQL-Anweisungen. Zum Beispiel kann eine Rolle mit dem Mit der Berechtigung INSERT kann die SQL-Anweisung INSERT für die Tabellen ausgeführt werden, die werden in der GRANT-Anweisung angegeben.

    Die folgenden DDL-Anweisungen gewähren SELECT für Tabelle employees in die Datenbankrolle hr_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- und INSERT-Vorgänge, aber nicht UPDATE und DELETE 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. Bei einem nicht standardmäßigen Schema müssen Datenbankrollen die Berechtigung USAGE für den Zugriff auf die Datenbankobjekte haben. 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: Lehnen Sie den Zugriff ab.

Ja: Sie können auf die Tabelle zugreifen.

Tabellen
Sie können die Berechtigungen SELECT, INSERT, UPDATE und DELETE für Tabellen zu Datenbankrollen zu wechseln. 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 und UPDATE 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. Für Datenansichten wird nur SELECT unterstützt. Spanner unterstützt sowohl Ansichten der Rechte des Aufrufers als auch Ansichten der Rechte des Definierers. Wenn Sie eine Ansicht mit den Rechten des Aufrufers erstellen, um die Ansicht abzufragen, Datenbankrolle oder Nutzer benötigt die Berechtigung SELECT für die Ansicht sowie die SELECT-Berechtigung 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 Berechtigung SELECT für die Ansicht. Weitere Informationen finden Sie unter Ansichten
Streams ändern
Sie können SELECT für Änderungsstreams zuweisen. Sie müssen EXECUTE 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 und UPDATE für Sequenzen zuweisen. 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.

Detaillierte Zugriffssteuerungssystemrollen

Bei der detaillierten Zugriffssteuerung gibt es 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 erbt die Berechtigungen der übergeordneten Rollen. 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.

Rechteübernahme

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 Definitionen von Datenbankrollen. Wenn eine Datenbank aus einer Sicherung wiederhergestellt wird, werden Datenbankrollen mit den erteilten Berechtigungen neu erstellt. IAM-Richtlinien sind jedoch nicht Teil von Datenbanksicherungen. Daher müssen Sie den Hauptpersonen in der wiederhergestellten Datenbank den Zugriff auf Datenbankrollen neu gewähren.

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.

  1. Erstellen Sie Datenbankrollen und gewähren Sie den Rollen Berechtigungen.
  2. Optional: Erstellen Sie Rollenhierarchien mit Übernahme, indem Sie Rollen andere Rollen.
  3. Führen Sie die folgenden Schritte für jedes Hauptkonto aus, das ein Nutzer für die Zugriffssteuerung sein soll:
    1. 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.
    2. IAM-Berechtigungen für eine oder mehrere gewähren dem Hauptkonto.
    3. 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.

Beschränkungen

  • Bei Exportvorgängen werden keine Datenbankrollen und ‐berechtigungen exportiert und importiert Operationen sie 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- und DELETE-Vorgänge ist SELECT für alle Schlüsselspalten erforderlich.

Nächste Schritte

Weitere Informationen finden Sie unter den folgenden Themen: