Auf dieser Seite wird erläutert, wie die detaillierte Zugriffssteuerung mit Spanner-Änderungsstreams funktioniert.
Für Nutzer mit differenzierter Zugriffssteuerung gewähren Sie Lesezugriff auf Änderungsstreams-Daten mithilfe der folgenden Berechtigungen. Beide Berechtigungen 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;
Gewähren Sie
EXECUTE
für die Lesefunktion, die automatisch für den Änderungsstream erstellt wird. Mit der Funktion „read“ können Sie Änderungsstream-Eintragsdaten lesen.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 Benennungskonventionen für Lesefunktionen für Änderungsstreams und zur Formatierung der zurückgegebenen Informationen finden Sie in den folgenden Themen:
INFORMATION_SCHEMA
Ansicht für Änderungsstreams
In den folgenden Ansichten werden Informationen zu Datenbankrollen und Berechtigungen für Änderungsstreams angezeigt:
- Datenbanken mit GoogleSQL-Dialekt:
INFORMATION_SCHEMA.CHANGE_STREAM_PRIVILEGES
- PostgreSQL-Datenbanken:
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 Hauptkonten nur die Rollen, Berechtigungen und Änderungsstreams sehen, auf die sie Zugriff haben.
Das Zeilenfiltern gilt auch für die folgenden Datenansichten, die sich auf Änderungsstreams beziehen:
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 eine ungefilterte INFORMATION_SCHEMA
.
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 eine ungefilterte information_schema
.
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 Status aufrechtzuerhalten. Die Metadatendatenbank kann mit der Anwendungsdatenbank identisch sein oder sich von ihr unterscheiden. Wir empfehlen, eine andere Datenbank zu verwenden. Bei Nutzern mit detaillierter Zugriffssteuerung kann 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 die Metadatendatenbank auf Datenbankebene benötigt. Dadurch werden die Berechtigungen für die detaillierte Zugriffssteuerung überschrieben, die für die Anwendungsdatenbank konfiguriert wurden.
Weitere Informationen finden Sie unter Eine separate Metadatendatenbank verwenden.
Da ein Änderungsstream eine separate Kopie der Daten aus den erfassten Tabellen und Spalten enthält, sollten Sie Nutzer mit Bedacht auf den Änderungsstream zugreifen lassen. Leser des Änderungsstreams können Datenänderungen aus den erfassten 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 ihre erfassten Tabellen und Spalten einzurichten, aber es besteht ein potenzielles Risiko. Achten Sie daher darauf, Datenbankrollen und ‑berechtigungen entsprechend zu strukturieren. Wenn Sie beispielsweise dasSELECT
-Berechtigung für eine Tabelle für eine Rolle widerrufen, sollten Sie auchSELECT
für den Änderungsstream undEXECUTE
für die zugehörige Lesefunktion widerrufen.Wenn Sie
SELECT
für einen Änderungsstream gewähren, der alle Tabellen erfasst, kann der Begünstigte Datenänderungen für alle Tabellen sehen, die in Zukunft hinzugefügt werden.