Auf dieser Seite wird erläutert, wie die detaillierte Zugriffssteuerung mit Spanner-Änderungsstreams funktioniert.
Nutzern der detaillierten Zugriffssteuerung gewähren Sie mithilfe der folgenden Berechtigungen Lesezugriff, um Streamdaten zu ändern. Beide Erteilungen sind erforderlich.
Gewähren Sie
SELECT
für den Änderungsstream.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;
Weisen Sie der Lesefunktion, die automatisch für den Änderungsstream erstellt wird,
EXECUTE
zu. Mit der read-Funktion werden Änderungsstream-Einträge gelesen.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 Namenskonventionen für Lesefunktionen von Änderungsstreams und zur Formatierung der zurückgegebenen Informationen finden Sie in den folgenden Themen:
INFORMATION_SCHEMA
Aufrufe für Änderungsstreams
Die folgenden Ansichten enthalten Informationen zu Datenbankrollen und Berechtigungen für Änderungsstreams:
- GoogleSQL-Dialekt-Datenbanken:
INFORMATION_SCHEMA.CHANGE_STREAM_PRIVILEGES
- PostgreSQL-Dialekt-Datenbanken:
information_schema.change_stream_privileges
Die Zeilen in dieser Ansicht werden basierend auf den Berechtigungen der aktuellen Datenbankrolle für Änderungsstreams gefiltert. Dadurch wird sichergestellt, dass Hauptkonten nur die Rollen, Berechtigungen und Änderungsstreams sehen können, auf die sie Zugriff haben.
Die Zeilenfilterung gilt auch für die folgenden Ansichten im Zusammenhang mit Änderungsstreams:
GoogleSQL
INFORMATION_SCHEMA.CHANGE_STREAMS
INFORMATION_SCHEMA.CHANGE_STREAM_TABLES
INFORMATION_SCHEMA.CHANGE_STREAM_COLUMNS
INFORMATION_SCHEMA.CHANGE_STREAM_OPTIONS
Die Systemrolle spanner_info_reader
und ihre Mitglieder sehen immer einen ungefilterten INFORMATION_SCHEMA
-Wert.
PostgreSQL
information_schema.change_streams
information_schema.change_stream_tables
information_schema.change_stream_columns
information_schema.change_stream_options
Die Systemrolle spanner_info_reader
und ihre Mitglieder sehen einen ungefilterten information_schema
-Wert.
Die Zeilenfilterung gilt auch für die folgenden Metadatenansichten für Lesefunktionen von Änderungsstreams:
GoogleSQL
PostgreSQL
Vorsichtsmaßnahmen
Änderungsstreams verwenden eine Metadatendatenbank, um den internen Zustand beizubehalten. Die Metadatendatenbank kann mit der Anwendungsdatenbank identisch sein oder sich von ihr unterscheiden. Wir empfehlen, eine andere Datenbank zu verwenden. Für eine detailgenaue Zugriffssteuerung darf die Metadatendatenbank jedoch nicht mit der Anwendungsdatenbank identisch sein. Das liegt daran, dass das IAM-Hauptkonto, das den Dataflow-Job ausführt, Lese-/Schreibzugriff auf Datenbankebene für die Metadatendatenbank benötigt. Dadurch werden die fein abgestimmten Berechtigungen für die Zugriffssteuerung überschrieben, die für die Anwendungsdatenbank konfiguriert waren.
Weitere Informationen finden Sie unter Separate Metadatendatenbank verwenden.
Da ein Änderungsstream eine separate Kopie der Daten aus den beobachteten Tabellen und Spalten enthält, sollten Sie vorsichtig sein, wenn Sie Nutzern Zugriff auf den Änderungsstream gewähren. Die Leser des Änderungsstreams können Datenänderungen aus den nachverfolgten Tabellen und Spalten sehen, auch wenn sie keine
SELECT
-Berechtigungen für die Tabellen und Spalten haben. Obwohl es flexibler ist, separate Kontrollen für Änderungsstreams und die verfolgten Tabellen und Spalten einzurichten, birgt ein gewisses Risiko. Strukturieren Sie deshalb Datenbankrollen und -berechtigungen entsprechend. Wenn Sie beispielsweise die BerechtigungSELECT
für eine Tabelle von einer Rolle widerrufen, sollten Sie überlegen, ob auchSELECT
für den Änderungsstream widerrufen undEXECUTE
für die zugehörige Lesefunktion widerrufen werden soll.Wenn Sie
SELECT
für einen Änderungsstream zuweisen, der alle Tabellen verfolgt, kann der Empfänger Datenänderungen für alle zukünftig hinzugefügten Tabellen sehen.