Conjuntos de datos autorizados
En este documento se describe cómo usar los conjuntos de datos autorizados en BigQuery. Un conjunto de datos autorizado te permite autorizar todas las vistas de un conjunto de datos especificado para que accedan a los datos de otro conjunto de datos. Con un conjunto de datos autorizado, no es necesario configurar vistas autorizadas individuales.
Información general
Una vista de BigQuery es una tabla virtual definida por una consulta de SQL. Por ejemplo, la consulta de una vista puede devolver solo un subconjunto de las columnas de una tabla, excluyendo las columnas que contengan información personal identificable (IPI). Para consultar una vista, un usuario debe tener acceso a los recursos a los que accede la consulta de la vista.
Vistas autorizadas
Si quieres permitir que los usuarios consulten una vista sin darles acceso directo a los recursos a los que hace referencia, puedes usar una vista autorizada. Cuando creas una vista autorizada, puedes compartir una vista lógica o una vista materializada. Cuando autorizas una vista materializada, se denomina vista materializada autorizada.
Por ejemplo, una vista autorizada te permite compartir datos más limitados en una vista con grupos o usuarios (principales) específicos sin darles acceso a todos los datos subyacentes. Las entidades de seguridad pueden ver los datos que compartes y ejecutar consultas en ellos, pero no pueden acceder directamente al conjunto de datos de origen. En su lugar, la vista autorizada tiene acceso a los datos de origen.
Conjuntos de datos autorizados
Si quiere dar acceso a un conjunto de vistas a un conjunto de datos sin tener que autorizar cada vista individualmente, puede agrupar las vistas en un conjunto de datos y, a continuación, dar acceso al conjunto de datos que contiene las vistas al conjunto de datos que contiene los datos. Después, puedes dar acceso a las vistas del conjunto de datos a las entidades de seguridad o a vistas concretas del 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.
.Permisos y roles necesarios
Para autorizar un conjunto de datos o revocar su autorización, debes tener los siguientes permisos de gestión de identidades y accesos (IAM), que te permiten actualizar la lista de control de acceso del conjunto de datos que compartes.
Una vez que se haya autorizado un conjunto de datos, podrá crear o actualizar vistas en él. Para obtener más información sobre los permisos necesarios, consulta el artículo Crear o actualizar una vista en un conjunto de datos autorizado.
Permiso | Recurso |
---|---|
bigquery.datasets.get
|
El conjunto de datos que vas a compartir. |
bigquery.datasets.update
|
El conjunto de datos que vas a compartir. |
Los siguientes roles de gestión de identidades y accesos predefinidos proporcionan los permisos necesarios.
Role | Descripción |
---|---|
bigquery.dataOwner
|
Propietario de datos de BigQuery |
bigquery.admin
|
Administrador de BigQuery |
Cuotas y límites
Los conjuntos de datos autorizados están sujetos a límites. Para obtener más información, consulta Límites de conjuntos de datos.
Autorizar un conjunto de datos
Puedes autorizar las vistas actuales y futuras de un conjunto de datos para que accedan a otro conjunto de datos. Para ello, añade el conjunto de datos que quieras autorizar a la lista de acceso del conjunto de datos que quieras compartir, tal como se indica a continuación:
Consola
En la Google Cloud consola, ve a la página BigQuery.
En el panel Explorador, expande tu proyecto y selecciona el conjunto de datos que contiene los datos que quieres compartir.
Haz clic en el icono
Acciones y selecciona Abrir.En el panel de detalles que aparece, haz clic en Compartir y selecciona la opción Autorizar conjuntos de datos.
En el panel Conjunto de datos autorizado que aparece, introduce el ID del conjunto de datos que quieras autorizar con el siguiente formato:
PROJECT.AUTHORIZED_DATASET
Por ejemplo:
myProject.myDataset
Haz clic en Añadir autorización y, a continuación, en Cerrar.
bq
Abre Cloud Shell:
Escribe los metadatos (incluida la lista de control de acceso) del conjunto de datos que quieras compartir en un archivo JSON mediante el comando
bq show
.bq show --format=prettyjson PROJECT:SHARED_DATASET > FILE_PATH
Usa un editor de texto para añadir el conjunto de datos que quieras autorizar a la sección
access
del archivo JSON que se creó en FILE_PATH.Por ejemplo:
"access": [ ... { "dataset": { "dataset": { "project_id": "PROJECT", "dataset_id": "AUTHORIZED_DATASET" }, "target_types": "VIEWS" } } ]
Actualiza el conjunto de datos compartido con el comando
bq update
. Por ejemplo:bq update --source FILE_PATH PROJECT:SHARED_DATASET
Para verificar que se ha añadido el conjunto de datos autorizado, vuelve a introducir el comando
bq show
. Por ejemplo:bq show --format=prettyjson PROJECT:SHARED_DATASET
API
Para obtener los metadatos actuales del conjunto de datos que quieras compartir, llama al método
datasets.get
de la siguiente manera:GET https://bigquery.googleapis.com/bigquery/v2/projects/PROJECT/datasets/SHARED_DATASET
El cuerpo de la respuesta devuelve un recurso
Dataset
que contiene metadatos JSON del conjunto de datos.Añade el conjunto de datos que quieras autorizar a la sección
access
de los metadatos JSON que se devolvieron en el recursoDataset
de la siguiente manera:"access": [ ... { "dataset": { "dataset": { "project_id": "PROJECT", "dataset_id": "AUTHORIZED_DATASET" }, "target_types": "VIEWS" } } ]
Usa el método
datasets.update
para actualizar el conjunto de datos con la autorización añadida:PUT https://bigquery.googleapis.com/bigquery/v2/projects/PROJECT/datasets/SHARED_DATASET
Incluye el recurso
Dataset
actualizado en el cuerpo de la solicitud.Para verificar que se ha añadido el conjunto de datos autorizado, vuelve a llamar al método
datasets.get
.
Revocar la autorización de un conjunto de datos
Cuando eliminas un conjunto de datos autorizado para acceder a otro conjunto de datos de origen, el cambio puede tardar hasta 24 horas en reflejarse por completo en las listas de control de acceso (LCAs) del conjunto de datos de origen. Durante este tiempo:
- No podrás acceder a los datos de origen a través del conjunto de datos eliminado.
- Es posible que el conjunto de datos eliminado siga apareciendo en la lista de control de acceso y en el recuento del conjunto de datos de origen, y que se tenga en cuenta para los límites de conjuntos de datos autorizados. Esto podría impedirle crear conjuntos de datos autorizados hasta que se actualice la lista de control de acceso.
Para revocar el acceso concedido a las vistas de un conjunto de datos autorizado, quita el conjunto de datos autorizado de la lista de acceso del conjunto de datos compartido de la siguiente manera:
Consola
En la Google Cloud consola, ve a la página BigQuery.
En el panel Explorador, expande tu proyecto y selecciona el conjunto de datos compartido.
Haz clic en el icono
Acciones y selecciona Abrir.En el panel de detalles que aparece, haz clic en Compartir y selecciona la opción Autorizar conjuntos de datos.
En el panel Conjunto de datos autorizado que aparece, busca la entrada del conjunto de datos autorizado en la sección Conjuntos de datos autorizados actualmente.
Haz clic en el icono de eliminar situado junto al conjunto de datos autorizado que quieras quitar y, a continuación, haz clic en Cerrar.
bq
Abre Cloud Shell:
Escribe los metadatos (incluida la lista de control de acceso) del conjunto de datos compartido en un archivo JSON mediante el comando
bq show
.bq show --format=prettyjson PROJECT:SHARED_DATASET > FILE_PATH
Usa un editor de texto para quitar el conjunto de datos autorizado de la sección
access
del archivo JSON que se creó en FILE_PATH, como se indica a continuación:{ "dataset": { "dataset": { "project_id": "PROJECT", "dataset_id": "AUTHORIZED_DATASET" }, "target_types": "VIEWS" } }
Actualiza el conjunto de datos compartido con el comando
bq update
. Por ejemplo:bq update --source FILE_PATH PROJECT:SHARED_DATASET
Para verificar que se ha eliminado el conjunto de datos autorizado, vuelve a introducir el comando
bq show
. Por ejemplo:bq show --format=prettyjson PROJECT:SHARED_DATASET
API
Para obtener los metadatos actuales del conjunto de datos compartido, llama al método
datasets.get
de la siguiente manera:GET https://bigquery.googleapis.com/bigquery/v2/projects/PROJECT/datasets/SHARED_DATASET
El cuerpo de la respuesta devuelve un recurso
Dataset
que contiene metadatos JSON del conjunto de datos.Elimina el conjunto de datos autorizado de la sección
access
del JSON que se devolvió en el recursoDataset
. Por ejemplo:{ "dataset": { "dataset": { "project_id": "PROJECT", "dataset_id": "AUTHORIZED_DATASET" }, "target_types": "VIEWS" } }
Utilice el método
datasets.update
para actualizar el conjunto de datos con la autorización retirada:PUT https://bigquery.googleapis.com/bigquery/v2/projects/PROJECT/datasets/SHARED_DATASET
Incluye el recurso
Dataset
actualizado en el cuerpo de la solicitud.Para comprobar que se ha eliminado el conjunto de datos autorizado, vuelve a llamar al método
datasets.get
.
Crear o actualizar una vista en un conjunto de datos autorizado
Para crear o actualizar una vista que esté en un conjunto de datos autorizado, debes tener los permisos del conjunto de datos compartido que se indican en Permisos y roles necesarios, además de los permisos necesarios para crear o actualizar una vista en un conjunto de datos estándar.
En la siguiente tabla se resumen los permisos de gestión de identidades y accesos (IAM) necesarios para crear o actualizar una vista que esté en un conjunto de datos autorizado:
Permiso | Recurso |
---|---|
bigquery.datasets.get
|
El conjunto de datos que vas a compartir. |
bigquery.tables.getData
|
Las tablas o vistas del conjunto de datos compartido a las que se haga referencia en la vista que estés creando o actualizando. |
bigquery.tables.create
|
El conjunto de datos autorizado en el que estás creando una vista. |
bigquery.tables.update
|
El conjunto de datos autorizado en el que estás actualizando una vista. |
No necesita ningún permiso adicional para eliminar una vista de un conjunto de datos autorizado.
Consultar una vista de un conjunto de datos autorizado
Para consultar una vista de un conjunto de datos autorizado, un usuario debe tener acceso a la vista, pero no es necesario que tenga acceso al conjunto de datos compartido.
Para obtener más información, consulta Vistas autorizadas.
Ejemplo de conjunto de datos autorizado
En el siguiente ejemplo se describe cómo crear y usar un conjunto de datos autorizado.
Supongamos que tienes dos conjuntos de datos llamados private_dataset
y public_dataset
.
El conjunto de datos private_dataset
contiene una tabla llamada private_table
. El conjunto de datos public_dataset
contiene una vista llamada private_table_filtered
. La vista private_table_filtered
se basa en una consulta que devuelve algunos campos de la tabla private_table
, pero no todos.
Puedes dar acceso a un usuario a los datos devueltos por la vista private_table_filtered
, pero no a todos los datos de la tabla private_table
, de la siguiente manera:
Asigna el rol
bigquery.dataViewer
al usuario para el conjunto de datospublic_dataset
. Este rol incluye el permisobigquery.tables.getData
, que permite al usuario consultar las vistas del conjunto de datospublic_dataset
. Para obtener información sobre cómo asignar un rol a un usuario en un conjunto de datos, consulta Controlar el acceso a los conjuntos de datos.Ahora el usuario tiene permiso para consultar vistas en
public_dataset
, pero sigue sin poder acceder a la tablaprivate_table
enprivate_dataset
. Si el usuario intenta consultar la tablaprivate_table
directamente o si intenta acceder a ella indirectamente consultando la vistaprivate_table_filtered
, recibirá un mensaje de error similar al siguiente:private_table
Access Denied: Table PROJECT:private_dataset.private_table: User does not have permission to query table PROJECT:private_dataset.private_table.
En la página BigQuery de la consola de Google Cloud Google Cloud, abre el conjunto de datos
private_dataset
, haz clic en Compartir y, a continuación, selecciona Autorizar conjuntos de datos.En el panel Conjunto de datos autorizado que aparece, introduce
PROJECT.public_dataset
en el campo ID del conjunto de datos y, a continuación, haz clic en Añadir autorización.El conjunto de datos
public_dataset
se añade a la lista de control de acceso del conjunto de datosprivate_dataset
, lo que autoriza a las vistas del conjunto de datospublic_dataset
a consultar los datos del conjunto de datosprivate_dataset
.Ahora, el usuario puede consultar la vista
private_table_filtered
del conjunto de datospublic_dataset
, que accede indirectamente al conjunto de datosprivate_dataset
, sin tener permisos para acceder directamente a los datos del conjunto de datosprivate_dataset
.
Limitaciones
- Puedes crear conjuntos de datos autorizados en diferentes regiones, pero BigQuery no admite consultas entre regiones. Por lo tanto, te recomendamos que crees conjuntos de datos en la misma región.
Siguientes pasos
Para obtener información sobre cómo autorizar una vista concreta para que acceda a los datos de un conjunto de datos, consulta Vistas autorizadas.
Para obtener información sobre cómo autorizar una función de tabla o una función definida por el usuario para acceder a los datos de un conjunto de datos, consulta Funciones autorizadas.