Vistas autorizadas

En este documento, se describe cómo crear vistas autorizadas y vistas materializadas autorizadas en BigQuery.

Descripción general

Como administrador de datos, puedes crear una vista autorizada para compartir un subconjunto de datos de un conjunto de datos con usuarios y grupos específicos (principales). Las entidades principales pueden ver los datos que compartes y ejecutar consultas sobre ellos, pero no pueden acceder directamente al conjunto de datos fuente.

Tipos de vistas

Una vista lógica es el tipo de vista predeterminado para BigQuery, y una vista materializada es una vista procesada previamente que almacena en caché de forma periódica 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. Sin embargo, consultar solo un subconjunto de tus datos o usar otras técnicas a menudo puede mejorar el rendimiento sin necesidad de crear una vista materializada.

Para obtener más información, consulta los siguientes recursos:

Pasos generales para crear vistas autorizadas

Para crear y compartir una vista, revisa estos pasos generales, que son los mismos para las vistas lógicas autorizadas y las vistas materializadas autorizadas.

  • Crea un conjunto de datos que contenga tus datos fuente.
  • 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 tus analistas de datos pueden ver 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 acceso de vista autorizado al conjunto de datos fuente.

Alternativas

Si bien las vistas autorizadas son flexibles y escalables, uno de los siguientes métodos podría ser más adecuado para tu caso de uso:

  • Establece políticas a nivel de las filas en una tabla.
  • Establece políticas a nivel de la columna en una tabla.
  • Almacena los datos en una tabla separada.
  • Compartir todas las vistas de un conjunto de datos (conjuntos de datos autorizados)

Usa la seguridad a nivel de la fila o la columna, o tablas separadas

Si establece políticas de acceso a nivel de la fila en una tabla o crea una tabla separada para almacenar datos sensibles, un administrador de datos puede restringir la capacidad de un usuario para ver esos datos. Almacenar los datos en una tabla separada aísla los datos y quita la capacidad de ver cuántas filas existen en la tabla.

Además, al crear y aplicar etiquetas de política, un administrador de datos puede restringir la capacidad del usuario para ver columnas en una tabla.

Almacenar los datos en una tabla separada es el método más seguro, pero el 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:

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 que contiene 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 compartido.

Para obtener más información, consulta Conjuntos de datos autorizados y Autoriza un conjunto de datos.

Limitaciones

  • Cuando creas 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.

Antes de comenzar

Otorga roles 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.

Roles obligatorios

Para crear o actualizar una vista autorizada, necesitas permisos para el conjunto de datos que contiene la vista y para 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 de administrador en el 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 una vista, necesitas el permiso bigquery.tables.create de IAM. El rol predefinido de IAM roles/bigquery.dataEditor incluye los permisos que necesitas para crear una configuración.

Además, si tienes el permiso bigquery.datasets.create, puedes crear vistas en los conjuntos de datos que crees. Si deseas crear una vista para datos que no son de tu propiedad, debes tener el permiso bigquery.tables.getData para esa tabla.

Para obtener más información sobre los roles y los permisos de IAM en BigQuery, consulta Roles y permisos predefinidos.

Permisos de administrador en el segundo conjunto de datos que otorga acceso a la vista

Para actualizar las propiedades del conjunto de datos, necesitas los siguientes permisos de IAM:

  • bigquery.datasets.update
  • bigquery.datasets.setIamPolicy (solo se requiere cuando se actualizan los controles de acceso al conjunto de datos en la Trusted Cloud consola)

El rol predefinido de IAM roles/bigquery.dataOwner incluye los permisos que necesitas para actualizar las propiedades de un conjunto de datos.

Además, si tienes el permiso bigquery.datasets.create, puedes actualizar las etiquetas de los conjuntos de datos que crees.

Para obtener más información sobre los roles y los permisos de IAM en BigQuery, consulta Funciones y permisos predefinidos.

Permisos del usuario en el proyecto y el conjunto de datos de la vista

Para compartir una vista autorizada con usuarios o grupos, debes otorgarles los siguientes permisos de IAM:

  • El rol de IAM roles/bigquery.user para el proyecto que contiene la vista autorizada
  • El rol de IAM roles/bigquery.dataViewer para el conjunto de datos que contiene la vista autorizada

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. Si deseas conocer todos los pasos para autorizar, compartir y borrar una vista autorizada, consulta el instructivo Crea una vista autorizada.

Console

  1. Ve a la página de BigQuery.

    Ir a BigQuery

  2. En el editor de consultas, escribe la consulta en la que deseas basar la vista autorizada.

  3. Haz clic en Guardar > Guardar vista.

  4. En el cuadro de diálogo Guardar vista, haz lo siguiente:

    1. En Proyecto, escribe el proyecto en el que se guardará la vista.

    2. En Conjunto de datos, escribe el conjunto de datos en el que deseas guardar la vista. Debe ser un conjunto de datos diferente del que se usa en la consulta de origen.

    3. En Tabla, escribe el nombre de la vista.

    4. Haz clic en Guardar.

  5. Otorga los permisos necesarios a los usuarios que pueden usar la vista autorizada.

  6. En el panel Explorador, selecciona el conjunto de datos que se usó en la consulta de origen.

  7. En el panel Detalles, haz clic en Compartir > Autorizar vistas.

  8. 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.

  9. 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.

.
# Creates an authorized view.

# Create a dataset to contain the view.
resource "google_bigquery_dataset" "view_dataset" {
  dataset_id  = "view_dataset"
  description = "Dataset that contains the view"
  location    = "us-west1"
}

# Create the view to authorize.
resource "google_bigquery_table" "movie_view" {
  project     = google_bigquery_dataset.view_dataset.project
  dataset_id  = google_bigquery_dataset.view_dataset.dataset_id
  table_id    = "movie_view"
  description = "View to authorize"

  view {
    query          = "SELECT item_id, avg(rating) FROM `movie_project.movie_dataset.movie_ratings` GROUP BY item_id ORDER BY item_id;"
    use_legacy_sql = false
  }
}


# Authorize the view to access the dataset
# that the query data originates from.
resource "google_bigquery_dataset_access" "view_authorization" {
  project    = "movie_project"
  dataset_id = "movie_dataset"

  view {
    project_id = google_bigquery_table.movie_view.project
    dataset_id = google_bigquery_table.movie_view.dataset_id
    table_id   = google_bigquery_table.movie_view.table_id
  }
}

# Specify the IAM policy for principals that can access
# the authorized view. These users should already
# have the roles/bigqueryUser role at the project level.
data "google_iam_policy" "principals_policy" {
  binding {
    role = "roles/bigquery.dataViewer"
    members = [
      "group:example-group@example.com",
    ]
  }
}

# Set the IAM policy on the authorized  view.
resource "google_bigquery_table_iam_policy" "authorized_view_policy" {
  project     = google_bigquery_table.movie_view.project
  dataset_id  = google_bigquery_table.movie_view.dataset_id
  table_id    = google_bigquery_table.movie_view.table_id
  policy_data = data.google_iam_policy.principals_policy.policy_data
}

Para aplicar tu configuración de Terraform en un proyecto Trusted Cloud , completa los pasos de las siguientes secciones.

Prepara Cloud Shell

  1. Inicia Cloud Shell
  2. Establece el proyecto Trusted Cloud predeterminado en el que deseas aplicar tus configuraciones de Terraform.

    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).

  1. 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 denomina main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. 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.tf recié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.

  3. Revisa y modifica los parámetros de muestra que se aplicarán a tu entorno.
  4. Guarda los cambios.
  5. Inicializa Terraform. Solo debes hacerlo una vez por directorio.
    terraform init

    De manera opcional, incluye la opción -upgrade para usar la última versión del proveedor de Google:

    terraform init -upgrade

Aplica los cambios

  1. 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.

  2. Para aplicar la configuración de Terraform, ejecuta el siguiente comando y, luego, escribe yes cuando se te solicite:
    terraform apply

    Espera hasta que Terraform muestre el mensaje “¡Aplicación completa!”.

  3. Abre tu proyecto Trusted Cloud para ver los resultados. En la consola de Trusted Cloud , navega a tus recursos en la IU para asegurarte de que Terraform los haya creado o actualizado.

Administra usuarios o grupos para las 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.
  • Revocar 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

  1. Ve a la página de BigQuery en la consola de Trusted Cloud .

    Ir a BigQuery

  2. En el panel Explorador, expande tu proyecto y elige un conjunto de datos.

  3. Haz clic en Compartir > Autorizar vistas.

  4. Haz clic en para quitar la autorización.

  5. 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 a la que quieres quitar la autorización.

    bq rm \
    project_id:dataset:table_id
    

API

Llama al método tables.delete 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 las 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 la columna 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 Vistas de consulta para la seguridad a nivel de columnas.

Usa el uso compartido de BigQuery 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 marco de trabajo sólido de seguridad y privacidad.
  • Admite la publicación de un conjunto de datos de BigQuery, llamado conjunto de datos compartido, y sus vistas autorizadas y conjuntos de datos autorizados asociados para 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. Cuando te suscribes a una ficha de uso compartido, se 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.

Para obtener más información, consulta Introducción al uso compartido.

¿Qué sigue?