Cette page explique comment le contrôle précis des accès fonctionne avec les flux de modifications Spanner.
Pour les utilisateurs ayant un contrôle précis des accès, vous autorisez l'accès en lecture aux données des flux de modifications à l'aide des autorisations suivantes. Les deux autorisations sont obligatoires.
Accordez
SELECT
sur le flux de modifications.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;
Accordez
EXECUTE
sur la fonction de lecture créée automatiquement pour le flux de modifications. Vous utiliserez la fonction read pour lire les enregistrements de flux de modifications.GoogleSQL
GRANT EXECUTE ON TABLE FUNCTION READ_FUNCTION_NAME TO ROLE ROLE_NAME;
PostgreSQL
GRANT EXECUTE ON FUNCTION READ_FUNCTION_NAME TO ROLE_NAME;
Pour en savoir plus sur les conventions de dénomination des fonctions de lecture des flux de modifications et sur la mise en forme des informations qu'elles renvoient, consultez les articles suivants:
INFORMATION_SCHEMA
vues pour les flux de modifications
Les vues suivantes affichent des informations sur les rôles et les droits de base de données pour les flux de modifications:
- Bases de données utilisant le dialecte GoogleSQL:
INFORMATION_SCHEMA.CHANGE_STREAM_PRIVILEGES
- Bases de données de dialectes PostgreSQL:
information_schema.change_stream_privileges
Les lignes de cette vue sont filtrées en fonction des privilèges du rôle de base de données actuel sur les flux de modifications. Ainsi, les comptes principaux ne peuvent afficher que les rôles, les droits et les flux de modifications auxquels ils ont accès.
Le filtrage des lignes s'applique également aux vues liées aux flux de modifications suivantes:
GoogleSQL
INFORMATION_SCHEMA.CHANGE_STREAMS
INFORMATION_SCHEMA.CHANGE_STREAM_TABLES
INFORMATION_SCHEMA.CHANGE_STREAM_COLUMNS
INFORMATION_SCHEMA.CHANGE_STREAM_OPTIONS
Le rôle système spanner_info_reader
et ses membres voient toujours une INFORMATION_SCHEMA
non filtrée.
PostgreSQL
information_schema.change_streams
information_schema.change_stream_tables
information_schema.change_stream_columns
information_schema.change_stream_options
Le rôle système spanner_info_reader
et ses membres voient une valeur information_schema
non filtrée.
Le filtrage des lignes s'applique également aux vues de métadonnées suivantes pour les fonctions de lecture des flux de modifications:
GoogleSQL
PostgreSQL
Mises en garde
Les flux de modifications utilisent une base de données de métadonnées pour maintenir l'état interne. La base de données de métadonnées peut être identique à la base de données de l'application ou différente de celle-ci. Nous vous recommandons d'utiliser une autre base de données. Toutefois, pour les utilisateurs ayant un contrôle des accès ultraprécis, la base de données des métadonnées ne peut pas être identique à la base de données de l'application. En effet, le compte principal IAM qui exécute la tâche Dataflow a besoin d'un accès en lecture/écriture au niveau de la base de données pour la base de données de métadonnées. Cette action permet de remplacer les droits de contrôle des accès ultraprécis qui ont été configurés pour la base de données de l'application.
Pour en savoir plus, consultez Envisagez d'utiliser une base de données de métadonnées distincte.
Étant donné qu'un flux de modifications contient une copie distincte des données des tables et des colonnes suivies, soyez prudent lorsque vous accordez aux utilisateurs l'accès au flux de modifications. Les lecteurs du flux de modifications peuvent afficher les modifications de données issues des tables et des colonnes suivies, même s'ils ne disposent pas des droits
SELECT
sur les tables et les colonnes. Bien qu'il soit plus flexible de configurer des contrôles distincts sur les flux de modifications et les tables et colonnes suivies, il existe un risque. Veillez donc à structurer les rôles et les droits de base de données en conséquence. Par exemple, lorsque vous révoquez d'un rôle le droitSELECT
sur une table, déterminez si vous devez également révoquerSELECT
sur le flux de modifications et révoquerEXECUTE
sur la fonction de lecture associée.Si vous accordez l'autorisation
SELECT
sur un flux de modifications qui suit toutes les tables, le bénéficiaire peut voir les modifications de données pour toutes les tables ajoutées par la suite.
Informations complémentaires
- À propos des flux de modifications
- Créer et gérer des flux de modifications
- À propos du contrôle ultraprécis des accès