Detaillierte Zugriffssteuerung für Änderungsstreams

Auf dieser Seite wird beschrieben, wie die detaillierte Zugriffssteuerung mit Cloud Spanner-Änderungsstreams für Datenbanken im GoogleSQL-Dialekt und Datenbanken im PostgreSQL-Dialekt funktioniert.

Für Nutzer mit detaillierter Zugriffssteuerung können Sie den Lesezugriff auf Änderungsstreamdaten mit den folgenden Berechtigungen gewähren. 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 Lesefunktion können Sie Änderungsstream-Datensätze 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 Namenskonventionen 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:

Die Zeilen in diesen Ansichten werden anhand der aktuellen Datenbankrollenberechtigungen für Änderungsstreams gefiltert. So können Hauptkonten 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

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

Vorsichtsmaßnahmen

  • Änderungsstreams verwenden eine Metadaten-Datenbank, um den internen Status beizubehalten. Die Metadaten-Datenbank kann mit der Anwendungsdatenbank identisch sein oder sich von ihr unterscheiden. Wir empfehlen, eine andere Datenbank zu verwenden. Für Nutzer mit detaillierter Zugriffssteuerung darf die Metadatendatenbank jedoch nicht mit der Anwendungsdatenbank identisch sein. Das liegt daran, dass das IAM-Hauptkonto (Identity and Access Management), das den Dataflow-Job ausführt, Lese- oder Schreibzugriff auf Datenbankebene für die Metadatendatenbank benötigt. Dadurch würden die für die Anwendungsdatenbank konfigurierten Berechtigungen für die detaillierte Zugriffssteuerung überschrieben.

    Weitere Informationen finden Sie unter Separate Metadaten-Datenbank in Betracht ziehen.

  • 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 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 Tabellen und Spalten einzurichten, aber es besteht ein potenzielles Risiko. Achten Sie daher darauf, Datenbankrollen und -berechtigungen entsprechend zu strukturieren. Wenn Sie beispielsweise die Berechtigung SELECT für eine Tabelle von einer Rolle widerrufen, sollten Sie überlegen, ob Sie auch die Berechtigung SELECT für den Änderungsstream und die Berechtigung EXECUTE für die zugehörige Lesefunktion widerrufen sollten.

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

Nächste Schritte