Cambios en los controles de acceso a nivel del conjunto de datos

A partir del 15 de septiembre de 2025, se requerirá el permiso de Identity and Access Management (IAM) bigquery.datasets.getIamPolicy para ver los controles de acceso de un conjunto de datos y consultar la vista INFORMATION_SCHEMA.OBJECT_PRIVILEGES. El permiso bigquery.datasets.setIamPolicy es necesario para actualizar los controles de acceso de un conjunto de datos o para crear un conjunto de datos con controles de acceso mediante la API.

Habilita la aplicación forzosa anticipada

Antes del 15 de septiembre de 2025, puedes habilitar la aplicación anticipada de los cambios de permisos. Cuando habilitas esta opción, se necesita el permiso bigquery.datasets.getIamPolicy para obtener los controles de acceso de un conjunto de datos y el permiso bigquery.datasets.setIamPolicy para actualizar los controles de acceso de un conjunto de datos o crear un conjunto de datos con controles de acceso mediante la API.

Para habilitar la aplicación anticipada, establece el parámetro de configuración enable_fine_grained_dataset_acls_option en TRUE a nivel de la organización o el proyecto. Para obtener instrucciones sobre cómo habilitar la configuración, consulta Cómo administrar la configuración.

Ejemplos de configuración

En los siguientes ejemplos, se muestra cómo establecer y quitar la configuración de enable_fine_grained_dataset_acls_option.

Configura los ajustes de la organización

Para establecer la configuración de la organización, usa la declaración DDL ALTER ORGANIZATION SET OPTIONS. En el siguiente ejemplo, se establece enable_fine_grained_dataset_acls_option como TRUE a nivel de la organización:

ALTER ORGANIZATION
SET OPTIONS (
  `region-REGION.enable_fine_grained_dataset_acls_option` = TRUE);

Reemplaza REGION por la región asociada con tu organización, por ejemplo, us o europe-west6.

En el siguiente ejemplo, se borra la configuración de enable_fine_grained_dataset_acls_option a nivel de la organización:

ALTER ORGANIZATION
SET OPTIONS (
  `region-REGION.enable_fine_grained_dataset_acls_option` = FALSE);

Define la configuración del proyecto

Para establecer la configuración del proyecto, usa la declaración DDL ALTER PROJECT SET OPTIONS. La declaración DDL ALTER PROJECT SET OPTIONS acepta de forma opcional la variable project_id. Si no se especifica project_id, el valor predeterminado es el proyecto actual en el que se ejecuta la consulta.

En el siguiente ejemplo, se configura enable_fine_grained_dataset_acls_option como TRUE.

ALTER PROJECT PROJECT_ID
SET OPTIONS (
  `region-REGION.enable_fine_grained_dataset_acls_option` = TRUE);

Reemplaza PROJECT_ID con el ID del proyecto.

En el siguiente ejemplo, se borra la configuración de enable_fine_grained_dataset_acls_option a nivel del proyecto:

ALTER PROJECT PROJECT_ID
SET OPTIONS (
  `region-REGION.enable_fine_grained_dataset_acls_option` = FALSE);

Cambios en los roles personalizados

Este cambio en los permisos requeridos afecta a los roles personalizados existentes que otorgan permisos bigquery.datasets.get, bigquery.datasets.create o bigquery.datasets.update y que tampoco otorgan los permisos bigquery.datasets.getIamPolicy o bigquery.datasets.setIamPolicy.

Cualquier rol personalizado que solo incluya el permiso bigquery.datasets.get, bigquery.datasets.update o bigquery.datasets.create debe actualizarse para incluir el permiso bigquery.datasets.getIamPolicy o bigquery.datasets.setIamPolicy antes del 15 de septiembre de 2025 si deseas mantener la funcionalidad existente de los roles personalizados. Si tus roles personalizados necesitan ver o actualizar solo los metadatos de un conjunto de datos, usa los nuevos parámetros dataset_view y update_mode.

Este cambio no afectará a los roles predefinidos de BigQuery. Todos los roles predefinidos que otorgan el permiso bigquery.datasets.get también otorgan el permiso bigquery.datasets.getIamPolicy. Todos los roles predefinidos que otorgan el permiso bigquery.datasets.update también otorgan el permiso bigquery.datasets.setIamPolicy.

Cambios en los comandos de la herramienta de línea de comandos de bq

Cuando habilitas la aplicación anticipada de políticas, se ven afectados los siguientes comandos de la herramienta bq.

bq show

Puedes usar el comando bq show con la siguiente marca:

--dataset_view={METADATA|ACL|FULL}
Especifica cómo aplicar permisos cuando ves los controles de acceso o los metadatos de un conjunto de datos. Usa uno de los siguientes valores:
  • METADATA: Ver solo los metadatos del conjunto de datos. Este valor requiere el permiso bigquery.datasets.get.
  • ACL: Ver solo los controles de acceso del conjunto de datos Este valor requiere el permiso bigquery.datasets.getIamPolicy.
  • FULL: Consulta los metadatos y los controles de acceso del conjunto de datos. Este valor requiere los permisos bigquery.datasets.get y bigquery.datasets.getIamPolicy.

bq update

Puedes usar el comando bq update con la siguiente marca:

--update_mode={UPDATE_METADATA|UPDATE_ACL|UPDATE_FULL}
Especifica cómo aplicar permisos cuando actualizas los controles de acceso o los metadatos de un conjunto de datos. Usa uno de los siguientes valores:
  • UPDATE_METADATA: Actualiza solo los metadatos del conjunto de datos. Este valor requiere el permiso bigquery.datasets.update.
  • UPDATE_ACL: Actualiza solo los controles de acceso del conjunto de datos. Este valor requiere el permiso bigquery.datasets.setIamPolicy.
  • UPDATE_FULL: Actualiza los metadatos y los controles de acceso del conjunto de datos. Este valor requiere los permisos bigquery.datasets.update y bigquery.datasets.setIamPolicy.

Cambios en las sentencias del lenguaje de control de datos (DCL)

Cuando habilitas la aplicación anticipada, se requieren los siguientes permisos para ejecutar sentencias GRANT y REVOKE en conjuntos de datos con el lenguaje de control de datos (DCL):

  • bigquery.datasets.setIamPolicy

Cambios en las consultas de vistas de INFORMATION_SCHEMA

Cuando habilitas la aplicación forzosa anticipada, se requiere el permiso bigquery.datasets.getIamPolicy para consultar la vista INFORMATION_SCHEMA.OBJECT_PRIVILEGES.

Cambios en los métodos de la API

Después de habilitar la aplicación anticipada, se verán afectados los siguientes métodos de conjunto de datos de la API de REST v2:

Método datasets.get

El método datasets.get tiene un parámetro de ruta adicional llamado dataset_view.

Este parámetro te brinda más control sobre la información que muestra el método datasets.get. En lugar de mostrar siempre los controles de acceso y los metadatos, el parámetro dataset_view te permite especificar si quieres mostrar solo los metadatos, solo los controles de acceso o ambos.

El campo access en el recurso de conjunto de datos contiene los controles de acceso del conjunto de datos. Los otros campos, como friendlyName, description y labels, representan los metadatos del conjunto de datos.

En la siguiente tabla, se muestra el permiso requerido y la respuesta de la API para los diferentes valores admitidos por el parámetro dataset_view:

Valor del parámetro Permisos necesarios Respuesta de la API
DATASET_VIEW_UNSPECIFIED (o vacío)
  • bigquery.datasets.get
  • bigquery.datasets.getIamPolicy
Es el valor predeterminado. Devuelve los metadatos y los controles de acceso del conjunto de datos.
METADATA
  • bigquery.datasets.get
Muestra los metadatos del conjunto de datos.
ACL
  • bigquery.datasets.getIamPolicy
Muestra los controles de acceso, los campos obligatorios y los campos del recurso del conjunto de datos que solo son de salida.
FULL
  • bigquery.datasets.get
  • bigquery.datasets.getIamPolicy
Devuelve los metadatos y los controles de acceso del conjunto de datos.

Si no habilitas la aplicación anticipada de políticas o si inhabilitas esta opción después de habilitarla, puedes usar el parámetro dataset_view con los valores METADATA o ACL. Los valores FULL y DATASET_VIEW_UNSPECIFIED (o vacíos) tienen el comportamiento anterior de forma predeterminada. El permiso bigquery.datasets.get te permite obtener metadatos y controles de acceso.

Ejemplo

En el siguiente ejemplo, se envía una solicitud GET con el parámetro dataset_view configurado en METADATA:

GET https://bigquery.googleapis.com/bigquery/v2/projects/YOUR_PROJECT/datasets/YOUR_DATASET?datasetView=METADATA&key=YOUR_API_KEY HTTP/1.1

Reemplaza lo siguiente:

  • YOUR_PROJECT: nombre del proyecto.
  • YOUR_DATASET: El nombre del conjunto de datos.
  • YOUR_API_KEY: Es tu clave de API.

Método datasets.update

El método datasets.update tiene un parámetro de ruta adicional llamado update_mode.

Este parámetro te brinda más control sobre los campos que actualiza el método datasets.update. En lugar de permitir siempre actualizaciones de los controles de acceso y los metadatos, el parámetro update_mode te permite especificar si quieres actualizar solo los metadatos, solo los controles de acceso o ambos.

El campo access en el recurso de conjunto de datos contiene los controles de acceso del conjunto de datos. Los otros campos, como friendlyName, description y labels, representan los metadatos del conjunto de datos.

En la siguiente tabla, se muestra el permiso requerido y la respuesta de la API para los diferentes valores admitidos por el parámetro update_mode:

Valor del parámetro Permisos necesarios Respuesta de la API
UPDATE_MODE_UNSPECIFIED (o vacío)
  • bigquery.datasets.update
  • bigquery.datasets.setIamPolicy
Es el valor predeterminado. Muestra los metadatos y los controles de acceso actualizados del conjunto de datos.
UPDATE_METADATA
  • bigquery.datasets.update
Devuelve los metadatos actualizados del conjunto de datos.
UPDATE_ACL
  • bigquery.datasets.update
  • bigquery.datasets.setIamPolicy
Devuelve los controles de acceso, los campos obligatorios y los campos del recurso del conjunto de datos actualizados que solo son de salida.
UPDATE_FULL
  • bigquery.datasets.update
  • bigquery.datasets.setIamPolicy
Muestra los metadatos y los controles de acceso actualizados del conjunto de datos.

Si no habilitas la aplicación anticipada de políticas o si inhabilitas esta opción después de habilitarla, BigQuery usará de forma predeterminada el comportamiento anterior. El permiso bigquery.datasets.update te permite actualizar los metadatos y los controles de acceso.

Ejemplo

En el siguiente ejemplo, se envía una solicitud PUT con el parámetro update_mode establecido en METADATA:

PUT https://bigquery.googleapis.com/bigquery/v2/projects/YOUR_PROJECT/datasets/YOUR_DATASET?updateMode=METADATA&key=YOUR_API_KEY HTTP/1.1

Reemplaza lo siguiente:

  • YOUR_PROJECT: nombre del proyecto.
  • YOUR_DATASET: El nombre del conjunto de datos.
  • YOUR_API_KEY: Es el nombre de tu clave de API.

Método datasets.patch

El método datasets.patch tiene un parámetro de ruta adicional llamado update_mode.

Este parámetro te brinda más control sobre los campos que actualiza el método datasets.patch. En lugar de permitir siempre actualizaciones de los controles de acceso y los metadatos, el parámetro update_mode te permite especificar si quieres actualizar solo los metadatos, solo los controles de acceso o ambos.

El campo access en el recurso de conjunto de datos contiene los controles de acceso del conjunto de datos. Los otros campos, como friendlyName, description y labels, representan los metadatos del conjunto de datos.

En la siguiente tabla, se muestra el permiso requerido y la respuesta de la API para los diferentes valores admitidos por el parámetro update_mode:

Valor del parámetro Permisos necesarios Respuesta de la API
UPDATE_MODE_UNSPECIFIED (o vacío)
  • bigquery.datasets.update
  • bigquery.datasets.setIamPolicy
Es el valor predeterminado. Muestra los metadatos y los controles de acceso actualizados del conjunto de datos.
UPDATE_METADATA
  • bigquery.datasets.update
Devuelve los metadatos actualizados del conjunto de datos.
UPDATE_ACL
  • bigquery.datasets.setIamPolicy
Devuelve los controles de acceso, los campos obligatorios y los campos del recurso del conjunto de datos actualizados que solo son de salida.
UPDATE_FULL
  • bigquery.datasets.update
  • bigquery.datasets.setIamPolicy
Muestra los metadatos y los controles de acceso actualizados del conjunto de datos.

Si no habilitas la aplicación anticipada de políticas o si inhabilitas esta opción después de habilitarla, BigQuery usará de forma predeterminada el comportamiento anterior. El permiso bigquery.datasets.update te permite actualizar los metadatos y los controles de acceso.

Ejemplo

En el siguiente ejemplo, se envía una solicitud PUT con el parámetro update_mode establecido en METADATA:

PUT https://bigquery.googleapis.com/bigquery/v2/projects/YOUR_PROJECT/datasets/YOUR_DATASET?updateMode=METADATA&key=YOUR_API_KEY HTTP/1.1

Reemplaza lo siguiente:

  • YOUR_PROJECT: nombre del proyecto.
  • YOUR_DATASET: El nombre del conjunto de datos.
  • YOUR_API_KEY: Es el nombre de tu clave de API.

Método datasets.insert

Si habilitas la aplicación anticipada y usas el método datasets.insert para crear un conjunto de datos con controles de acceso, BigQuery verifica que se otorguen los permisos bigquery.datasets.create y bigquery.datasets.setIamPolicy al usuario.

Si usas la API para crear un conjunto de datos sin controles de acceso, solo se requiere el permiso bigquery.datasets.create.