Detaillierte Zugriffssteuerung für Änderungsstreams

Auf dieser Seite wird erläutert, wie die detaillierte Zugriffssteuerung mit Spanner-Änderungsstreams für Datenbanken im GoogleSQL-Dialekt und Datenbanken im PostgreSQL-Dialekt funktioniert.

Für Nutzer mit detaillierter Zugriffssteuerung gewähren Sie mit den folgenden Berechtigungen Lesezugriff auf Änderungsstreamdaten. Beide Berechtigungen sind erforderlich.

  • SELECT-Berechtigung für den Änderungsstream gewähren.

    GoogleSQL

    GRANT SELECT ON CHANGE STREAM CHANGE_STREAM_NAME TO ROLE ROLE_NAME;

    PostgreSQL

    GRANT SELECT ON CHANGE STREAM CHANGE_STREAM_NAME TO ROLE_NAME;
  • EXECUTE-Berechtigung für die Lesefunktion gewähren, die automatisch für den Änderungsstream erstellt wird. Mit der Lesefunktion lesen Sie Änderungsstreamdatensätze.

    GoogleSQL

    GRANT EXECUTE ON TABLE FUNCTION READ_FUNCTION_NAME TO ROLE ROLE_NAME;

    PostgreSQL

    GRANT EXECUTE ON FUNCTION READ_FUNCTION_NAME TO ROLE_NAME;

    Informationen zu den Benennungskonventionen für Lesefunktionen für Änderungsstreams und zur Formatierung der zurückgegebenen Informationen finden Sie in den folgenden Themen:

INFORMATION_SCHEMA-Ansichten für Änderungsstreams

Die folgenden Ansichten enthalten Informationen zu Datenbankrollen und Berechtigungen für Änderungsstreams:

Die Zeilen in diesen Ansichten werden basierend auf den Berechtigungen der aktuellen Datenbankrolle für Änderungsstreams gefiltert. So können Prinzipale nur die Rollen, Berechtigungen und Änderungsstreams sehen, auf die sie Zugriff haben.

Die Zeilenfilterung gilt auch für die folgenden Ansichten im Zusammenhang mit Änderungsstreams:

GoogleSQL

Die Systemrolle spanner_info_reader und ihre Mitglieder sehen immer ein ungefiltertes INFORMATION_SCHEMA.

PostgreSQL

Die Systemrolle spanner_info_reader und ihre Mitglieder sehen ein ungefiltertes information_schema.

Die Zeilenfilterung gilt auch für die folgenden Metadatenansichten für Lesefunktionen für Änderungsstreams:

Vorsichtsmaßnahmen

  • Änderungsstreams verwenden eine Metadatendatenbank, um den internen Status zu verwalten. Die Metadatendatenbank kann mit der Anwendungsdatenbank identisch sein oder sich von ihr unterscheiden. Wir empfehlen, eine andere Datenbank zu verwenden. Für Nutzer mit detaillierter Zugriffssteuerung kann die Metadatendatenbank jedoch nicht mit der Anwendungsdatenbank identisch sein. Das liegt daran, dass der IAM-Prinzipal, der den Dataflow-Job ausführt, Lese- oder Schreibzugriff auf Datenbankebene für die Metadatendatenbank benötigt. Dadurch werden die für die Anwendungsdatenbank konfigurierten Berechtigungen für die detaillierte Zugriffssteuerung überschrieben.

    Weitere Informationen finden Sie unter Separate Metadatendatenbank verwenden.

  • Da ein Änderungsstream eine separate Kopie der Daten aus den verfolgten Tabellen und Spalten enthält, sollten Sie Nutzern nur mit Bedacht Zugriff auf den Änderungsstream gewähren. Die Leser des Änderungsstreams können Datenänderungen aus den verfolgten Tabellen und Spalten sehen, auch wenn sie keine SELECT-Berechtigungen für die Tabellen und Spalten haben. Es ist zwar flexibler, separate Steuerelemente für Änderungsstreams und die zugehörigen verfolgten Tabellen und Spalten einzurichten, es besteht jedoch ein potenzielles Risiko. Strukturieren Sie daher Datenbankrollen und Berechtigungen entsprechend. Wenn Sie beispielsweise die SELECT-Berechtigung für eine Tabelle von einer Rolle widerrufen, sollten Sie auch SELECT für den Änderungsstream und EXECUTE für die zugehörige Lesefunktion widerrufen.

  • Wenn Sie SELECT für einen Änderungsstream gewähren, der alle Tabellen verfolgt, kann der Berechtigte Datenänderungen für alle Tabellen sehen, die in Zukunft hinzugefügt werden.

Nächste Schritte