Auf dieser Seite wird erläutert, wie die detaillierte Zugriffssteuerung mit Spanner funktioniert. Änderungsstreams.
Nutzern mit einer detaillierten Zugriffssteuerung gewähren Sie Lesezugriff, um Streamdaten zu ändern, indem Sie mit den folgenden Erteilungen. Beide Erteilungen sind erforderlich.
Gewähren Sie
SELECT
im Ä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
EXECUTE
für die Lesefunktion zu, die automatisch erfolgt die für den Änderungsstream erstellt wurden. Mit der Funktion „read“ lesen Sie Änderungsstream-Datensä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 Namenskonventionen für Änderungsstream-Lesefunktionen und zur Formatierung der zurückgegebenen Informationen finden Sie in den folgenden Themen:
INFORMATION_SCHEMA
Aufrufe für Änderungsstreams
In den folgenden Ansichten sehen Sie Informationen zu Datenbankrollen und Berechtigungen für Änderungen Streams:
- GoogleSQL-Dialekt-Datenbanken:
INFORMATION_SCHEMA.CHANGE_STREAM_PRIVILEGES
- PostgreSQL-Dialekt-Datenbanken:
information_schema.change_stream_privileges
Die Zeilen in dieser Ansicht werden basierend auf der aktuellen Datenbankrolle gefiltert für Änderungsstreams. Dadurch wird sichergestellt, dass Hauptkonten nur die Berechtigungen und Änderungsstreams, auf die sie Zugriff haben.
Das Filtern von Zeilen wird auch auf die folgenden Ansichten in Bezug auf Änderungsstreams angewendet:
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
.
Das Filtern von Zeilen wird auch auf die folgenden Metadatenansichten für den Änderungsstream angewendet Lesefunktionen:
GoogleSQL
PostgreSQL
Vorsichtsmaßnahmen
Änderungsstreams verwenden eine Metadatendatenbank, um den internen Status aufrechtzuerhalten. Die Metadatendatenbank kann mit der Anwendung identisch oder davon abweichen Datenbank. Wir empfehlen, eine andere Datenbank zu verwenden. Für sehr fein abgestimmte Zugriffssteuerung. Die Metadatendatenbank darf nicht mit der Anwendung identisch sein. Datenbank. Das liegt daran, dass das IAM-Hauptkonto, das die Dataflow-Job benötigt Lese-/Schreibzugriff auf Datenbankebene für die Metadaten-Datenbank. Dies würde die detaillierten Berechtigungen für die Zugriffssteuerung überschreiben, für die Anwendungsdatenbank konfiguriert.
Weitere Informationen finden Sie unter Separate Metadatendatenbank verwenden.
Da ein Änderungsstream eine separate Kopie der Daten aus dem nachverfolgten Tabellen und Spalten, seien Sie vorsichtig, wenn Sie Nutzern Zugriff auf die den Änderungsstream. Die Leser des Änderungsstreams können Datenänderungen den erfassten Tabellen und Spalten, auch wenn
SELECT
nicht darin enthalten ist für Tabellen und Spalten. Obwohl es flexibler ist separate Einstellungen für Änderungsstreams und die beobachteten Tabellen einzurichten. gibt es ein potenzielles Risiko. Strukturieren Sie die Datenbank Rollen und Berechtigungen. Beispiel: Beim Widerrufen derSELECT
Berechtigung für eine Tabelle von einer Rolle aus, überlegen Sie, ob auchSELECT
widerrufen werden soll für den Änderungsstream und WiderrufenEXECUTE
für den verknüpften Lesevorgang .Wenn Sie
SELECT
für einen Änderungsstream, der alle Tabellen erfasst, gewähren, Datenänderungen für alle zukünftig hinzugefügten Tabellen sehen.