En esta página, se explica cómo funciona el control de acceso detallado con los flujos de cambios de Spanner para las bases de datos de dialecto de GoogleSQL y de PostgreSQL.
Para los usuarios con control de acceso detallado, puedes permitir el acceso de lectura a los datos de los flujos de cambios con los siguientes permisos. Se requieren ambos permisos.
Otorga
SELECTen el flujo de cambios.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;
Otorga
EXECUTEen la función de lectura que se crea automáticamente para el flujo de cambios. Usa la función de lectura para leer los registros de flujo de cambios.GoogleSQL
GRANT EXECUTE ON TABLE FUNCTION READ_FUNCTION_NAME TO ROLE ROLE_NAME;
PostgreSQL
GRANT EXECUTE ON FUNCTION READ_FUNCTION_NAME TO ROLE_NAME;
Para obtener información sobre las convenciones de nombres de las funciones de lectura de flujos de cambios y el formato de la información que devuelven, consulta los siguientes temas:
Vistas de INFORMATION_SCHEMA para los flujos de cambios
En las siguientes vistas, se muestra información sobre los roles y privilegios de la base de datos para los flujos de cambios:
- Bases de datos de dialecto de GoogleSQL:
INFORMATION_SCHEMA.CHANGE_STREAM_PRIVILEGES - Bases de datos de dialecto de PostgreSQL:
information_schema.change_stream_privileges
Las filas de estas vistas se filtran según los privilegios del rol de la base de datos actual en los flujos de cambios. Esto garantiza que las principales solo puedan ver los roles, los privilegios y los flujos de cambios a los que tienen acceso.
El filtrado de filas también se aplica a las siguientes vistas relacionadas con los flujos de cambios:
GoogleSQL
INFORMATION_SCHEMA.CHANGE_STREAMSINFORMATION_SCHEMA.CHANGE_STREAM_TABLESINFORMATION_SCHEMA.CHANGE_STREAM_COLUMNSINFORMATION_SCHEMA.CHANGE_STREAM_OPTIONS
El rol del sistema spanner_info_reader y sus miembros siempre ven un INFORMATION_SCHEMA sin filtrar.
PostgreSQL
information_schema.change_streamsinformation_schema.change_stream_tablesinformation_schema.change_stream_columnsinformation_schema.change_stream_options
El rol del sistema spanner_info_reader y sus miembros ven un information_schema sin filtrar.
El filtrado de filas también se aplica a las siguientes vistas de metadatos para las funciones de lectura de flujos de cambios:
GoogleSQL
PostgreSQL
Advertencias
Los flujos de cambios usan una base de datos de metadatos para mantener el estado interno. La base de datos de metadatos puede ser igual o diferente a la base de datos de la aplicación. Te recomendamos que uses una base de datos diferente. Sin embargo, para los usuarios con control de acceso detallado, la base de datos de metadatos no puede ser la misma que la base de datos de la aplicación. Esto se debe a que la principal de Identity and Access Management (IAM) que ejecuta el trabajo de Dataflow necesita acceso de lectura o escritura a nivel de la base de datos para la base de datos de metadatos. Esto anularía los privilegios de control de acceso detallado que se configuraron para la base de datos de la aplicación.
Para obtener más información, consulta Considera una base de datos de metadatos independiente.
Debido a que un flujo de cambios contiene una copia separada de los datos de las tablas y columnas con seguimiento, ten cuidado cuando otorgues acceso a los usuarios al flujo de cambios. Los lectores del flujo de cambios pueden ver los cambios de datos de las tablas y columnas supervisadas, incluso cuando no tienen privilegios de
SELECTen las tablas y columnas. Aunque es más flexible configurar controles independientes en los flujos de cambios y sus tablas y columnas con seguimiento, existe un riesgo potencial, por lo que debes asegurarte de estructurar los roles y privilegios de la base de datos en consecuencia. Por ejemplo, cuando se revoca el privilegioSELECTen una tabla de un rol, considera si también se debe revocarSELECTen el flujo de cambios y revocarEXECUTEen la función de lectura asociada.Si otorgas
SELECTen un flujo de cambios que hace un seguimiento de todas las tablas, el beneficiario puede ver los cambios de datos de las tablas que se agreguen en el futuro.