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:
- Datenbanken im GoogleSQL-Dialekt:
INFORMATION_SCHEMA.CHANGE_STREAM_PRIVILEGES - Datenbanken im PostgreSQL-Dialekt:
information_schema.change_stream_privileges
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
INFORMATION_SCHEMA.CHANGE_STREAMSINFORMATION_SCHEMA.CHANGE_STREAM_TABLESINFORMATION_SCHEMA.CHANGE_STREAM_COLUMNSINFORMATION_SCHEMA.CHANGE_STREAM_OPTIONS
Die Systemrolle spanner_info_reader und ihre Mitglieder sehen immer ein ungefiltertes INFORMATION_SCHEMA.
PostgreSQL
information_schema.change_streamsinformation_schema.change_stream_tablesinformation_schema.change_stream_columnsinformation_schema.change_stream_options
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:
GoogleSQL
PostgreSQL
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 dieSELECT-Berechtigung für eine Tabelle von einer Rolle widerrufen, sollten Sie auchSELECTfür den Änderungsstream undEXECUTEfür die zugehörige Lesefunktion widerrufen.Wenn Sie
SELECTfü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
- Übersicht über Änderungsstreams
- Änderungsstreams erstellen und verwalten
- Übersicht über die detaillierte Zugriffssteuerung