Cambios en los controles de acceso a nivel del conjunto de datos
A partir del 17 de marzo de 2026, se requerirá el permiso bigquery.datasets.getIamPolicy
de Identity and Access Management (IAM) para ver los controles de acceso de un conjunto de datos y consultar la vista INFORMATION_SCHEMA.OBJECT_PRIVILEGES
. Se requiere 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 a través de la API.
Habilita la aplicación anticipada de políticas
Antes del 17 de marzo de 2026, puedes habilitar la aplicación anticipada de los cambios en los permisos. Cuando habilitas la opción, el permiso bigquery.datasets.getIamPolicy
es necesario para obtener los controles de acceso de un conjunto de datos, y 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 a través de 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 del proyecto. Si deseas obtener instrucciones para habilitar la configuración, consulta Administra la configuración.
Ejemplos de parámetros de configuración
En los siguientes ejemplos, se muestra cómo establecer y quitar el parámetro de configuración 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
en 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 a tu organización, por ejemplo, us
o europe-west6
.
En el siguiente ejemplo, se borra el parámetro de configuración 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 el parámetro de configuración 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 los permisos bigquery.datasets.get
, bigquery.datasets.create
o bigquery.datasets.update
y que no otorgan también los permisos bigquery.datasets.getIamPolicy
o bigquery.datasets.setIamPolicy
.
Todos los roles personalizados que solo incluyan el permiso bigquery.datasets.get
, bigquery.datasets.update
o bigquery.datasets.create
deben actualizarse para incluir el permiso bigquery.datasets.getIamPolicy
o bigquery.datasets.setIamPolicy
antes del 17 de marzo de 2026 si deseas mantener la funcionalidad existente 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 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, se ven afectados los siguientes comandos de la herramienta de 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
: Solo ver los metadatos del conjunto de datos Este valor requiere el permisobigquery.datasets.get
.ACL
: Ver solo los controles de acceso del conjunto de datos Este valor requiere el permisobigquery.datasets.getIamPolicy
.FULL
: Ver los metadatos y los controles de acceso del conjunto de datos Este valor requiere los permisosbigquery.datasets.get
ybigquery.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 permisobigquery.datasets.update
.UPDATE_ACL
: Actualiza solo los controles de acceso del conjunto de datos. Este valor requiere el permisobigquery.datasets.setIamPolicy
.UPDATE_FULL
: Actualiza los metadatos y los controles de acceso del conjunto de datos. Este valor requiere los permisosbigquery.datasets.update
ybigquery.datasets.setIamPolicy
.
Cambios en las declaraciones del lenguaje de control de datos (DCL)
Cuando habilitas la aplicación anticipada, se requieren los siguientes permisos para ejecutar las sentencias GRANT
y REVOKE
en conjuntos de datos con 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 de la política, 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 la API de REST v2 del conjunto de datos.
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 devuelve el método datasets.get
. En lugar de devolver siempre los controles de acceso y los metadatos, el parámetro dataset_view
te permite especificar si deseas 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 otros campos, como friendlyName
, description
y labels
, representan los metadatos del conjunto de datos.
En la siguiente tabla, se muestran 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) |
|
Es el valor predeterminado. Devuelve los metadatos y los controles de acceso del conjunto de datos. |
METADATA |
|
Devuelve los metadatos del conjunto de datos. |
ACL |
|
Devuelve los controles de acceso, los campos obligatorios y los campos del recurso del conjunto de datos que son solo de salida. |
FULL |
|
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 habilitarla, puedes usar el parámetro dataset_view
con los valores METADATA
o ACL
. Los valores FULL
y DATASET_VIEW_UNSPECIFIED
(o vacíos) se establecen de forma predeterminada en el 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
establecido 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 las actualizaciones tanto de los controles de acceso como de los metadatos, el parámetro update_mode
te permite especificar si deseas 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 otros campos, como friendlyName
, description
y labels
, representan los metadatos del conjunto de datos.
En la siguiente tabla, se muestran 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) |
|
Es el valor predeterminado. Devuelve los metadatos y los controles de acceso actualizados del conjunto de datos. |
UPDATE_METADATA |
|
Devuelve los metadatos actualizados del conjunto de datos. |
UPDATE_ACL |
|
Devuelve los controles de acceso, los campos obligatorios y los campos actualizados del conjunto de datos en el recurso del conjunto de datos que son solo de salida. |
UPDATE_FULL |
|
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 habilitarla, BigQuery volverá al 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: 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 las actualizaciones tanto de los controles de acceso como de los metadatos, el parámetro update_mode
te permite especificar si deseas 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 otros campos, como friendlyName
, description
y labels
, representan los metadatos del conjunto de datos.
En la siguiente tabla, se muestran 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) |
|
Es el valor predeterminado. Devuelve los metadatos y los controles de acceso actualizados del conjunto de datos. |
UPDATE_METADATA |
|
Devuelve los metadatos actualizados del conjunto de datos. |
UPDATE_ACL |
|
Devuelve los controles de acceso, los campos obligatorios y los campos actualizados del conjunto de datos en el recurso del conjunto de datos que son solo de salida. |
UPDATE_FULL |
|
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 habilitarla, BigQuery volverá al 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: 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 hayan otorgado 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
.