Vistas autorizadas
En este documento, se describe cómo crear vistas autorizadas y vistas materializadas autorizadas en BigQuery. Como administrador de datos, puedes crear una vista autorizada para compartir un subconjunto de datos en un conjunto de datos con usuarios y grupos específicos (principales). Los principales pueden ver los datos que compartes y ejecutar consultas en ellos, pero no pueden acceder directamente al conjunto de datos de origen.
Tipos de vista
Una vista lógica es el tipo de vista predeterminado para BigQuery, y una vista materializada es una vista procesada previamente que almacena periódicamente en caché los resultados de una consulta para aumentar el rendimiento y la eficiencia.
Una vista autorizada para una vista lógica se denomina vista autorizada, pero una vista autorizada para una vista materializada se denomina vista materializada autorizada.
Si una vista lógica depende de una consulta grande o costosa en cuanto al procesamiento, puedes crear una vista materializada en su lugar. Para comprender los casos de uso de una vista lógica y materializada, consulta Descripción general de las vistas lógicas y materializadas.
Pasos de alto nivel para crear vistas autorizadas
Para crear y compartir una vista, revisa estos pasos de alto nivel, que son los mismos para las vistas lógicas autorizadas y las vistas materializadas autorizadas.
- Crea un conjunto de datos que contenga tus datos de origen.
- Ejecuta una consulta para cargar datos en una tabla de destino en el conjunto de datos de origen.
- Crea un conjunto de datos que contenga tu vista autorizada.
- Crea una vista autorizada a partir de una consulta en SQL que restrinja las columnas que pueden ver tus analistas de datos en los resultados de la consulta.
- Otorga a tus analistas de datos permiso para ejecutar trabajos de consulta.
- Otorga a tus analistas de datos acceso al conjunto de datos que contiene la vista autorizada.
- Otorga a la vista autorizada acceso al conjunto de datos de origen.
Alternativas
Si bien las vistas autorizadas son flexibles y escalables, uno de los siguientes métodos podría aplicarse mejor a tu caso de uso:
- Establece políticas a nivel de las filas en una tabla.
- Establece políticas a nivel de las columnas en una tabla.
- Almacena datos en una tabla separada.
- Comparte todas las vistas de un conjunto de datos (conjuntos de datos autorizados).
Usa seguridad a nivel de las filas o las columnas, o tablas separadas
Si establece políticas de acceso a nivel de las filas en una tabla o crea una tabla separada para contener datos sensibles, un administrador de datos puede restringir la capacidad de un usuario para ver esos datos. Almacenar datos en una tabla separada aísla los datos y quita la capacidad de ver cuántas filas existen en la tabla.
Además, si crea y aplica etiquetas de política, un administrador de datos puede restringir la capacidad del usuario para ver columnas en una tabla.
Almacenar datos en una tabla separada es el método más seguro, pero menos flexible. Establecer políticas a nivel de las filas es flexible y seguro, mientras que compartir vistas autorizadas es flexible y proporciona el mejor rendimiento.
Para comparar estos métodos en detalle, consulta los siguientes recursos:
- Comparación de las vistas autorizadas, la seguridad a nivel de las filas y las tablas separadas
- Introducción a la seguridad a nivel de la fila
- Ejemplos de casos de uso para la seguridad a nivel de las filas
- Introducción al control de acceso a nivel de columna
Comparte todas las vistas de un conjunto de datos
Si deseas otorgar acceso a una colección de vistas a un conjunto de datos, sin tener que autorizar cada vista individual, puedes agrupar las vistas en un conjunto de datos y, luego, darle al conjunto de datos que contiene las vistas acceso al conjunto de datos que contiene los datos.
Luego, puedes otorgar a las principales acceso al conjunto de datos con el grupo de vistas o a vistas individuales en el conjunto de datos, según sea necesario. Un conjunto de datos que tiene acceso a otro conjunto de datos se denomina conjunto de datos autorizado. El conjunto de datos que autoriza a otro conjunto de datos a acceder a sus datos se denomina conjunto de datos compartidos.
La lista de control de acceso de un conjunto de datos puede tener hasta 2,500 recursos autorizados en total, incluidas las vistas autorizadas, los conjuntos de datos autorizados y las funciones autorizadas. Si superas este límite debido a una gran cantidad de vistas autorizadas, considera agrupar las vistas en conjuntos de datos autorizados. Como práctica recomendada, agrupa las vistas relacionadas en conjuntos de datos autorizados cuando diseñes arquitecturas nuevas de BigQuery, en especial, arquitecturas de múltiples usuarios.
Para obtener más información, consulta Conjuntos de datos autorizados y Autoriza un conjunto de datos.
Limitaciones
- Cuando realizas una vista autorizada o una vista materializada autorizada en otro conjunto de datos, el conjunto de datos de origen y el de la vista autorizada deben estar en la misma ubicación regional.
- Cuando borras una vista autorizada, pueden pasar hasta 24 horas para que se quite la vista autorizada de la lista. Durante este tiempo, no puedes acceder a la vista autorizada, pero esta puede aparecer en la lista de vistas y se descuenta del límite de vistas autorizadas. Este límite puede evitar la creación de vistas autorizadas adicionales si la nueva vista autorizada superara ese límite.
- No puedes crear una vista autorizada en una réplica secundaria. Para obtener más información, consulta Comportamiento de los recursos en la replicación de conjuntos de datos.
Antes de comenzar
Otorga funciones de Identity and Access Management (IAM) que les brindan a los usuarios los permisos necesarios para consultar las vistas autorizadas o las vistas materializadas autorizadas que compartes.
Vistas autorizadas y Controles del servicio de VPC
Cuando se usan vistas autorizadas en un perímetro de Controles del servicio de VPC, las reglas de entrada y salida deben permitir que los principales accedan al proyecto que contiene la vista y a cualquier otro proyecto que contenga los datos de origen desde los que la vista accede a los datos.
Por ejemplo, en el siguiente diagrama, el llamador del proyecto R accede a la vista autorizada en el proyecto A cuya tabla de origen existe en el proyecto B. En este caso, las reglas de entrada y salida de los Controles del servicio de VPC deben permitir que el llamador del proyecto R acceda al proyecto A y al proyecto B con el servicio de BigQuery.
Permisos necesarios para el acceso a los Controles del servicio de VPC
El principal no necesita permisos de Identity and Access Management en el proyecto de datos de origen, pero la regla de entrada debe permitir el acceso al servicio de BigQuery en el proyecto de origen que contiene la tabla de origen, además de permitir el acceso al proyecto que contiene la vista.
Para obtener información sobre los roles y permisos necesarios, consulta Permisos de usuario en el proyecto y el conjunto de datos.
Reglas de entrada y salida
En los siguientes ejemplos de reglas de entrada y salida de los Controles del servicio de VPC, se permite que la API de BigQuery acceda a los proyectos de origen y de vista.
- Para obtener detalles sobre la configuración de las reglas de entrada y salida, consulta Configura políticas de entrada y salida.
- Para conocer las limitaciones sobre cómo configurar las reglas de entrada y salida para BigQuery, consulta Productos compatibles con los Controles del servicio de VPC: BigQuery.
Por ejemplo, si creas una vista en PROJECT_A (vista) que accede a los datos en PROJECT_B (origen), necesitarías el siguiente conjunto de reglas de entrada para PROJECT_B y otro conjunto de reglas de entrada para PROJECT_A:
- ingressFrom:
identityType: caller_r
sources:
- resource:
- projects/project_r
ingressTo:
operations:
- serviceName: bigquery.googleapis.com
methodSelectors:
- method: *
resources:
- projects/project_b
title: Ingress rules for the source project
El siguiente archivo YAML muestra el conjunto de reglas de salida para PROJECT_B (origen). También necesitarías un conjunto de reglas de salida para PROJECT_A (vista):
- egressTo:
operations:
- serviceName: bigquery.googleapis.com
methodSelectors:
- method: *
resources:
- projects/project_b
egressFrom:
identityType: caller_r
sources:
- resource:
- projects/project_r
title: Egress rules for the source project
Roles obligatorios
Para crear o actualizar una vista autorizada, necesitas permisos en el conjunto de datos que contiene la vista y en el conjunto de datos que proporciona acceso a la vista.
También debes otorgar a los usuarios o grupos acceso al proyecto y al conjunto de datos que contienen la vista.
Permisos del conjunto de datos que contiene la vista
Las vistas se tratan como recursos de tabla en BigQuery, por lo que la creación de una vista requiere los mismos permisos que la creación de una tabla. También debes tener permisos para consultar las tablas a las que hace referencia la consulta en SQL de la vista.
- Para crear un conjunto de datos, necesitas el permiso de IAM
bigquery.datasets.createen el proyecto. - Para crear una vista, necesitas el permiso de IAM
bigquery.tables.createen el conjunto de datos. El rol predefinido de IAMroles/bigquery.dataEditorincluye los permisos que necesitas para crear una configuración. - Para crear una vista que consulte una tabla a la que no tienes acceso, debes tener el permiso
bigquery.tables.getDataen la tabla que consulta la vista.
Para obtener más información sobre los roles y los permisos de IAM en BigQuery, consulta Roles y permisos predefinidos.
Permisos del conjunto de datos que contiene los datos de origen
Para autorizar una vista, se le otorgan permisos de lectura al conjunto de datos de origen.
Para realizar esta autorización, necesitas los siguientes permisos en el conjunto de datos que contiene los datos de origen:
bigquery.datasets.updatedatasets.getIamPolicydatasets.setIamPolicy
Para obtener permisos adicionales necesarios para actualizar conjuntos de datos, consulta los permisos necesarios.
Permisos de usuario en el proyecto y el conjunto de datos para la vista
Para compartir una vista autorizada con usuarios o grupos, debes otorgarles los siguientes permisos de IAM:
El rol de IAM
roles/bigquery.jobUser(oroles/bigquery.user) al proyecto en el que se ejecuta el trabajo de consulta (el proyecto de facturación o ejecución). Este rol otorga el permisobigquery.jobs.create, que es necesario para ejecutar trabajos de consulta en la vista.El rol de IAM
roles/bigquery.jobUsersolo es necesario para el proyecto en el que deseas ejecutar el trabajo, independientemente de dónde se aloje la vista.El rol de IAM
roles/bigquery.dataVieweral conjunto de datos que contiene la vista autorizada. Este rol otorga el permisobigquery.tables.getData, que es necesario para consultar la vista.Si un usuario consulta la vista autorizada desde un proyecto separado, no necesita el rol
roles/bigquery.jobUseren el proyecto que aloja la vista. Necesita el rolroles/bigquery.dataVieweren el conjunto de datos que contiene la vista y el rolroles/bigquery.jobUseren el proyecto en el que se ejecuta la consulta.
Trabaja con vistas autorizadas
En las siguientes secciones, se describe cómo trabajar con vistas autorizadas y vistas materializadas autorizadas.
Crear una vista autorizada
Para crear una vista autorizada, elige una de las siguientes opciones. Para obtener los pasos completos para autorizar, compartir y borrar una vista autorizada, consulta el instructivo Crea una vista autorizada.
Console
Ve a la página de BigQuery.
En el editor de consultas, escribe la consulta en la que deseas basar la vista autorizada.
Haz clic en Archivo > Guardar > Guardar vista.
En el cuadro de diálogo Guardar vista, haz lo siguiente:
En Proyecto, escribe el proyecto en el que se guardará la vista.
En Conjunto de datos, escribe el conjunto de datos en el que se guardará la vista. Este debe ser un conjunto de datos diferente del que se usa en la consulta de origen.
En Tabla, escribe el nombre de la vista.
Haz clic en Guardar.
Otorga los permisos necesarios a los usuarios que pueden usar la vista autorizada.
En el panel Explorador, selecciona el conjunto de datos que se usa en la consulta de origen.
En el panel Detalles, haz clic en Compartir > Autorizar vistas.
En el panel Vistas autorizadas, en Vista autorizada, escribe el nombre completamente calificado de la vista, en el formato PROJECT_ID.DATASET_ID.VIEW_NAME.
Haz clic en Agregar autorización.
Terraform
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Para aplicar tu configuración de Terraform en un Google Cloud proyecto, completa los pasos de las siguientes secciones.
Prepara Cloud Shell
- Inicia Cloud Shell.
-
Establece el proyecto predeterminado en el que deseas aplicar tus configuraciones de Terraform. Google Cloud
Solo necesitas ejecutar este comando una vez por proyecto y puedes ejecutarlo en cualquier directorio.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Las variables de entorno se anulan si configuras valores explícitos en el archivo de configuración de Terraform.
Prepara el directorio
Cada archivo de configuración de Terraform debe tener su propio directorio (también llamado módulo raíz).
-
En Cloud Shell, crea un directorio y un archivo nuevo dentro de ese directorio. El nombre del archivo debe tener la extensión
.tf, por ejemplo,main.tf. En este instructivo, el archivo se denominamain.tf.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Si sigues un instructivo, puedes copiar el código de muestra en cada sección o paso.
Copia el código de muestra en el
main.tfrecién creado.De manera opcional, copia el código de GitHub. Esto se recomienda cuando el fragmento de Terraform es parte de una solución de extremo a extremo.
- Revisa y modifica los parámetros de muestra que se aplicarán a tu entorno.
- Guarda los cambios.
-
Inicializa Terraform. Solo debes hacerlo una vez por directorio.
terraform init
De manera opcional, incluye la opción
-upgradepara usar la última versión del proveedor de Google:terraform init -upgrade
Aplica los cambios
-
Revisa la configuración y verifica que los recursos que creará o actualizará Terraform coincidan con tus expectativas:
terraform plan
Corrige la configuración según sea necesario.
-
Para aplicar la configuración de Terraform, ejecuta el siguiente comando y, luego, escribe
yescuando se te solicite:terraform apply
Espera hasta que Terraform muestre el mensaje “¡Aplicación completa!”.
- Abre tu Google Cloud proyecto para ver los resultados. En la Google Cloud consola, navega a tus recursos en la IU para asegurarte de que Terraform los haya creado o actualizado.
Administra usuarios o grupos para vistas autorizadas
Después de autorizar una vista, puedes mantener el acceso a ella completando las siguientes tareas para un conjunto de datos, una tabla o una vista:
- Visualiza la política de acceso.
- Otorga acceso.
- Revoca el acceso.
- Deniega el acceso.
Para obtener más información, consulta Controla el acceso a los recursos con IAM.
Quita la autorización a una vista
Para quitar la autorización de una vista, selecciona una de las siguientes opciones:
Console
Ve a la página de BigQuery en la Google Cloud consola.
En el panel de la izquierda, haz clic en Explorador:

Si no ves el panel izquierdo, haz clic en Expandir panel izquierdo para abrirlo.
En el panel Explorador, expande tu proyecto, haz clic en Conjuntos de datos y luego, selecciona un conjunto de datos.
Haz clic en Descripción general > Tablas y, luego, selecciona una tabla.
Haz clic en Compartir > Autorizar vistas.
Haz clic en para Quitar autorización.
Haz clic en Cerrar.
bq
Para quitar la autorización de una vista, usa el comando bq rm. Ingresa el table_id de la vista de la que deseas quitar la autorización.
bq rm \ project_id:dataset:table_id
API
Llama al tables.delete
método y usa las propiedades projectID,datasetID y tableID para
quitar la vista autorizada de tu conjunto de datos. Para obtener más información, consulta
Tablas.
Cuotas y límites
- Las vistas autorizadas están sujetas a los límites de los conjuntos de datos. Para obtener más información, consulta Límites de conjuntos de datos.
- Si quitas una vista autorizada, pueden pasar hasta 24 horas para que se quiten del sistema todas las referencias a la vista. Para evitar errores, espera 24 horas antes de reutilizar el nombre de una vista que se quitó o crea un nombre único para tu vista.
Temas avanzados
En las siguientes secciones, se describen métodos avanzados para usar vistas autorizadas.
Combina la seguridad a nivel de las filas con las vistas autorizadas
Los datos que se muestran en una vista lógica o en una vista materializada se filtran según las políticas de acceso a nivel de las filas de la tabla de origen subyacente.
Para obtener detalles sobre cómo interactúa la seguridad a nivel de las filas con las vistas materializadas, consulta Usa la seguridad a nivel de las filas con otras funciones de BigQuery.
Combina la seguridad a nivel de las columnas con las vistas autorizadas
El impacto de la seguridad a nivel de columna en las vistas es independiente de si la vista es autorizada o no.
Para obtener una descripción detallada de cómo se aplican los permisos, consulta Consulta vistas para la seguridad a nivel de las columnas.
Usa BigQuery sharing con vistas autorizadas
BigQuery sharing (anteriormente Analytics Hub) es una plataforma de intercambio de datos con las siguientes capacidades:
- Te permite compartir datos y estadísticas a gran escala más allá de los límites de la organización.
- Usa un framework de seguridad y privacidad sólido.
- Admite la publicación de un conjunto de datos de BigQuery, llamado conjunto de datos compartidos, y sus vistas autorizadas y conjuntos de datos autorizados asociados, en un conjunto de suscriptores.
Un conjunto de datos vinculado es un conjunto de datos de BigQuery de solo lectura que funciona como un puntero o una referencia a un conjunto de datos compartido. Suscribirse a una ficha de uso compartido crea un conjunto de datos vinculado en tu proyecto, pero no una copia del conjunto de datos, de modo que los suscriptores pueden leer los datos, pero no pueden agregar ni actualizar objetos dentro de él.
No se admiten las vistas materializadas que hagan referencia a tablas en el conjunto de datos vinculado. no se admiten.
Para obtener más información, consulta Introducción al uso compartido.
¿Qué sigue?
- Si deseas obtener un instructivo sobre cómo crear una vista autorizada, consulta Crea una vista autorizada.
- Para crear una vista lógica, consulta Crea vistas lógicas.
- Para crear una vista materializada, que admite otros tipos de control de acceso, consulta Crea vistas materializadas.
- Para obtener metadatos de vistas, consulta Obtén información sobre las vistas.
- Para administrar vistas, consulta Administra vistas.