Übersicht über die detaillierte Zugriffssteuerung

Die differenzierte 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 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 detaillierte Zugriffssteuerung ist vollständig kompatibel und kann zusammen mit der vorhandenen IAM-Zugriffssteuerung auf Datenbankebene verwendet werden. 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.

Für die Verwaltung der detaillierten Zugriffssteuerung verwenden Sie die folgenden DDL-Anweisungen:

  • CREATE- und DROP-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- und REVOKE-Anweisungen zum Gewähren und Widerrufen von Berechtigungen für Datenbankrollen. Zu den Berechtigungen gehören SELECT, INSERT, UPDATE, DELETE und EXECUTE. Die Namen der Berechtigungen entsprechen den gleichnamigen SQL-Anweisungen. Eine Rolle mit dem Attribut INSERT kann beispielsweise die SQL-Anweisung INSERT für die Tabellen ausführen, die in der Anweisung GRANT angegeben sind.

    Mit den folgenden DDL-Anweisungen wird die Berechtigung SELECT für die Tabelle employees der Datenbankrolle hr_rep gewä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 zu Berechtigungen für die detaillierte Zugriffssteuerung.

  • GRANT-Anweisungen zum Zuweisen von Rollen an andere Rollen, um Hierarchien von Rollen mit Berechtigungsübernahme zu erstellen.

Anwendungsfälle

Im Folgenden finden Sie einige Beispielanwendungsfälle für die detaillierte Zugriffssteuerung:

  • Ein HR-Informationssystem mit Rollen für Vertriebsvergütungsanalysten, Vertriebsmanagement und HR-Analysten, die jeweils unterschiedliche Zugriffsebenen für die Daten haben. Beispiel: Vergütungsanalysten und Vertriebsleiter sollten keine Sozialversicherungsnummern sehen.
  • Eine Mitfahrdienst-App mit verschiedenen Dienstkonten und Berechtigungen für Fahrgäste und Fahrer.
  • Ein Ledger, das SELECT- und INSERT-Vorgänge, aber keine UPDATE- und DELETE-Vorgänge zulässt.

Spanner-Ressourcen und ihre Berechtigungen

Die folgende Liste enthält Spanner-Ressourcen und die Berechtigungen für die detaillierte Zugriffssteuerung, die Sie für sie gewähren können.

Schemas
Sie können die Berechtigung USAGE für Schemas bestimmten Datenbankrollen zuweisen. Für ein nicht standardmäßiges Schema müssen Datenbankrollen die Berechtigung USAGE haben, 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 Rechte für die Tabelle?

Nein: Zugriff ablehnen.

Ja: Sie können auf die Tabelle zugreifen.

Tabellen
Sie können die Berechtigungen SELECT, INSERT, UPDATE und DELETE für Tabellen Datenbankrollen zuweisen. Bei überlappenden Tabellen wird eine Berechtigung, die für die übergeordnete Tabelle erteilt wurde, nicht auf die untergeordnete Tabelle übertragen.
Spalten
Sie können SELECT, INSERT und UPDATE für eine Teilmenge von Spalten in einer Tabelle gewähren. Die Berechtigung gilt dann nur für diese Spalten. DELETE ist auf Spaltenebene nicht zulässig.
Aufrufe
Sie können die Berechtigung SELECT für eine Ansicht gewähren. Für Ansichten wird nur SELECT unterstützt. Spanner unterstützt sowohl Ansichten mit Aufruferrechten als auch Ansichten mit Definierrechten. Wenn Sie eine Ansicht mit Aufruferberechtigungen erstellen, benötigt die Datenbankrolle oder der Nutzer zum Abfragen der Ansicht die Berechtigung SELECT für die Ansicht sowie die Berechtigung SELECT für die zugrunde liegenden Objekte, auf die in der Ansicht verwiesen wird. Wenn Sie eine Ansicht mit den Rechten des Definers 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 gewähren. Sie müssen auch EXECUTE für die Lesefunktion gewähren, die einem Änderungsstream zugeordnet ist. Weitere Informationen finden Sie unter Detaillierte Zugriffssteuerung für Änderungsstreams.
Sequenzen
Sie können SELECT und UPDATE für Sequenzen gewähren. Weitere Informationen finden Sie unter Detaillierte Zugriffssteuerung für Sequenzen.
Modelle
Sie können Modellen EXECUTE gewähren. Weitere Informationen finden Sie unter Detaillierte Zugriffssteuerung für Modelle.

Detaillierte Systemrollen für die Zugriffssteuerung

Für die detaillierte Zugriffssteuerung sind vordefinierte Systemrollen für jede Datenbank verfügbar. Wie nutzerdefinierte Datenbankrollen können Systemrollen den Zugriff auf Spanner-Ressourcen steuern.

Ein Nutzer mit detaillierter Zugriffssteuerung benötigt beispielsweise die Systemrolle spanner_sys_reader, um auf Key Visualizer zuzugreifen, und die Systemrolle spanner_info_reader, um ungefilterte Ergebnisse zu sehen, wenn er die Tabellen INFORMATION_SCHEMA abfragt.

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 ü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 erben die Berechtigung SELECT für die Tabelle employees.

Übernahme von Berechtigungen

hr_manager und hr_director können auch Mitglieder haben, die die Berechtigung SELECT für employees erben.

Es gibt keine Einschränkungen hinsichtlich der Tiefe von Rollenhierarchien. Die Abfrageleistung kann jedoch bei tiefen und breiten Rollenhierarchiestrukturen abnehmen.

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. Sie müssen den Zugriff auf Datenbankrollen für Principals in der wiederhergestellten Datenbank also neu gewähren.

Übersicht über das Einrichten einer detaillierten Zugriffssteuerung

Im Folgenden finden Sie die allgemeinen Schritte, die Sie ausführen müssen, um Daten mit einer differenzierten Zugriffssteuerung zu schützen. 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.

  1. Erstellen Sie Datenbankrollen und weisen Sie den Rollen Berechtigungen zu.
  2. Optional: Erstellen Sie Rollenhierarchien mit Vererbung, indem Sie anderen Rollen Rollen zuweisen.
  3. Führen Sie diese Schritte für jedes Hauptkonto aus, das ein Nutzer für die Zugriffssteuerung sein soll:
    1. Aktivieren Sie die detaillierte Zugriffssteuerung für das Prinzipal. Dem Prinzipal wird dann automatisch die Datenbankrolle public zugewiesen, die standardmäßig keine Berechtigungen hat. Dies ist ein einmaliger Vorgang für jeden Prinzipal.
    2. Weisen Sie dem Prinzipal IAM-Berechtigungen für eine oder mehrere Datenbankrollen zu.
    3. Nachdem dem Hauptkonto alle erforderlichen Datenbankrollen zugewiesen wurden, sollten Sie die Datenbankrollen auf Datenbankebene widerrufen, wenn das Hauptkonto IAM-Rollen auf Datenbankebene hat. So wird die Zugriffssteuerung des Hauptkontos nur über eine Methode verwaltet.

Beschränkungen

  • Bei Exportvorgängen werden keine Datenbankrollen und ‑berechtigungen exportiert und bei Importvorgängen können sie nicht importiert werden. 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 für Nutzer mit differenzierter Zugriffssteuerung nicht verfügbar.

Nächste Schritte