En esta página se explica cómo funciona el control de acceso granular con los flujos de cambios de Spanner en bases de datos con dialecto GoogleSQL y PostgreSQL.
En el caso de los usuarios con control de acceso pormenorizado, puedes permitir el acceso de lectura a los datos de los flujos de cambios mediante las siguientes concesiones. Ambas concesiones son obligatorias.
Concede
SELECT
en 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;
Concede
EXECUTE
en la función de lectura que se crea automáticamente para el flujo de cambios. Utiliza la función de lectura para leer 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 nomenclatura de las funciones de lectura de secuencias de cambios y el formato de la información que devuelven, consulta los siguientes temas:
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 de los flujos de cambios:
- Bases de datos con dialecto GoogleSQL:
INFORMATION_SCHEMA.CHANGE_STREAM_PRIVILEGES
- Bases de datos con dialecto PostgreSQL:
information_schema.change_stream_privileges
Las filas de estas vistas se filtran en función de los privilegios del rol de base de datos actual en los flujos de cambios. De esta forma, las entidades solo pueden 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_STREAMS
INFORMATION_SCHEMA.CHANGE_STREAM_TABLES
INFORMATION_SCHEMA.CHANGE_STREAM_COLUMNS
INFORMATION_SCHEMA.CHANGE_STREAM_OPTIONS
El rol de sistema spanner_info_reader
y sus miembros siempre ven un INFORMATION_SCHEMA
sin filtrar.
PostgreSQL
information_schema.change_streams
information_schema.change_stream_tables
information_schema.change_stream_columns
information_schema.change_stream_options
El rol del sistema spanner_info_reader
y sus miembros ven un feed sin filtrarinformation_schema
.
El filtrado de filas también se aplica a las siguientes vistas de metadatos de 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 la misma que la base de datos de la aplicación o diferente. Te recomendamos que uses otra base de datos. Sin embargo, en el caso de 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 entidad de seguridad de gestión de identidades y accesos que ejecuta la tarea de Dataflow necesita acceso de lectura o escritura a nivel de base de datos para la base de datos de metadatos. De esta forma, se anularían los privilegios de control de acceso pormenorizado que se hubieran configurado para la base de datos de la aplicación.
Para obtener más información, consulta Considerar una base de datos de metadatos independiente.
Como un flujo de cambios contiene una copia independiente de los datos de las tablas y columnas monitorizadas, ten cuidado al conceder acceso a los usuarios al flujo de cambios. Los lectores del flujo de cambios pueden ver los cambios en los datos de las tablas y las columnas monitorizadas, aunque no tengan
SELECT
privilegios en las tablas y las columnas. Aunque es más flexible configurar controles independientes en los flujos de cambios y en sus tablas y columnas monitorizadas, existe un riesgo potencial, por lo que debes asegurarte de estructurar los roles y privilegios de la base de datos en consecuencia. Por ejemplo, al revocar el privilegioSELECT
en una tabla de un rol, plantéate si también debes revocarSELECT
en el flujo de cambios yEXECUTE
en la función de lectura asociada.Si concede
SELECT
en un flujo de cambios que monitoriza todas las tablas, el beneficiario podrá ver los cambios de datos de las tablas que se añadan en el futuro.
Siguientes pasos
- Descripción general de los cambios en los streams
- Crear y gestionar flujos de cambios
- Información general sobre el control de acceso granular