Control de acceso detallado para flujos de cambios

En esta página, se explica cómo funciona el control de acceso detallado con los flujos de cambios de Spanner.

En el caso de los usuarios de control de acceso detallado, permites el acceso de lectura para cambiar los datos de flujos. Para ello, debes otorgar los siguientes permisos. Ambos otorgamientos son obligatorios.

  • Otorga 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;
    
  • Otorga EXECUTE en la función de lectura que se crea automáticamente para el flujo de cambios. Usas la función de lectura para leer los registros de flujos 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;
    

    Si deseas obtener información sobre las convenciones de nombres para las funciones de lectura de flujos de cambios y el formato de la información que muestran, consulta los siguientes temas:

INFORMATION_SCHEMA vistas para flujos de cambios

En las siguientes vistas, se muestra la información sobre los privilegios y las funciones de la base de datos para los flujos de cambios:

Las filas de esta vista se filtran según los privilegios de la función de base de datos actual en los flujos de cambios. Esto garantiza que las principales puedan ver solo los roles, los privilegios y las flujos de cambios a las que tienen acceso.

El filtrado de filas también se aplica a las siguientes vistas relacionadas con los flujos de cambios:

GoogleSQL

La función del sistema spanner_info_reader y sus miembros siempre ven un INFORMATION_SCHEMA sin filtrar.

PostgreSQL

La función 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:

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 de control de acceso detallados, 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 IAM que ejecuta el trabajo de Dataflow necesita acceso de lectura y escritura a nivel de la base de datos para la base de datos de metadatos. Esto anulará los privilegios de control de acceso detallados que se configuraron para la base de datos de la aplicación.

    Para obtener más información, consulta Considera usar 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 a los usuarios acceso al flujo de cambios. Los lectores del flujo de cambios pueden ver los cambios en los datos de las tablas y columnas con seguimiento, incluso cuando no tienen privilegios SELECT en las tablas y columnas. Aunque es más flexible configurar controles separados en flujos de cambios y sus tablas y columnas con seguimiento, existe un riesgo potencial, por lo que debes asegurarte de estructurar las funciones y los privilegios de la base de datos según corresponda. Por ejemplo, cuando revocas el privilegio SELECT en una tabla de una función, considera si también debes revocar SELECT en el flujo de cambios y revocar EXECUTE en la función de lectura asociada.

  • Si otorgas SELECT en un flujo de cambios que realiza un seguimiento de todas las tablas, el beneficiario podrá ver los cambios en los datos de cualquier tabla que se agregue en el futuro.

Más información