Detaillierte Zugriffssteuerung – Übersicht

Die detaillierte Zugriffssteuerung von Spanner kombiniert die Vorteile der Identitäts- und Zugriffsverwaltung (IAM) mit der rollenbasierten Zugriffssteuerung von SQL. Bei 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 Spanner für Datenbanken mit GoogleSQL- und 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 gesteuert. Die detaillierte Zugriffssteuerung ist vollständig kompatibel und kann mit der vorhandenen IAM-Zugriffssteuerung auf Datenbankebene zusammen 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 und von 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 INSERT-Berechtigung kann beispielsweise die SQL-Anweisung INSERT auf die Tabellen ausführen, die in der GRANT-Anweisung angegeben sind.

    Mit den folgenden DDL-Anweisungen wird der Datenbankrolle hr_rep SELECT für die Tabelle employees 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 Gewähren von Rollen an andere Rollen, um Hierarchien von Rollen mit Berechtigungsübernahme zu erstellen.

Anwendungsfälle

Im Folgenden finden Sie Beispiele für Anwendungsfälle für die detaillierte Zugriffssteuerung:

  • Ein HR-Informationssystem mit Rollen für Analysten für Vertriebsvergütung, Vertriebsmanagement und HR-Analysten, jeweils mit unterschiedlichen Zugriffsebenen auf die Daten. Beispielsweise sollten Vergütungsanalysten und das Vertriebsmanagement keine Sozialversicherungsnummern sehen.
  • Eine Mitfahrdienst-App mit unterschiedlichen 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 das Berechtigungsobjekt USAGE für Schemata für bestimmte Datenbankrollen 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 im Schema?

Nein: Lehnen Sie den Zugriff ab.

Ja: Haben Sie auch die entsprechenden Berechtigungen für die Tabelle?

Nein: Lehnen Sie den Zugriff ab.

Ja: Sie können auf die Tabelle zugreifen.

Tabellen
Sie können Datenbankrollen die Berechtigungen SELECT, INSERT, UPDATE und DELETE für Tabellen gewähren. 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 einen Teil der Spalten in einer Tabelle gewähren. Das Berechtigungsobjekt gilt dann nur für diese Spalten. DELETE ist auf Spaltenebene nicht zulässig.
Aufrufe
Sie können einer Datenansicht das SELECT-Recht erteilen. Für Datenansichten wird nur SELECT unterstützt. Spanner unterstützt sowohl die Sicht auf die Rechte des Aufrufers als auch die Sicht auf die Rechte des Definierers. Wenn Sie eine Ansicht mit den Rechten des Aufrufers erstellen, benötigt die Datenbankrolle oder der Nutzer zum Abfragen der Ansicht die Berechtigung SELECT für die Ansicht und die Berechtigung SELECT 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 Übersicht über Aufrufe.
Streams ändern
Sie können SELECT für Änderungsstreams gewähren. Außerdem müssen Sie EXECUTE fü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 SELECT und UPDATE für Sequenzen gewähren. 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.

Rollen für die detaillierte Zugriffssteuerung

Bei der detaillierten Zugriffssteuerung gibt es für jede Datenbank vordefinierte Systemrollen. Wie benutzerdefinierte Datenbankrollen können auch Systemrollen den Zugriff auf Spanner-Ressourcen steuern.

Beispiel: Ein Nutzer mit detaillierter Zugriffssteuerung muss die Systemrolle spanner_sys_reader haben, um auf den Key Visualizer zugreifen zu können, und die Systemrolle spanner_info_reader, um bei der Abfrage der INFORMATION_SCHEMA-Tabellen unfiltrierte Ergebnisse zu sehen.

Weitere Informationen finden Sie unter Systemrollen für die detaillierte Zugriffssteuerung.

Hierarchien und Übernahme von Datenbankrollen

Sie können Hierarchien von Datenbankrollen erstellen, bei denen untergeordnete Rollen die Berechtigungen der übergeordneten 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. Diese Mitglieder erhalten dann die Berechtigung SELECT für employees.

Die Tiefe von Rollenhierarchien ist nicht begrenzt. Bei tiefen und breiten Rollenhierarchien kann die Abfrageleistung jedoch beeinträchtigt werden.

Sichern und wiederherstellen

Spanner-Sicherungen enthalten Definitionen von Datenbankrollen. Wenn eine Datenbank aus einer Sicherung wiederhergestellt wird, werden die Datenbankrollen mit den gewährten Berechtigungen neu erstellt. IAM-Richtlinien sind jedoch keine Bestandteile von Datenbanksicherungen. Daher müssen Sie den Hauptpersonen in der wiederhergestellten Datenbank den Zugriff auf Datenbankrollen neu gewähren.

Detaillierte Zugriffssteuerung einrichten

Im Folgenden finden Sie eine allgemeine Übersicht über die Schritte, die Sie ausführen müssen, um Daten mit einer detaillierten Zugriffssteuerung zu schützen. Weitere Informationen finden Sie unter Detaillierte Zugriffssteuerung konfigurieren.

Sie benötigen die IAM-Rollen roles/spanner.admin oder roles/spanner.databaseAdmin, um diese Aufgaben ausführen zu können.

  1. Erstellen Sie Datenbankrollen und gewähren Sie den Rollen Berechtigungen.
  2. Optional: Erstellen Sie Rollenhierarchien mit Vererbung, indem Sie Rollen anderen Rollen zuweisen.
  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 den Hauptberechtigten. Dem Hauptkonto wird dann automatisch die Datenbankrolle public zugewiesen, die standardmäßig keine Berechtigungen hat. Dieser Vorgang muss für jeden Hauptbevollmächtigten nur einmal ausgeführt werden.
    2. Weisen Sie dem Hauptkonto IAM-Berechtigungen für eine oder mehrere Datenbankrollen zu.
    3. 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 mit einer Methode verwaltet wird.

Beschränkungen

  • Bei Exportvorgängen werden keine Datenbankrollen und ‑berechtigungen exportiert und Importvorgänge können sie nicht importieren. Rollen und Berechtigungen müssen Sie nach Abschluss des Imports manuell einrichten.
  • Der Tab Daten auf der Seite TABELLE in der Google Cloud Console ist für Nutzer mit einer detaillierten Zugriffssteuerung nicht verfügbar.

Nächste Schritte