Cambios en los controles de acceso a nivel del conjunto de datos
Si habilitas la aplicación forzosa de la
enable_fine_grained_dataset_acls_option configuración para los
controles de acceso a nivel del conjunto de datos, sebigquery.datasets.getIamPolicy
requiere el permiso de Identity and Access Management (IAM) para
ver los controles de acceso de un conjunto de datos y consultar la
INFORMATION_SCHEMA.OBJECT_PRIVILEGES
vista. 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 mediante la
API.
Si no habilitas la aplicación forzosa, los controles de acceso a nivel del conjunto de datos no cambian.
Habilita la aplicación forzosa
Puedes habilitar la aplicación forzosa de los cambios de permisos. Cuando lo haces, 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 forzosa, 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 inhabilitar la aplicación forzosa después de habilitarla, establece el parámetro de configuración enable_fine_grained_dataset_acls_option en FALSE a nivel de la organización o del proyecto. Si deseas obtener
instrucciones para habilitar los parámetros de configuración, consulta Administra los parámetros de 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
ALTER ORGANIZATION SET OPTIONS declaración DDL.
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 con 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 establece enable_fine_grained_dataset_acls_option en 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 las funciones personalizadas
Si habilitas la aplicación forzosa de los cambios de permisos, se verán afectadas las funciones personalizadas que
otorgan el permiso bigquery.datasets.get, bigquery.datasets.create, o
bigquery.datasets.update y que no otorgan el permiso
bigquery.datasets.getIamPolicy o bigquery.datasets.setIamPolicy.
Cualquier función personalizada 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, si deseas
mantener la funcionalidad existente de las funciones personalizadas. Si tus funciones personalizadas 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 las funciones predefinidas de BigQuery. Todas las
funciones predefinidas que otorgan el permiso bigquery.datasets.get también
otorgan el permiso bigquery.datasets.getIamPolicy. Todas las funciones predefinidas 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 forzosa anticipada, se ven afectados los siguientes comandos de la herramienta bq.
bq show
Puedes usar el bq show
comando con la siguientes 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: Permite ver solo los metadatos del conjunto de datos. Este valor requiere el permisobigquery.datasets.get.ACL: Permite ver solo los controles de acceso del conjunto de datos. Este valor requiere el permisobigquery.datasets.getIamPolicy.FULL: Permite ver los metadatos y los controles de acceso del conjunto de datos. Este valor requiere elbigquery.datasets.getpermiso ybigquery.datasets.getIamPolicypermisos.
bq update
Puedes usar el bq update
comando con la siguientes 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: Permite actualizar solo los metadatos del conjunto de datos. Este valor requiere el permisobigquery.datasets.update.UPDATE_ACL: Permite actualizar solo los controles de acceso del conjunto de datos. Este valor requiere el permisobigquery.datasets.setIamPolicy.UPDATE_FULL: Permite actualizar los metadatos y los controles de acceso del conjunto de datos. Este valor requiere los permisosbigquery.datasets.updateybigquery.datasets.setIamPolicy.
Cambios en las sentencias del lenguaje de control de datos (DCL)
Cuando habilitas la aplicación forzosa anticipada, se requieren los siguientes permisos para
ejecutar GRANT y REVOKE sentencias 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 forzosa anticipada, se requiere el bigquery.datasets.getIamPolicy
permiso para consultar la
INFORMATION_SCHEMA.OBJECT_PRIVILEGES
vista.
Cambios en los métodos de la API
Después de habilitar la aplicación forzosa anticipada, se ven 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 consulta 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 deseas 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 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) |
|
El valor predeterminado. Muestra los metadatos y los controles de acceso del conjunto de datos. |
METADATA |
|
Muestra los metadatos del conjunto de datos. |
ACL |
|
Muestra los controles de acceso del conjunto de datos, los campos obligatorios y los campos del recurso de conjunto de datos que son solo de salida. |
FULL |
|
Muestra los metadatos y los controles de acceso del conjunto de datos. |
Si no habilitas la aplicación forzosa 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ío) se establecen de forma predeterminada en el comportamiento anterior; 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 establecido en METADATA:
GET https://bigquery.googleapis.com/bigquery/v2/projects/YOUR_PROJECT/datasets/YOUR_DATASET?datasetView=METADATA&key=YOUR_API_KEY HTTP/1.1Reemplaza 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 consulta
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 de los controles de acceso y 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 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 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) |
|
El valor predeterminado. Muestra los metadatos y los controles de acceso del conjunto de datos actualizados. |
UPDATE_METADATA |
|
Muestra los metadatos actualizados del conjunto de datos. |
UPDATE_ACL |
|
Muestra los controles de acceso actualizados del conjunto de datos, los campos obligatorios y campos del recurso de conjunto de datos que son solo de salida. |
UPDATE_FULL |
|
Muestra los metadatos y los controles de acceso actualizados del conjunto de datos. |
Si no habilitas la aplicación forzosa anticipada o si la inhabilitas después de habilitarla, BigQuery se establece de forma predeterminada en 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.1Reemplaza 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 consulta
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 de los controles de acceso y 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 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 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) |
|
El valor predeterminado. Muestra los metadatos y los controles de acceso del conjunto de datos actualizados. |
UPDATE_METADATA |
|
Muestra los metadatos actualizados del conjunto de datos. |
UPDATE_ACL |
|
Muestra los controles de acceso actualizados del conjunto de datos, los campos obligatorios y campos del recurso de conjunto de datos que son solo de salida. |
UPDATE_FULL |
|
Muestra los metadatos y los controles de acceso actualizados del conjunto de datos. |
Si no habilitas la aplicación forzosa anticipada o si la inhabilitas después de habilitarla, BigQuery se establece de forma predeterminada en 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.1Reemplaza 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 forzosa anticipada y usas el datasets.insert método,
para crear un conjunto de datos con controles de acceso, BigQuery verifica
que se otorguen los bigquery.datasets.create y bigquery.datasets.setIamPolicy
permisos al usuario.
Si usas la API para crear un conjunto de datos sin controles de acceso, solo se requiere el permiso bigquery.datasets.create.