Cette page explique comment le contrôle des accès précis fonctionne avec les flux de modifications Spanner pour les bases de données utilisant le dialecte GoogleSQL et celles utilisant le dialecte PostgreSQL.
Pour les utilisateurs du contrôle des accès précis, vous autorisez l'accès en lecture aux données des flux de modifications à l'aide des autorisations suivantes. Les deux autorisations sont obligatoires.
Autorisez
SELECTsur 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;
Autorisez
EXECUTEsur la fonction de lecture créée automatiquement pour le flux de modifications. Vous utilisez la fonction de lecture pour lire les enregistrements du 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 d'attribution de noms pour les fonctions de lecture des flux de modifications et sur le format des informations qu'elles renvoient, consultez les rubriques suivantes :
Vues INFORMATION_SCHEMA pour les flux de modifications
Les vues suivantes affichent des informations sur les rôles et les droits d'accès de la 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 utilisant le dialecte PostgreSQL :
information_schema.change_stream_privileges
Les lignes de ces vues sont filtrées en fonction des droits d'accès du rôle de base de données actuel sur les flux de modifications. Ainsi, les principaux ne peuvent afficher que les rôles, les droits d'accès et les flux de modifications auxquels ils ont accès.
Le filtrage des lignes s'applique également aux vues suivantes liées aux flux de modifications :
GoogleSQL
INFORMATION_SCHEMA.CHANGE_STREAMSINFORMATION_SCHEMA.CHANGE_STREAM_TABLESINFORMATION_SCHEMA.CHANGE_STREAM_COLUMNSINFORMATION_SCHEMA.CHANGE_STREAM_OPTIONS
Le rôle système spanner_info_reader et ses membres voient toujours un INFORMATION_SCHEMA non filtré.
PostgreSQL
information_schema.change_streamsinformation_schema.change_stream_tablesinformation_schema.change_stream_columnsinformation_schema.change_stream_options
Le rôle système spanner_info_reader et ses membres voient un information_schema non filtré.
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 conserver 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. Nous vous recommandons d'utiliser une base de données différente. Toutefois, pour les utilisateurs du contrôle des accès précis, la base de données de métadonnées ne peut pas être identique à la base de données de l'application. En effet, le principal IAM qui exécute le job Dataflow doit disposer d'un accès en lecture ou en écriture au niveau de la base de données pour la base de données de métadonnées. Cela remplacerait les privilèges de contrôle des accès précis configurés pour la base de données de l'application.
Pour en savoir plus, consultez la section Envisager 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 apportées aux données des tables et des colonnes suivies, même s'ils ne disposent pas des droits d'accès
SELECTsur les tables et les colonnes. Bien qu'il soit plus flexible de configurer des contrôles distincts sur les flux de modifications et leurs tables et colonnes suivies, il existe un risque potentiel. Assurez-vous donc de structurer les rôles et les droits d'accès de la base de données en conséquence. Par exemple, lorsque vous révoquez le droit d'accèsSELECTsur une table à partir d'un rôle, déterminez s'il convient également de révoquerSELECTsur le flux de modifications et de révoquerEXECUTEsur la fonction de lecture associée.Si vous accordez
SELECTsur un flux de modifications qui suit toutes les tables, le bénéficiaire peut voir les modifications apportées aux données de toutes les tables ajoutées à l'avenir.
Étape suivante
- Présentation des flux de modifications
- Créer et gérer des flux de modifications
- Présentation du contrôle des accès précis