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

A partir del 17 de marzo del 2026, se requerirá el permiso de bigquery.datasets.getIamPolicy Gestión de Identidades y Accesos (IAM) para ver los controles de acceso de un conjunto de datos y consultar la vista INFORMATION_SCHEMA.OBJECT_PRIVILEGES. Se necesita el permiso bigquery.datasets.setIamPolicy 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.

Habilitar la aplicación obligatoria anticipada

Antes del 17 de marzo del 2026, puedes habilitar la aplicación anticipada de los cambios en los 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 para crear un conjunto de datos con controles de acceso mediante la API.

Para habilitar la aplicación anticipada, defina el ajuste de configuración enable_fine_grained_dataset_acls_option en TRUE a nivel de organización o proyecto. Para obtener instrucciones sobre cómo habilitar los ajustes de configuración, consulta Gestionar ajustes de configuración.

Ejemplos de ajustes de configuración

En los siguientes ejemplos se muestra cómo definir y quitar el ajuste de configuración enable_fine_grained_dataset_acls_option.

Configurar los ajustes de la organización

Para configurar los ajustes de la organización, usa la ALTER ORGANIZATION SET OPTIONSdeclaración de DDL. En el siguiente ejemplo se asigna TRUE a enable_fine_grained_dataset_acls_option a nivel de organización:

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

Sustituye REGION por la región asociada a tu organización (por ejemplo, us o europe-west6).

En el siguiente ejemplo se borra el ajuste enable_fine_grained_dataset_acls_option a nivel de organización:

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

Configura los ajustes del proyecto

Para configurar los ajustes del proyecto, usa la ALTER PROJECT SET OPTIONSdeclaración de DDL. La instrucción DDL ALTER PROJECT SET OPTIONS acepta de forma opcional la variable project_id. Si no se especifica project_id, se utiliza el proyecto actual en el que se ejecuta la consulta.

En el siguiente ejemplo se asigna TRUE a enable_fine_grained_dataset_acls_option.

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

Sustituye PROJECT_ID por el ID del proyecto.

En el siguiente ejemplo se borra la configuración enable_fine_grained_dataset_acls_option a nivel de 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 necesarios afecta a los roles personalizados que conceden los permisos bigquery.datasets.get, bigquery.datasets.create o bigquery.datasets.update y que no conceden los permisos bigquery.datasets.getIamPolicy o bigquery.datasets.setIamPolicy.

Los roles personalizados que solo incluyan los permisos bigquery.datasets.get, bigquery.datasets.update o bigquery.datasets.create deben actualizarse para incluir los permisos bigquery.datasets.getIamPolicy o bigquery.datasets.setIamPolicy antes del 17 de marzo del 2026 si quieres mantener la funcionalidad de los roles personalizados. Si tus roles personalizados solo necesitan ver o actualizar los metadatos de un conjunto de datos, usa los nuevos parámetros dataset_view y update_mode.

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

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

Cuando habilitas la aplicación anticipada, 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 los permisos cuando se consultan los controles de acceso o los metadatos de un conjunto de datos. Usa uno de los siguientes valores:
  • METADATA: solo se muestran los metadatos del conjunto de datos. Este valor requiere el permiso bigquery.datasets.get.
  • ACL: solo puede ver los controles de acceso del conjunto de datos. Este valor requiere el permiso bigquery.datasets.getIamPolicy.
  • FULL: ver 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 al actualizar 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 instrucciones del lenguaje de control de datos (DCL)

Si habilitas la aplicación anticipada, se requerirán los siguientes permisos para ejecutar las instrucciones GRANT y REVOKE en conjuntos de datos mediante el lenguaje de control de datos (DCL):

  • bigquery.datasets.setIamPolicy

Cambios en las consultas de la vista INFORMATION_SCHEMA

Cuando habilitas la aplicación 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 conjuntos de datos de la API 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 permite controlar mejor la información que devuelve el método datasets.get. En lugar de devolver siempre tanto los controles de acceso como los metadatos, el parámetro dataset_view te permite especificar si quieres devolver solo los metadatos, solo los controles de acceso o ambos.

El campo access del recurso de conjunto de datos contiene los controles de acceso del conjunto de datos. Los demás campos, como friendlyName, description y labels, representan los metadatos del conjunto de datos.

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

Valor de parámetro Los permisos que requiere Respuesta de la API
DATASET_VIEW_UNSPECIFIED (o vacío)
  • bigquery.datasets.get
  • bigquery.datasets.getIamPolicy
El valor predeterminado. Devuelve los metadatos y los controles de acceso del conjunto de datos.
METADATA
  • bigquery.datasets.get
Devuelve los metadatos del conjunto de datos.
ACL
  • bigquery.datasets.getIamPolicy
Devuelve los controles de acceso, los campos obligatorios y los campos del recurso del conjunto de datos que son de solo 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 o si la inhabilitas después de haberla habilitado, puedes usar el parámetro dataset_view con los valores METADATA o ACL. Los valores FULL y DATASET_VIEW_UNSPECIFIED (o vacío) se asignan de forma predeterminada al comportamiento anterior. El permiso bigquery.datasets.get te permite obtener tanto los metadatos como los controles de acceso.

Ejemplo

En el siguiente ejemplo se envía una solicitud GET con el parámetro dataset_view definido como METADATA:

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

Haz los cambios siguientes:

  • YOUR_PROJECT: el nombre de tu proyecto
  • YOUR_DATASET: el nombre del conjunto de datos
  • YOUR_API_KEY: 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 da más control sobre los campos actualizados por el método datasets.update. En lugar de permitir siempre las 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 del recurso de conjunto de datos contiene los controles de acceso del conjunto de datos. Los demás campos, como friendlyName, description y labels, representan los metadatos del conjunto de datos.

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

Valor de parámetro Los permisos que requiere Respuesta de la API
UPDATE_MODE_UNSPECIFIED (o vacío)
  • bigquery.datasets.update
  • bigquery.datasets.setIamPolicy
El valor predeterminado. Devuelve 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 actualizados, los campos obligatorios y los campos de solo salida del recurso del conjunto de datos.
UPDATE_FULL
  • bigquery.datasets.update
  • bigquery.datasets.setIamPolicy
Devuelve los metadatos y los controles de acceso actualizados del conjunto de datos.

Si no habilitas la aplicación anticipada o si la inhabilitas después de haberla habilitado, BigQuery volverá al comportamiento anterior. El permiso bigquery.datasets.update te permite actualizar tanto los metadatos como los controles de acceso.

Ejemplo

En el siguiente ejemplo se envía una solicitud PUT con el parámetro update_mode definido como METADATA:

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

Haz los cambios siguientes:

  • YOUR_PROJECT: el nombre de tu proyecto
  • YOUR_DATASET: el nombre del conjunto de datos
  • YOUR_API_KEY: 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 da más control sobre los campos actualizados por el método datasets.patch. En lugar de permitir siempre las 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 del recurso de conjunto de datos contiene los controles de acceso del conjunto de datos. Los demás campos, como friendlyName, description y labels, representan los metadatos del conjunto de datos.

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

Valor de parámetro Los permisos que requiere Respuesta de la API
UPDATE_MODE_UNSPECIFIED (o vacío)
  • bigquery.datasets.update
  • bigquery.datasets.setIamPolicy
El valor predeterminado. Devuelve 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 actualizados, los campos obligatorios y los campos de solo salida del recurso del conjunto de datos.
UPDATE_FULL
  • bigquery.datasets.update
  • bigquery.datasets.setIamPolicy
Devuelve los metadatos y los controles de acceso actualizados del conjunto de datos.

Si no habilitas la aplicación anticipada o si la inhabilitas después de haberla habilitado, BigQuery volverá al comportamiento anterior. El permiso bigquery.datasets.update te permite actualizar tanto los metadatos como los controles de acceso.

Ejemplo

En el siguiente ejemplo se envía una solicitud PUT con el parámetro update_mode definido como METADATA:

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

Haz los cambios siguientes:

  • YOUR_PROJECT: el nombre de tu proyecto
  • YOUR_DATASET: el nombre del conjunto de datos
  • YOUR_API_KEY: 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 verificará que el usuario tenga los permisos bigquery.datasets.create y bigquery.datasets.setIamPolicy.

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