Detaillierte Zugriffssteuerung für Änderungsstreams

Auf dieser Seite wird erläutert, wie die detaillierte Zugriffssteuerung mit Spanner-Änderungsstreams funktioniert.

Nutzern mit differenzierter Zugriffssteuerung gewähren Sie mithilfe der folgenden Berechtigungen Lesezugriff, um Daten über Änderungsstreams zu ändern. 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 für den Änderungsstream erstellt wird. Mit der Funktion read werden Änderungsstreameinträ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 des Ä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:

Die Zeilen in dieser Ansicht werden anhand der 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.

Das Filtern von Zeilen wird auch auf die folgenden Ansichten in Bezug auf Änderungsstreams angewendet:

GoogleSQL

Die Systemrolle spanner_info_reader und ihre Mitglieder sehen immer eine ungefilterte INFORMATION_SCHEMA.

PostgreSQL

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 des Änderungsstreams:

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. Für Nutzer mit differenzierter 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 Datenbankebene für die Metadatendatenbank benötigt. Dadurch würden die detaillierten Berechtigungen für die Zugriffssteuerung überschrieben, die für die Anwendungsdatenbank konfiguriert wurden.

    Weitere Informationen finden Sie unter Separate Metadatendatenbank verwenden.

  • Da ein Änderungsstream eine separate Kopie der Daten aus den überwachten Tabellen und Spalten enthält, sollten Sie vorsichtig sein, wenn Sie Nutzern Zugriff auf den Änderungsstream gewähren. 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 deren nachverfolgte Tabellen und Spalten einzurichten, besteht ein potenzielles Risiko. Achten Sie daher darauf, die Datenbankrollen und -berechtigungen entsprechend zu strukturieren. Wenn Sie beispielsweise die Berechtigung SELECT für eine Tabelle von einer Rolle widerrufen, sollten Sie überlegen, ob auch SELECT im Änderungsstream und EXECUTE für die zugehörige Lesefunktion widerrufen werden sollen.

  • Wenn Sie SELECT für einen Änderungsstream gewähren, der alle Tabellen erfasst, kann der Empfänger Datenänderungen für alle zukünftig hinzugefügten Tabellen sehen.

Weitere Informationen