Controla el acceso a los recursos con la IAM
En este documento, se describe cómo ver, otorgar y revocar los controles de acceso para los conjuntos de datos de BigQuery y los recursos dentro de los conjuntos de datos: tablas, vistas y rutinas. Si bien los modelos también son recursos a nivel del conjunto de datos, no puedes otorgar acceso a modelos individuales con roles de IAM.
Puedes otorgar acceso a los recursos de Trusted Cloud by S3NS con políticas de permisos, también conocidas como políticas de Identity and Access Management (IAM), que se adjuntan a los recursos. Puedes adjuntar solo una política de permiso a cada recurso. La política de permisos controla el acceso al recurso, así como a todos los subordinados de ese recurso que heredan la política.
Para obtener más información sobre las políticas de permisos, consulta Estructura de la política en la documentación de IAM.
En este documento, se supone que estás familiarizado con Identity and Access Management (IAM) en Trusted Cloud by S3NS.
Limitaciones
- Las listas de control de acceso (LCA) de rutina no se incluyen en las rutinas replicadas.
- Las rutinas dentro de conjuntos de datos externos o vinculados no admiten controles de acceso.
- Las tablas dentro de conjuntos de datos externos o vinculados no admiten controles de acceso.
- Los controles de acceso rutina no se pueden configurar con Terraform.
- No se pueden establecer controles de acceso de rutina con el SDK de Google Cloud.
- Los controles de acceso de rutina no se pueden configurar con el lenguaje de control de datos (DCL) de BigQuery.
- Data Catalog no admite controles de acceso de rutina. Si un usuario otorgó acceso condicional a nivel de la rutina, no verá sus rutinas en el panel lateral de BigQuery. Como solución alternativa, otorga acceso a nivel del conjunto de datos.
- La vista
INFORMATION_SCHEMA.OBJECT_PRIVILEGES
no muestra los controles de acceso para las rutinas.
Antes de comenzar
Otorga funciones de Identity and Access Management (IAM) que les brindan a los usuarios los permisos necesarios para realizar cada tarea de este documento.
Roles requeridos
Para obtener los permisos que necesitas para modificar las políticas de IAM para los recursos, pídele a tu administrador que te otorgue el rol de IAM Propietario de datos de BigQuery (roles/bigquery.dataOwner
) en el proyecto.
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
Este rol predefinido contiene los permisos necesarios para cambiar las políticas de IAM de los recursos. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:
Permisos necesarios
Se requieren los siguientes permisos para cambiar las políticas de IAM para los recursos:
-
Para configurar la política de acceso de un conjunto de datos:
bigquery.datasets.get
-
Para configurar la política de acceso de un conjunto de datos:
bigquery.datasets.update
-
Para obtener la política de acceso de un conjunto de datos (solo en la consola deTrusted Cloud ):
bigquery.datasets.getIamPolicy
-
Para configurar la política de acceso de un conjunto de datos (solo en la consola):
bigquery.datasets.setIamPolicy
-
Para obtener la política de una tabla o vista:
bigquery.tables.getIamPolicy
-
Para establecer la política de una tabla o vista:
bigquery.tables.setIamPolicy
-
Para obtener la política de acceso de una rutina, haz lo siguiente:
bigquery.routines.getIamPolicy
-
Para establecer la política de acceso de una rutina, haz lo siguiente:
bigquery.routines.setIamPolicy
-
Para crear la herramienta o los trabajos de BigQuery de SQL
bigquery.jobs.create
También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.
Trabaja con los controles de acceso al conjunto de datos
Puedes otorgar acceso a un conjunto de datos otorgando a un principal de IAM un rol predefinido o personalizado que determine lo que el principal puede hacer con el conjunto de datos. Esto también se conoce como adjuntar una política de permiso a un recurso. Después de otorgar acceso, puedes ver los controles de acceso del conjunto de datos y revocar el acceso a él.
Otorga acceso a un conjunto de datos
No puedes otorgar acceso a un conjunto de datos cuando lo creas con la IU web de BigQuery o la herramienta de línea de comandos de bq. Primero debes crear el conjunto de datos y, luego, otorgar acceso a él.
La API te permite otorgar acceso durante la creación del conjunto de datos llamando al método datasets.insert
con un recurso de conjunto de datos definido.
Un proyecto es el recurso principal de un conjunto de datos, y un conjunto de datos es el recurso principal de las tablas y vistas, las rutinas y los modelos. Cuando otorgas un rol a nivel del proyecto, el rol y sus permisos son heredados por el conjunto de datos y por los recursos del conjunto de datos. Del mismo modo, cuando otorgas un rol a nivel del conjunto de datos, los recursos dentro del conjunto de datos heredan el rol y sus permisos.
Puedes proporcionar acceso a un conjunto de datos otorgando un permiso de rol de IAM para acceder a él o otorgando acceso de forma condicional con una condición de IAM. Para obtener más información sobre cómo otorgar acceso condicional, consulta Controla el acceso con las Condiciones de IAM.
Para otorgar acceso a un rol de IAM a un conjunto de datos sin usar condiciones, selecciona una de las siguientes opciones:
Console
Ve a la página de BigQuery.
En el panel Explorador, expande tu proyecto y selecciona un conjunto de datos para compartir.
Haz clic en > Permisos.
CompartirHaz clic en
Agregar principal.En el campo Principales nuevos, escribe un principal.
En la lista Elegir un rol, elige un rol predefinido o una rol personalizado.
Haz clic en Guardar.
Para volver a la información del conjunto de datos, haz clic en Cerrar.
SQL
Para otorgar a las principales acceso a los conjuntos de datos, usa la declaración DCL GRANT
:
En la consola de Trusted Cloud , ve a la página BigQuery.
En el editor de consultas, escribe la siguiente oración:
GRANT `ROLE_LIST` ON SCHEMA RESOURCE_NAME TO "USER_LIST"
Reemplaza lo siguiente:
ROLE_LIST
: Un rol o una lista de roles separados por comas que deseas otorgarRESOURCE_NAME
: Es el nombre del conjunto de datos al que otorgas acceso.USER_LIST
: una lista separada por comas de los usuarios a los que se otorga el rolPara obtener una lista de los formatos válidos, consulta
user_list
.
Haz clic en
Ejecutar.
Para obtener más información sobre cómo ejecutar consultas, visita Ejecuta una consulta interactiva.
En el siguiente ejemplo, se otorga el rol de visualizador de datos de BigQuery a myDataset
:
GRANT `roles/bigquery.dataViewer`
ON SCHEMA `myProject`.myDataset
TO "user:user@example.com", "user:user2@example.com"
bq
-
In the Trusted Cloud console, activate Cloud Shell.
At the bottom of the Trusted Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Para escribir la información del conjunto de datos existente (incluidos los controles de acceso) en un archivo JSON, usa el comando
bq show
:bq show \ --format=prettyjson \ PROJECT_ID:DATASET > PATH_TO_FILE
Reemplaza lo siguiente:
- PROJECT_ID: El ID de tu proyecto
- DATASET: nombre del conjunto de datos.
- PATH_TO_FILE: la ruta al archivo JSON en tu máquina local
Realiza cambios a la sección
access
del archivo JSON. Puedes agregar a cualquiera de las entradasspecialGroup
:projectOwners
,projectWriters
,projectReaders
yallAuthenticatedUsers
. También puedes agregar cualquiera de los siguientes elementos:userByEmail
,groupByEmail
ydomain
.Por ejemplo, la sección
access
de un archivo JSON de un conjunto de datos se vería de la siguiente manera:{ "access": [ { "role": "READER", "specialGroup": "projectReaders" }, { "role": "WRITER", "specialGroup": "projectWriters" }, { "role": "OWNER", "specialGroup": "projectOwners" }, { "role": "READER", "specialGroup": "allAuthenticatedUsers" }, { "role": "READER", "domain": "domain_name" }, { "role": "WRITER", "userByEmail": "user_email" }, { "role": "READER", "groupByEmail": "group_email" } ], ... }
Cuando termines de editar, usa el comando
bq update
con la marca--source
para incluir el archivo JSON. Si el conjunto de datos está en un proyecto que no es el predeterminado, agrega el ID del proyecto al nombre del conjunto de datos en el siguiente formato:PROJECT_ID:DATASET
.bq update
--source PATH_TO_FILE
PROJECT_ID:DATASETPara verificar los cambios del control de acceso, usa otra vez el comando
bq show
sin escribir la información en un archivo.bq show --format=prettyjson PROJECT_ID:DATASET
- Inicia Cloud Shell
-
Establece el proyecto Trusted Cloud predeterminado en el que deseas aplicar tus configuraciones de Terraform.
Solo necesitas ejecutar este comando una vez por proyecto y puedes ejecutarlo en cualquier directorio.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Las variables de entorno se anulan si configuras valores explícitos en el archivo de configuración de Terraform.
-
En Cloud Shell, crea un directorio y un archivo nuevo dentro de ese directorio. El nombre del archivo debe tener la extensión
.tf
, por ejemplo,main.tf
. En este instructivo, el archivo se denominamain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Si sigues un instructivo, puedes copiar el código de muestra en cada sección o paso.
Copia el código de muestra en el
main.tf
recién creado.De manera opcional, copia el código de GitHub. Esto se recomienda cuando el fragmento de Terraform es parte de una solución de extremo a extremo.
- Revisa y modifica los parámetros de muestra que se aplicarán a tu entorno.
- Guarda los cambios.
-
Inicializa Terraform. Solo debes hacerlo una vez por directorio.
terraform init
De manera opcional, incluye la opción
-upgrade
para usar la última versión del proveedor de Google:terraform init -upgrade
-
Revisa la configuración y verifica que los recursos que creará o actualizará Terraform coincidan con tus expectativas:
terraform plan
Corrige la configuración según sea necesario.
-
Para aplicar la configuración de Terraform, ejecuta el siguiente comando y, luego, escribe
yes
cuando se te solicite:terraform apply
Espera hasta que Terraform muestre el mensaje “¡Aplicación completa!”.
- Abre tu proyecto Trusted Cloud para ver los resultados. En la consola de Trusted Cloud , navega a tus recursos en la IU para asegurarte de que Terraform los haya creado o actualizado.
Terraform
Usa los recursos google_bigquery_dataset_iam
para actualizar el acceso a una conjunto de datos.
Configura la política de control de acceso de un recurso
En el siguiente ejemplo, se muestra cómo usar el recurso google_bigquery_dataset_iam_policy
para establecer la política de IAM para el conjunto de datos mydataset
. Esto reemplaza cualquier política existente ya adjunta al conjunto de datos:
# This file sets the IAM policy for the dataset created by # https://github.com/terraform-google-modules/terraform-docs-samples/blob/main/bigquery/bigquery_create_dataset/main.tf. # You must place it in the same local directory as that main.tf file, # and you must have already applied that main.tf file to create # the "default" dataset resource with a dataset_id of "mydataset". data "google_iam_policy" "iam_policy" { binding { role = "roles/bigquery.admin" members = [ "user:user@example.com", ] } binding { role = "roles/bigquery.dataOwner" members = [ "group:data.admin@example.com", ] } binding { role = "roles/bigquery.dataEditor" members = [ "serviceAccount:bqcx-1234567891011-12a3@gcp-sa-bigquery-condel.s3ns-system.iam.gserviceaccount.com", ] } } resource "google_bigquery_dataset_iam_policy" "dataset_iam_policy" { dataset_id = google_bigquery_dataset.default.dataset_id policy_data = data.google_iam_policy.iam_policy.policy_data }
Establece la membresía de roles para un conjunto de datos
En el siguiente ejemplo, se muestra cómo usar el recurso google_bigquery_dataset_iam_binding
para establecer la membresía en un rol determinado para el conjunto de datos mydataset
. Esto reemplaza cualquier membresía existente en ese rol.
Se conservan otros roles dentro de la política de IAM para el conjunto de datos:
# This file sets membership in an IAM role for the dataset created by # https://github.com/terraform-google-modules/terraform-docs-samples/blob/main/bigquery/bigquery_create_dataset/main.tf. # You must place it in the same local directory as that main.tf file, # and you must have already applied that main.tf file to create # the "default" dataset resource with a dataset_id of "mydataset". resource "google_bigquery_dataset_iam_binding" "dataset_iam_binding" { dataset_id = google_bigquery_dataset.default.dataset_id role = "roles/bigquery.jobUser" members = [ "user:user@example.com", "group:group@example.com" ] }
Establece la membresía de roles para una sola principal
En el siguiente ejemplo, se muestra cómo usar el recurso google_bigquery_dataset_iam_member
para actualizar la política de IAM del conjunto de datos mydataset
para otorgar un rol a un principal. La actualización de esta política de IAM no afecta el acceso de ningún otro principal al que se le haya otorgado ese rol para el conjunto de datos.
# This file adds a member to an IAM role for the dataset created by # https://github.com/terraform-google-modules/terraform-docs-samples/blob/main/bigquery/bigquery_create_dataset/main.tf. # You must place it in the same local directory as that main.tf file, # and you must have already applied that main.tf file to create # the "default" dataset resource with a dataset_id of "mydataset". resource "google_bigquery_dataset_iam_member" "dataset_iam_member" { dataset_id = google_bigquery_dataset.default.dataset_id role = "roles/bigquery.user" member = "user:user@example.com" }
Para aplicar tu configuración de Terraform en un proyecto Trusted Cloud , completa los pasos de las siguientes secciones.
Prepara Cloud Shell
Prepara el directorio
Cada archivo de configuración de Terraform debe tener su propio directorio (también llamado módulo raíz).
Aplica los cambios
API
Para aplicar los controles de acceso cuando se crea el conjunto de datos, llama al método datasets.insert
con un recurso de conjunto de datos definido.
Para actualizar tus controles de acceso, llama al método datasets.patch
y usa la propiedad access
en el recurso Dataset
.
Debido a que el método datasets.update
reemplaza todo el recurso de conjunto de datos, es preferible usar el método datasets.patch
para actualizar los controles de acceso.
Go
Antes de probar este ejemplo, sigue las instrucciones de configuración para Go incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Go.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Antes de ejecutar muestras de código, configura la variable de entorno GOOGLE_CLOUD_UNIVERSE_DOMAIN
como s3nsapis.fr
.
DatasetMetadataToUpdate
. Luego, llama a la función dataset.Update()
para actualizar la propiedad.
Java
Antes de probar este ejemplo, sigue las instrucciones de configuración para Java incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Antes de ejecutar muestras de código, configura la variable de entorno GOOGLE_CLOUD_UNIVERSE_DOMAIN
como s3nsapis.fr
.
Node.js
Antes de probar este ejemplo, sigue las instrucciones de configuración para Node.js incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Node.js.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Antes de ejecutar muestras de código, configura la variable de entorno GOOGLE_CLOUD_UNIVERSE_DOMAIN
como s3nsapis.fr
.
Python
Antes de probar este ejemplo, sigue las instrucciones de configuración para Python incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Python.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Antes de ejecutar muestras de código, configura la variable de entorno GOOGLE_CLOUD_UNIVERSE_DOMAIN
como s3nsapis.fr
.
dataset.access_entries
con los controles de acceso para un conjunto de datos. Luego, llama a la función client.update_dataset()
para actualizar la propiedad.
Roles predefinidos que otorgan acceso a conjuntos de datos
Puedes otorgar acceso a un conjunto de datos con los siguientes roles predefinidos de IAM.
Rol | Descripción |
---|---|
Propietario de datos de BigQuery
(roles/bigquery.dataOwner ) |
Cuando se otorga en un conjunto de datos, este rol otorga los siguientes permisos:
|
Editor de datos de BigQuery
(roles/bigquery.dataEditor ) |
Cuando se otorga en un conjunto de datos, este rol otorga los siguientes permisos:
|
Visualizador de datos de BigQuery
(roles/bigquery.dataViewer ) |
Cuando se otorga en un conjunto de datos, este rol otorga los siguientes permisos:
|
Visualizador de metadatos de BigQuery
(roles/bigquery.metadataViewer ) |
Cuando se otorga en un conjunto de datos, este rol otorga los siguientes permisos:
|
Permisos del conjunto de datos
La mayoría de los permisos que comienzan con bigquery.datasets
se aplican a nivel del conjunto de datos.
bigquery.datasets.create
no lo hace. Para crear conjuntos de datos, se debe otorgar el permiso bigquery.datasets.create
a un rol en el contenedor principal, es decir, el proyecto.
En la siguiente tabla, se enumeran todos los permisos para los conjuntos de datos y el recurso de nivel más bajo al que se puede aplicar el permiso.
Permiso | Recurso | Acción |
---|---|---|
bigquery.datasets.create |
Proyecto | Crear conjuntos de datos nuevos en el proyecto |
bigquery.datasets.get |
Conjunto de datos | Obtén los metadatos y los controles de acceso del conjunto de datos. Visualizar permisos en
la consola también requiere el
permiso bigquery.datasets.getIamPolicy . |
bigquery.datasets.getIamPolicy |
Conjunto de datos | La consola lo requiere para otorgar al usuario permiso para obtener los controles de acceso de un conjunto de datos. Esto permitirá abrir la falla. La consola también requiere el permiso bigquery.datasets.get para ver el conjunto de datos. |
bigquery.datasets.update |
Conjunto de datos | Actualiza los metadatos y los controles de acceso del conjunto de datos. La actualización de los controles de acceso en la consola también requiere el permiso bigquery.datasets.setIamPolicy .
|
bigquery.datasets.setIamPolicy |
Conjunto de datos | La consola lo requiere para otorgar al usuario permiso para establecer los controles de acceso de un conjunto de datos. Esto permitirá abrir la falla. La consola también requiere el permiso bigquery.datasets.update para actualizar el conjunto de datos. |
bigquery.datasets.delete |
Conjunto de datos | Borra un conjunto de datos. |
bigquery.datasets.createTagBinding |
Conjunto de datos | Adjunta etiquetas al conjunto de datos. |
bigquery.datasets.deleteTagBinding |
Conjunto de datos | Desvincula etiquetas del conjunto de datos. |
bigquery.datasets.listTagBindings |
Conjunto de datos | Enumera las etiquetas del conjunto de datos. |
bigquery.datasets.listEffectiveTags |
Conjunto de datos | Enumera las etiquetas eficaces (aplicadas y heredadas) para el conjunto de datos. |
bigquery.datasets.link |
Conjunto de datos | Crea un conjunto de datos vinculado. |
bigquery.datasets.listSharedDatasetUsage |
Proyecto | Enumera las estadísticas de uso de los conjuntos de datos compartidos a los que tienes acceso en el proyecto. Este permiso es obligatorio para consultar la vista INFORMATION_SCHEMA.SHARED_DATASET_USAGE . |
Cómo ver los controles de acceso de un conjunto de datos
Para ver los controles de acceso establecidos de forma explícita para un conjunto de datos, elige una de las siguientes opciones. Para ver los roles heredados de un conjunto de datos, usa la IU web de BigQuery.
Console
Ve a la página de BigQuery.
En el panel Explorador, expande tu proyecto y elige un conjunto de datos.
Haz clic en > Permisos.
CompartirLos controles de acceso del conjunto de datos aparecen en el panel Permisos del conjunto de datos.
bq
-
In the Trusted Cloud console, activate Cloud Shell.
At the bottom of the Trusted Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Para obtener una política existente y enviarla a un archivo local en JSON, usa el comando
bq show
en Cloud Shell:bq show \ --format=prettyjson \ PROJECT_ID:DATASET > PATH_TO_FILE
Reemplaza lo siguiente:
- PROJECT_ID: El ID de tu proyecto
- DATASET: nombre del conjunto de datos.
- PATH_TO_FILE: la ruta al archivo JSON en tu máquina local
En la consola de Trusted Cloud , ve a la página BigQuery.
En el editor de consultas, escribe la siguiente oración:
SELECT COLUMN_LIST FROM PROJECT_ID.`region-REGION`.INFORMATION_SCHEMA.OBJECT_PRIVILEGES WHERE object_name = "DATASET";
Reemplaza lo siguiente:
- COLUMN_LIST: Es una lista de columnas separadas por comas de la vista
INFORMATION_SCHEMA.OBJECT_PRIVILEGES
. - PROJECT_ID: El ID de tu proyecto
- REGION: Un calificador de región
- DATASET: El nombre de un conjunto de datos en tu proyecto
- COLUMN_LIST: Es una lista de columnas separadas por comas de la vista
Haz clic en
Ejecutar.
SQL
Consulta la vista INFORMATION_SCHEMA.OBJECT_PRIVILEGES
.
Las consultas para recuperar los controles de acceso de un conjunto de datos deben especificar el object_name
.
Si deseas obtener información sobre cómo ejecutar consultas, visita Ejecuta una consulta interactiva.
Ejemplo:
Esta consulta obtiene los controles de acceso para mydataset
.
SELECT object_name, privilege_type, grantee FROM my_project.`region-us`.INFORMATION_SCHEMA.OBJECT_PRIVILEGES WHERE object_name = "mydataset";
El resultado debe verse de la siguiente manera:
+------------------+-----------------------------+-------------------------+
| object_name | privilege_type | grantee |
+------------------+-----------------------------+-------------------------+
| mydataset | roles/bigquery.dataOwner | projectOwner:myproject |
| mydataset | roles/bigquery.dataViwer | user:user@example.com |
+------------------+-----------------------------+-------------------------+
API
Para ver los controles de acceso de un conjunto de datos, llama al método datasets.get
con un recurso dataset
definido.
Los controles de acceso aparecen en la propiedad access
del recurso dataset
.
Go
Antes de probar este ejemplo, sigue las instrucciones de configuración para Go incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Go.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Antes de ejecutar muestras de código, configura la variable de entorno GOOGLE_CLOUD_UNIVERSE_DOMAIN
como s3nsapis.fr
.
client.Dataset().Metadata()
. La política de acceso está disponible en la propiedad Access
.
Java
Antes de probar este ejemplo, sigue las instrucciones de configuración para Java incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Antes de ejecutar muestras de código, configura la variable de entorno GOOGLE_CLOUD_UNIVERSE_DOMAIN
como s3nsapis.fr
.
Node.js
Antes de probar este ejemplo, sigue las instrucciones de configuración para Node.js incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Node.js.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Antes de ejecutar muestras de código, configura la variable de entorno GOOGLE_CLOUD_UNIVERSE_DOMAIN
como s3nsapis.fr
.
Dataset#getMetadata()
.
La política de acceso está disponible en la propiedad de acceso del objeto de metadatos resultante.
Python
Antes de probar este ejemplo, sigue las instrucciones de configuración para Python incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Python.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Antes de ejecutar muestras de código, configura la variable de entorno GOOGLE_CLOUD_UNIVERSE_DOMAIN
como s3nsapis.fr
.
client.get_dataset()
.
La política de acceso está disponible en la propiedad dataset.access_entries
.
Revoca el acceso a un conjunto de datos
Para revocar el acceso a un conjunto de datos, selecciona una de las siguientes opciones:
Console
Ve a la página de BigQuery.
En el panel Explorador, expande tu proyecto y elige un conjunto de datos.
En el panel de detalles, haz clic en Compartir > Permisos.
En el cuadro de diálogo Permisos del conjunto de datos, expande la principal cuyo acceso deseas revocar.
Haz clic en
Quitar principal.En el cuadro de diálogo ¿Quieres quitar el rol del principal?, haz clic en Quitar.
Para volver a los detalles del conjunto de datos, haz clic en Cerrar.
SQL
Para quitar el acceso de una principal a un conjunto de datos, usa la declaración DCL REVOKE
:
En la consola de Trusted Cloud , ve a la página BigQuery.
En el editor de consultas, escribe la siguiente oración:
REVOKE `ROLE_LIST` ON SCHEMA RESOURCE_NAME FROM "USER_LIST"
Reemplaza lo siguiente:
ROLE_LIST
: Un rol o una lista de roles separados por comas que deseas revocarRESOURCE_NAME
: el nombre del recurso en el que deseas revocar el permisoUSER_LIST
: una lista separada por comas de usuarios a los que se les revocarán los rolesPara obtener una lista de los formatos válidos, consulta
user_list
.
Haz clic en
Ejecutar.
Para obtener más información sobre cómo ejecutar consultas, visita Ejecuta una consulta interactiva.
En el siguiente ejemplo, se revoca el rol de propietario de datos de BigQuery de myDataset
:
REVOKE `roles/bigquery.dataOwner`
ON SCHEMA `myProject`.myDataset
FROM "group:group@example.com", "serviceAccount:user@test-project.s3ns-system.iam.gserviceaccount.com"
bq
-
In the Trusted Cloud console, activate Cloud Shell.
At the bottom of the Trusted Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Para escribir la información del conjunto de datos existente (incluidos los controles de acceso) en un archivo JSON, usa el comando
bq show
:bq show \ --format=prettyjson \ PROJECT_ID:DATASET > PATH_TO_FILE
Reemplaza lo siguiente:
- PROJECT_ID: El ID de tu proyecto
- DATASET: nombre del conjunto de datos.
- PATH_TO_FILE: la ruta al archivo JSON en tu máquina local
Realiza cambios a la sección
access
del archivo JSON. Puedes quitar cualquiera de las entradas despecialGroup
:projectOwners
,projectWriters
,projectReaders
yallAuthenticatedUsers
. También puedes quitar cualquiera de los siguientes elementos:userByEmail
,groupByEmail
ydomain
.Por ejemplo, la sección
access
de un archivo JSON de un conjunto de datos se vería de la siguiente manera:{ "access": [ { "role": "READER", "specialGroup": "projectReaders" }, { "role": "WRITER", "specialGroup": "projectWriters" }, { "role": "OWNER", "specialGroup": "projectOwners" }, { "role": "READER", "specialGroup": "allAuthenticatedUsers" }, { "role": "READER", "domain": "domain_name" }, { "role": "WRITER", "userByEmail": "user_email" }, { "role": "READER", "groupByEmail": "group_email" } ], ... }
Cuando termines de editar, usa el comando
bq update
con la marca--source
para incluir el archivo JSON. Si el conjunto de datos está en un proyecto que no es el predeterminado, agrega el ID del proyecto al nombre del conjunto de datos en el siguiente formato:PROJECT_ID:DATASET
.bq update
--source PATH_TO_FILE
PROJECT_ID:DATASETPara verificar los cambios del control de acceso, usa el comando
show
sin escribir la información en un archivo:bq show --format=prettyjson PROJECT_ID:DATASET
API
Llama al método datasets.patch
y usa la propiedad access
en el recurso Dataset
para actualizar tus controles de acceso.
Debido a que el método datasets.update
reemplaza todo el recurso de conjunto de datos, es preferible usar el método datasets.patch
para actualizar los controles de acceso.
Go
Antes de probar este ejemplo, sigue las instrucciones de configuración para Go incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Go.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Antes de ejecutar muestras de código, configura la variable de entorno GOOGLE_CLOUD_UNIVERSE_DOMAIN
como s3nsapis.fr
.
DatasetMetadataToUpdate
. Luego, llama a la función dataset.Update()
para actualizar la propiedad.
Java
Antes de probar este ejemplo, sigue las instrucciones de configuración para Java incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Antes de ejecutar muestras de código, configura la variable de entorno GOOGLE_CLOUD_UNIVERSE_DOMAIN
como s3nsapis.fr
.
Node.js
Antes de probar este ejemplo, sigue las instrucciones de configuración para Node.js incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Node.js.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Antes de ejecutar muestras de código, configura la variable de entorno GOOGLE_CLOUD_UNIVERSE_DOMAIN
como s3nsapis.fr
.
Dataset#get()
para recuperar los metadatos actuales. Modifica la propiedad de acceso para excluir la entidad deseada y, luego, llama a la función Dataset#setMetadata()
para aplicar la lista de acceso actualizada.
Python
Antes de probar este ejemplo, sigue las instrucciones de configuración para Python incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Python.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Antes de ejecutar muestras de código, configura la variable de entorno GOOGLE_CLOUD_UNIVERSE_DOMAIN
como s3nsapis.fr
.
dataset.access_entries
con los controles de acceso para un conjunto de datos. Luego, llama a la función client.update_dataset()
para actualizar la propiedad.
Trabaja con controles de acceso a tablas y vistas
Las vistas se tratan como recursos de tabla en BigQuery. Puedes proporcionar acceso a una tabla o vista otorgando a un principal de IAM un rol predefinido o personalizado que determine lo que el principal puede hacer con la tabla o vista. Esto también se conoce como adjuntar una política de permiso a un recurso. Después de otorgar acceso, puedes ver los controles de acceso de la tabla o la vista, y puedes revocar el acceso a la tabla o la vista.
Otorga acceso a una tabla o vista
Para obtener un control de acceso detallado, puedes otorgar un rol de IAM predefinido o personalizado en una tabla o vista específica. La tabla o vista también hereda los controles de acceso especificados a nivel del conjunto de datos y superiores. Por ejemplo, si le otorgas a una principal el rol de propietario de datos de BigQuery en un conjunto de datos, esa principal también tendrá permisos de propietario de datos de BigQuery en las tablas y vistas del conjunto de datos.
Para otorgar acceso a una tabla o vista, selecciona una de las siguientes opciones:
Console
Ve a la página de BigQuery.
En el panel Explorador, expande tu proyecto y elige una tabla o vista para compartir.
Haz clic en
CompartirHaz clic en
Agregar principal.En el campo Principales nuevos, escribe un principal.
En la lista Elegir un rol, elige un rol predefinido o una rol personalizado.
Haz clic en Guardar.
Para volver a la tabla o ver los detalles, haz clic en Cerrar.
SQL
Para otorgar a las principales acceso a tablas o vistas, usa la declaración DCL GRANT
:
En la consola de Trusted Cloud , ve a la página BigQuery.
En el editor de consultas, escribe la siguiente oración:
GRANT `ROLE_LIST` ON RESOURCE_TYPE RESOURCE_NAME TO "USER_LIST"
Reemplaza lo siguiente:
ROLE_LIST
: Un rol o lista de roles separados por comas que deseas otorgarRESOURCE_TYPE
: El tipo de recurso al que se aplica el rolLos valores admitidos son
TABLE
,VIEW
,MATERIALIZED VIEW
yEXTERNAL TABLE
.RESOURCE_NAME
: el nombre del recurso en el que deseas otorgar el permiso.USER_LIST
: una lista separada por comas de los usuarios a los que se otorga el rol.Para obtener una lista de los formatos válidos, consulta
user_list
.
Haz clic en
Ejecutar.
Para obtener más información sobre cómo ejecutar consultas, visita Ejecuta una consulta interactiva.
En el siguiente ejemplo, se otorga el rol de visualizador de datos de BigQuery en myTable
:
GRANT `roles/bigquery.dataViewer`
ON TABLE `myProject`.myDataset.myTable
TO "user:user@example.com", "user:user2@example.com"
bq
-
In the Trusted Cloud console, activate Cloud Shell.
At the bottom of the Trusted Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Para otorgar acceso a una tabla o vista, usa el comando
bq add-iam-policy-binding
:bq add-iam-policy-binding --member=MEMBER_TYPE:MEMBER --role=ROLE --table=true RESOURCE
Reemplaza lo siguiente:
- MEMBER_TYPE: Es el tipo de miembro, como
user
,group
,serviceAccount
odomain
. - MEMBER: La dirección de correo electrónico o el nombre de dominio del miembro.
- ROLE: Es el rol que deseas otorgar al miembro.
- RESOURCE: El nombre de la tabla o vista cuya política deseas actualizar.
- MEMBER_TYPE: Es el tipo de miembro, como
- Inicia Cloud Shell
-
Establece el proyecto Trusted Cloud predeterminado en el que deseas aplicar tus configuraciones de Terraform.
Solo necesitas ejecutar este comando una vez por proyecto y puedes ejecutarlo en cualquier directorio.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Las variables de entorno se anulan si configuras valores explícitos en el archivo de configuración de Terraform.
-
En Cloud Shell, crea un directorio y un archivo nuevo dentro de ese directorio. El nombre del archivo debe tener la extensión
.tf
, por ejemplo,main.tf
. En este instructivo, el archivo se denominamain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Si sigues un instructivo, puedes copiar el código de muestra en cada sección o paso.
Copia el código de muestra en el
main.tf
recién creado.De manera opcional, copia el código de GitHub. Esto se recomienda cuando el fragmento de Terraform es parte de una solución de extremo a extremo.
- Revisa y modifica los parámetros de muestra que se aplicarán a tu entorno.
- Guarda los cambios.
-
Inicializa Terraform. Solo debes hacerlo una vez por directorio.
terraform init
De manera opcional, incluye la opción
-upgrade
para usar la última versión del proveedor de Google:terraform init -upgrade
-
Revisa la configuración y verifica que los recursos que creará o actualizará Terraform coincidan con tus expectativas:
terraform plan
Corrige la configuración según sea necesario.
-
Para aplicar la configuración de Terraform, ejecuta el siguiente comando y, luego, escribe
yes
cuando se te solicite:terraform apply
Espera hasta que Terraform muestre el mensaje “¡Aplicación completa!”.
- Abre tu proyecto Trusted Cloud para ver los resultados. En la consola de Trusted Cloud , navega a tus recursos en la IU para asegurarte de que Terraform los haya creado o actualizado.
Para recuperar la política actual, llama al método
tables.getIamPolicy
.Edita la política para agregar miembros o controles de acceso, o ambos. Para obtener más información sobre el formato de una política, consulta el tema de referencia Política.
Llama a
tables.setIamPolicy
para escribir la política actualizada.
Terraform
Usa los recursos google_bigquery_table_iam
para actualizar el acceso a una tabla.
Configura la política de acceso para una tabla
En el siguiente ejemplo, se muestra cómo usar el recurso google_bigquery_table_iam_policy
para establecer la política de IAM para la tabla mytable
. Esto reemplaza cualquier política existente ya adjunta a la tabla:
# This file sets the IAM policy for the table created by # https://github.com/terraform-google-modules/terraform-docs-samples/blob/main/bigquery/bigquery_create_table/main.tf. # You must place it in the same local directory as that main.tf file, # and you must have already applied that main.tf file to create # the "default" table resource with a table_id of "mytable". data "google_iam_policy" "iam_policy" { binding { role = "roles/bigquery.dataOwner" members = [ "user:user@example.com", ] } } resource "google_bigquery_table_iam_policy" "table_iam_policy" { dataset_id = google_bigquery_table.default.dataset_id table_id = google_bigquery_table.default.table_id policy_data = data.google_iam_policy.iam_policy.policy_data }
Establece la membresía de roles para una tabla
En el siguiente ejemplo, se muestra cómo usar el recurso google_bigquery_table_iam_binding
para establecer la membresía en un rol determinado para la tabla mytable
. Esto reemplaza cualquier membresía existente en ese rol.
Se conservan otros roles dentro de la política de IAM para la tabla.
# This file sets membership in an IAM role for the table created by # https://github.com/terraform-google-modules/terraform-docs-samples/blob/main/bigquery/bigquery_create_table/main.tf. # You must place it in the same local directory as that main.tf file, # and you must have already applied that main.tf file to create # the "default" table resource with a table_id of "mytable". resource "google_bigquery_table_iam_binding" "table_iam_binding" { dataset_id = google_bigquery_table.default.dataset_id table_id = google_bigquery_table.default.table_id role = "roles/bigquery.dataOwner" members = [ "group:group@example.com", ] }
Establece la membresía de roles para una sola principal
En el siguiente ejemplo, se muestra cómo usar el recurso google_bigquery_table_iam_member
para actualizar la política de IAM de la tabla mytable
para otorgar un rol a una principal. La actualización de esta política de IAM no afecta el acceso de ningún otro principal al que se le haya otorgado ese rol para el conjunto de datos.
# This file adds a member to an IAM role for the table created by # https://github.com/terraform-google-modules/terraform-docs-samples/blob/main/bigquery/bigquery_create_table/main.tf. # You must place it in the same local directory as that main.tf file, # and you must have already applied that main.tf file to create # the "default" table resource with a table_id of "mytable". resource "google_bigquery_table_iam_member" "table_iam_member" { dataset_id = google_bigquery_table.default.dataset_id table_id = google_bigquery_table.default.table_id role = "roles/bigquery.dataEditor" member = "serviceAccount:bqcx-1234567891011-12a3@gcp-sa-bigquery-condel.s3ns-system.iam.gserviceaccount.com" }
Para aplicar tu configuración de Terraform en un proyecto Trusted Cloud , completa los pasos de las siguientes secciones.
Prepara Cloud Shell
Prepara el directorio
Cada archivo de configuración de Terraform debe tener su propio directorio (también llamado módulo raíz).
Aplica los cambios
API
Go
Antes de probar este ejemplo, sigue las instrucciones de configuración para Go incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Go.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Antes de ejecutar muestras de código, configura la variable de entorno GOOGLE_CLOUD_UNIVERSE_DOMAIN
como s3nsapis.fr
.
IAM().SetPolicy()
del recurso para guardar los cambios en la política de acceso de una tabla o vista.
Java
Antes de probar este ejemplo, sigue las instrucciones de configuración para Java incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Antes de ejecutar muestras de código, configura la variable de entorno GOOGLE_CLOUD_UNIVERSE_DOMAIN
como s3nsapis.fr
.
Node.js
Antes de probar este ejemplo, sigue las instrucciones de configuración para Node.js incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Node.js.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Antes de ejecutar muestras de código, configura la variable de entorno GOOGLE_CLOUD_UNIVERSE_DOMAIN
como s3nsapis.fr
.
Table#getIamPolicy()
para recuperar la política de IAM actual de una tabla o vista, modifica la política agregando vinculaciones nuevas y, luego, usa la
función Table#setIamPolicy()
para guardar los cambios en la política de acceso.
Python
Antes de probar este ejemplo, sigue las instrucciones de configuración para Python incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Python.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Antes de ejecutar muestras de código, configura la variable de entorno GOOGLE_CLOUD_UNIVERSE_DOMAIN
como s3nsapis.fr
.
client.set_iam_policy()
para guardar los cambios en la política de acceso de una tabla o vista.
Roles predefinidos que otorgan acceso a tablas y vistas
Las vistas se tratan como recursos de tabla en BigQuery. Para un control de acceso detallado, puedes otorgar un rol de IAM predefinido o personalizado en una tabla o vista específica. La tabla o vista también hereda los controles de acceso especificados a nivel del conjunto de datos y superiores. Por ejemplo, si le otorgas a una principal el rol de propietario de datos de BigQuery en un conjunto de datos, esa principal también tendrá permisos de propietario de datos en las tablas y las vistas del conjunto de datos.
Los siguientes roles predefinidos de IAM tienen permisos en tablas o vistas.
Rol | Descripción |
---|---|
Propietario de datos de BigQuery
(roles/bigquery.dataOwner ) |
Cuando se otorga en una tabla o vista, este rol otorga los siguientes permisos:
|
Editor de datos de BigQuery
(roles/bigquery.dataEditor ) |
Cuando se otorga en una tabla o vista, este rol otorga los siguientes permisos:
|
Visualizador de datos de BigQuery
(roles/bigquery.dataViewer ) |
Cuando se otorga en una tabla o vista, este rol otorga los siguientes permisos:
|
Visualizador de metadatos de BigQuery
(roles/bigquery.metadataViewer ) |
Cuando se otorga en una tabla o vista, este rol otorga los siguientes permisos:
|
Permisos para tablas y vistas
Las vistas se tratan como recursos de tabla en BigQuery. Todos los permisos a nivel de la tabla se aplican a las vistas.
La mayoría de los permisos que comienzan con bigquery.tables
se aplican a nivel de la tabla.
bigquery.tables.create
y bigquery.tables.list
no lo hacen. Para crear y enumerar tablas o vistas, se deben otorgar los permisos bigquery.tables.create
y bigquery.tables.list
a un rol en un contenedor principal: el conjunto de datos o el proyecto.
En la siguiente tabla, se enumeran todos los permisos para tablas y vistas, y el recurso de nivel más bajo al que se pueden otorgar.
Permiso | Recurso | Acción |
---|---|---|
bigquery.tables.create |
Conjunto de datos | Crea tablas nuevas en el conjunto de datos. |
bigquery.tables.createIndex |
Tabla | Crea un índice de búsqueda en la tabla. |
bigquery.tables.deleteIndex |
Tabla | Borra un índice de búsqueda en la tabla. |
bigquery.tables.createSnapshot |
Tabla | Crea una instantánea de la tabla. Crear una instantánea requiere varios permisos adicionales a nivel de la tabla y del conjunto de datos. Para obtener más detalles, consulta Permisos y roles para crear instantáneas de tablas. |
bigquery.tables.deleteSnapshot |
Tabla | Borra una instantánea de la tabla. |
bigquery.tables.delete |
Tabla | Borrar una tabla |
bigquery.tables.createTagBinding |
Tabla | Crea vinculaciones de etiquetas de recursos en una tabla. |
bigquery.tables.deleteTagBinding |
Tabla | Borra vinculaciones de etiquetas de recursos en una tabla. |
bigquery.tables.listTagBindings |
Tabla | Enumera las vinculaciones de etiquetas de recursos en una tabla. |
bigquery.tables.listEffectiveTags |
Tabla | Enumera las etiquetas efectivas (aplicadas y heredadas) de la tabla. |
bigquery.tables.export |
Tabla | Exporta los datos de la tabla. La ejecución de un trabajo de exportación también requiere permisos bigquery.jobs.create . |
bigquery.tables.get |
Tabla | Obtiene los metadatos de una tabla. |
bigquery.tables.getData |
Tabla | Consulta los datos de la tabla. La ejecución de un trabajo de consulta también requiere permisos bigquery.jobs.create . |
bigquery.tables.getIamPolicy |
Tabla | Obtiene los controles de acceso para la tabla. |
bigquery.tables.list |
Conjunto de datos | Enumera todas las tablas y los metadatos de las tablas en el conjunto de datos. |
bigquery.tables.replicateData |
Tabla | Replica los datos de la tabla. Este permiso es necesario para crear vistas materializadas de réplica. |
bigquery.tables.restoreSnapshot |
Tabla | Restablece una instantánea de tabla. |
bigquery.tables.setCategory |
Tabla | Establece etiquetas de política en el esquema de la tabla. |
bigquery.tables.setColumnDataPolicy |
Tabla | Establece políticas de acceso a nivel de la columna en una tabla. |
bigquery.tables.setIamPolicy |
Tabla | Establece controles de acceso en una tabla. |
bigquery.tables.update |
Tabla | Actualiza la tabla. metadata. bigquery.tables.get también es necesario para actualizar los metadatos de la tabla en la consola. |
bigquery.tables.updateData |
Tabla | Actualiza los datos de las tablas. |
bigquery.tables.updateIndex |
Tabla | Actualiza un índice de búsqueda en la tabla. |
Visualiza los controles de acceso para una tabla o vista
Para ver los controles de acceso de una tabla o vista, elige una de las siguientes opciones:
Console
Ve a la página de BigQuery.
En el panel Explorador, expande tu proyecto y un conjunto de datos, y selecciona una tabla o vista.
Haz clic en
CompartirLos controles de acceso a la tabla o la vista aparecen en el panel Compartir.
bq
-
In the Trusted Cloud console, activate Cloud Shell.
At the bottom of the Trusted Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Para obtener una política de acceso existente y enviarla a un archivo local en JSON, usa el comando
bq get-iam-policy
en Cloud Shell:bq get-iam-policy \ --table=true \ PROJECT_ID:DATASET.RESOURCE > PATH_TO_FILE
Reemplaza lo siguiente:
- PROJECT_ID: El ID de tu proyecto
- DATASET: nombre del conjunto de datos.
- RESOURCE: el nombre de la tabla o vista cuya política deseas ver
- PATH_TO_FILE: la ruta al archivo JSON en tu máquina local
En la consola de Trusted Cloud , ve a la página BigQuery.
En el editor de consultas, escribe la siguiente oración:
SELECT COLUMN_LIST FROM PROJECT_ID.`region-REGION`.INFORMATION_SCHEMA.OBJECT_PRIVILEGES WHERE object_schema = "DATASET" AND object_name = "TABLE";
Reemplaza lo siguiente:
- COLUMN_LIST: Es una lista de columnas separadas por comas de la vista
INFORMATION_SCHEMA.OBJECT_PRIVILEGES
. - PROJECT_ID: El ID de tu proyecto
- REGION: Un calificador de región
- DATASET: El nombre de un conjunto de datos que contiene la tabla o la vista
- TABLE: El nombre de la tabla o vista
- COLUMN_LIST: Es una lista de columnas separadas por comas de la vista
Haz clic en
Ejecutar.
SQL
Consulta la vista INFORMATION_SCHEMA.OBJECT_PRIVILEGES
.
Las consultas para recuperar los controles de acceso de una tabla o vista deben especificar object_schema
y object_name
.
Si deseas obtener información sobre cómo ejecutar consultas, visita Ejecuta una consulta interactiva.
Ejemplo:
SELECT object_name, privilege_type, grantee FROM my_project.`region-us`.INFORMATION_SCHEMA.OBJECT_PRIVILEGES WHERE object_schema = "mydataset" AND object_name = "mytable";
+------------------+-----------------------------+--------------------------+
| object_name | privilege_type | grantee |
+------------------+-----------------------------+--------------------------+
| mytable | roles/bigquery.dataEditor | group:group@example.com|
| mytable | roles/bigquery.dataOwner | user:user@example.com|
+------------------+-----------------------------+--------------------------+
API
Para recuperar la política actual, llama al método tables.getIamPolicy
.
Go
Antes de probar este ejemplo, sigue las instrucciones de configuración para Go incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Go.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Antes de ejecutar muestras de código, configura la variable de entorno GOOGLE_CLOUD_UNIVERSE_DOMAIN
como s3nsapis.fr
.
IAM().Policy()
del recurso. Luego, llama a la función Roles()
para obtener la política de acceso de una tabla o vista.
Java
Antes de probar este ejemplo, sigue las instrucciones de configuración para Java incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Antes de ejecutar muestras de código, configura la variable de entorno GOOGLE_CLOUD_UNIVERSE_DOMAIN
como s3nsapis.fr
.
Node.js
Antes de probar este ejemplo, sigue las instrucciones de configuración para Node.js incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Node.js.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Antes de ejecutar muestras de código, configura la variable de entorno GOOGLE_CLOUD_UNIVERSE_DOMAIN
como s3nsapis.fr
.
Table#getIamPolicy()
.
Los detalles de la política de acceso están disponibles en el objeto de política devuelto.
Revoca el acceso a una tabla o vista
Para revocar el acceso a una tabla o vista, selecciona una de las siguientes opciones:
Console
Ve a la página de BigQuery.
En el panel Explorador, expande tu proyecto y un conjunto de datos, y selecciona una tabla o vista.
En el panel de detalles, haz clic en Compartir.
En el cuadro de diálogo Compartir, expande la principal cuyo acceso deseas revocar.
Haz clic en
Borrar.En el cuadro de diálogo ¿Quieres quitar el rol del principal?, haz clic en Quitar.
Para volver a la tabla o ver los detalles, haz clic en Cerrar.
SQL
Para quitar el acceso a las tablas o vistas de las principales, usa la declaración DCL REVOKE
:
En la consola de Trusted Cloud , ve a la página BigQuery.
En el editor de consultas, escribe la siguiente oración:
REVOKE `ROLE_LIST` ON RESOURCE_TYPE RESOURCE_NAME FROM "USER_LIST"
Reemplaza lo siguiente:
ROLE_LIST
: un rol o una lista de roles separados por comas que deseas revocarRESOURCE_TYPE
: el tipo de recurso del que se revoca el rolLos valores admitidos son
TABLE
,VIEW
,MATERIALIZED VIEW
yEXTERNAL TABLE
.RESOURCE_NAME
: el nombre del recurso en el que deseas revocar el permisoUSER_LIST
: una lista separada por comas de usuarios a los que se les revocarán los rolesPara obtener una lista de los formatos válidos, consulta
user_list
.
Haz clic en
Ejecutar.
Para obtener más información sobre cómo ejecutar consultas, visita Ejecuta una consulta interactiva.
En el siguiente ejemplo, se revoca el rol de propietario de datos de BigQuery en myTable
:
REVOKE `roles/bigquery.dataOwner`
ON TABLE `myProject`.myDataset.myTable
FROM "group:group@example.com", "serviceAccount:user@myproject.s3ns-system.iam.gserviceaccount.com"
bq
-
In the Trusted Cloud console, activate Cloud Shell.
At the bottom of the Trusted Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Para revocar el acceso a una tabla o vista, usa el comando
bq remove-iam-policy-binding
:bq remove-iam-policy-binding --member=MEMBER_TYPE:MEMBER --role=ROLE --table=true RESOURCE
Reemplaza lo siguiente:
- MEMBER_TYPE: Es el tipo de miembro, como
user
,group
,serviceAccount
odomain
. - MEMBER: La dirección de correo electrónico o el nombre de dominio del miembro
- ROLE: Es el rol que deseas revocar del miembro.
- RESOURCE: el nombre de la tabla o vista cuya política deseas actualizar
- MEMBER_TYPE: Es el tipo de miembro, como
Para recuperar la política actual, llama al método
tables.getIamPolicy
.Edita la política para quitar miembros o vinculaciones, o ambos. Para obtener más información sobre el formato de una política, consulta el tema de referencia Política.
Llama a
tables.setIamPolicy
para escribir la política actualizada.
API
Go
Antes de probar este ejemplo, sigue las instrucciones de configuración para Go incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Go.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Antes de ejecutar muestras de código, configura la variable de entorno GOOGLE_CLOUD_UNIVERSE_DOMAIN
como s3nsapis.fr
.
policy.Remove()
para quitar el acceso.
Luego, llama a la función IAM().SetPolicy()
para guardar los cambios en la política de acceso de una tabla o vista.
Java
Antes de probar este ejemplo, sigue las instrucciones de configuración para Java incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Antes de ejecutar muestras de código, configura la variable de entorno GOOGLE_CLOUD_UNIVERSE_DOMAIN
como s3nsapis.fr
.
Node.js
Antes de probar este ejemplo, sigue las instrucciones de configuración para Node.js incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Node.js.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Antes de ejecutar muestras de código, configura la variable de entorno GOOGLE_CLOUD_UNIVERSE_DOMAIN
como s3nsapis.fr
.
Table#getIamPolicy()
.
Modifica la política para quitar el rol o la principal deseados y, luego, aplica la política actualizada con el método Table#setIamPolicy()
.
Trabaja con los controles de acceso para las rutinas
Para enviar comentarios o solicitar asistencia para esta función, envía un correo electrónico a bq-govsec-eng@google.com.
Puedes otorgar acceso a una rutina otorgándole a una principal de IAM](/iam/docs/principal-identifiers#allow) un rol predefinido o personalizado que determine lo que la principal puede hacer con la rutina. Esto también se conoce como adjuntar una política de permisos a un recurso. Después de otorgar acceso, puedes ver los controles de acceso de la rutina y revocar el acceso a ella.
Cómo otorgar acceso a una rutina
Para obtener un control de acceso detallado, puedes otorgar un rol de IAM predefinido o personalizado en una rutina específica. La rutina también hereda los controles de acceso especificados a nivel del conjunto de datos y en niveles superiores. Por ejemplo, si le otorgas a una principal el rol de propietario de datos de BigQuery en un conjunto de datos, esa principal también tendrá permisos de propietario de datos en las rutinas del conjunto de datos.
Selecciona una de las siguientes opciones:
Console
Ve a la página de BigQuery.
En el panel Explorador, expande tu proyecto, expande tu conjunto de datos, expande Rutinas y, luego, selecciona una rutina.
Haz clic en
CompartirHaz clic en
Agregar miembros.En el campo Miembros nuevos, ingresa una principal.
En la lista Elegir un rol, elige un rol predefinido o una rol personalizado.
Haz clic en Guardar.
Para volver a la información de la rutina, haz clic en Listo.
bq
-
In the Trusted Cloud console, activate Cloud Shell.
At the bottom of the Trusted Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Para escribir la información de la rutina existente (incluidos los controles de acceso) en un archivo JSON, usa el comando
bq get-iam-policy
:bq get-iam-policy \ PROJECT_ID:DATASET.ROUTINE \ > PATH_TO_FILE
Reemplaza lo siguiente:
- PROJECT_ID: El ID de tu proyecto
- DATASET: el nombre del conjunto de datos que contiene la rutina que deseas actualizar
- ROUTINE: el nombre del recurso que se actualizará
- PATH_TO_FILE: la ruta al archivo JSON en tu máquina local
Realiza cambios a la sección
bindings
del archivo JSON. Una vinculación une uno o más principales a un solorole
. Los principales pueden ser cuentas de usuario, cuentas de servicio, grupos de Google y dominios. Por ejemplo, la secciónbindings
del archivo JSON de una rutina se vería de la siguiente manera:{ "bindings": [ { "role": "roles/bigquery.dataViewer", "members": [ "user:user@example.com", "group:group@example.com", "domain:example.com", ] }, ], "etag": "BwWWja0YfJA=", "version": 1 }
Para actualizar tu política de acceso, usa el comando
bq set-iam-policy
.bq set-iam-policy PROJECT_ID:DATASET.ROUTINE PATH_TO_FILE
Para verificar los cambios del control de acceso, ingresa otra vez el comando
bq get-iam-policy
sin escribir la información en un archivo:bq get-iam-policy --format=prettyjson \\ PROJECT_ID:DATASET.ROUTINE
Para recuperar la política actual, llama al método
routines.getIamPolicy
.Edita la política para agregar principales, vinculaciones o ambos. Para obtener más información sobre el formato de una política, consulta el tema de referencia Política.
Llama a
routines.setIamPolicy
para escribir la política actualizada.
API
Roles predefinidos que otorgan acceso a rutinas
Para obtener un control de acceso detallado, puedes otorgar un rol de IAM predefinido o personalizado en una rutina específica. La rutina también hereda los controles de acceso especificados a nivel del conjunto de datos y en niveles superiores. Por ejemplo, si le otorgas a una principal el rol de propietario de datos en un conjunto de datos, esa principal también tendrá permisos de propietario de datos en las rutinas del conjunto de datos a través de la herencia.
Los siguientes roles predefinidos de IAM tienen permisos sobre las rutinas.
Rol | Descripción |
---|---|
Propietario de datos de BigQuery
(roles/bigquery.dataOwner ) |
Cuando se otorga en una rutina, este rol otorga los siguientes permisos:
No debes otorgar el rol de propietario de datos a nivel de la rutina. El rol de editor de datos también otorga todos los permisos para la rutina y es un rol con menos privilegios. |
Editor de datos de BigQuery
(roles/bigquery.dataEditor ) |
Cuando se otorga en una rutina, este rol otorga los siguientes permisos:
|
Visualizador de datos de BigQuery
(roles/bigquery.dataViewer ) |
Cuando se otorga en una rutina, este rol otorga los siguientes permisos:
|
Visualizador de metadatos de BigQuery
(roles/bigquery.metadataViewer ) |
Cuando se otorga en una rutina, este rol otorga los siguientes permisos:
|
Permisos para rutinas
La mayoría de los permisos que comienzan con bigquery.routines
se aplican a nivel de la rutina.
bigquery.routines.create
y bigquery.routines.list
no lo hacen. Para crear y enumerar rutinas, se deben otorgar los permisos bigquery.routines.create
y bigquery.routines.list
a un rol en el contenedor principal, es decir, el conjunto de datos.
En la siguiente tabla, se enumeran todos los permisos para las rutinas y el recurso de nivel más bajo al que se pueden otorgar.
Permiso | Recurso | Descripción |
---|---|---|
bigquery.routines.create |
Conjunto de datos | Crea una rutina en el conjunto de datos. Este permiso también requiere bigquery.jobs.create para ejecutar un trabajo de consulta que contenga una instrucción CREATE FUNCTION . |
bigquery.routines.delete |
Rutina | Borra una rutina. |
bigquery.routines.get |
Rutina | Hacer referencia a una rutina creada por otra persona Este permiso también requiere bigquery.jobs.create para ejecutar un trabajo de consulta que haga referencia a la rutina, y también necesitas permiso para acceder a cualquier recurso al que haga referencia la rutina, como tablas o vistas. |
bigquery.routines.list |
Conjunto de datos | Enumera las rutinas del conjunto de datos y muestra los metadatos de las rutinas. |
bigquery.routines.update |
Rutina | Actualiza metadatos y definiciones de rutinas. |
bigquery.routines.getIamPolicy |
Rutina | Obtén los controles de acceso para la rutina. |
bigquery.routines.setIamPolicy |
Rutina | Configura los controles de acceso para la rutina. |
Cómo ver los controles de acceso de una rutina
Para ver los controles de acceso de una rutina, elige una de las siguientes opciones:
Console
Ve a la página de BigQuery.
En el panel Explorador, expande tu proyecto, expande el conjunto de datos, expande Rutinas y, luego, selecciona una rutina.
Haz clic en
CompartirLos controles de acceso de la rutina aparecen en el panel Compartir.
bq
El comando bq get-iam-policy
no permite ver los controles de acceso de una rutina.
SQL
La vista INFORMATION_SCHEMA.OBJECT_PRIVILEGES
no muestra los controles de acceso para las rutinas.
API
Para recuperar la política actual, llama al método routines.getIamPolicy
.
Cómo revocar el acceso a una rutina
Para revocar el acceso a una rutina, selecciona una de las siguientes opciones:
Console
Ve a la página de BigQuery.
En el panel Explorador, expande tu proyecto, expande un conjunto de datos, expande Rutinas y, luego, selecciona una rutina.
En el panel de detalles, haz clic en Compartir > Permisos.
En el cuadro de diálogo Permisos de rutinas, expande la principal cuyo acceso deseas revocar.
Haz clic en
Quitar principal.En el cuadro de diálogo ¿Quieres quitar el rol del principal?, haz clic en Quitar.
Haz clic en Cerrar.
bq
-
In the Trusted Cloud console, activate Cloud Shell.
At the bottom of the Trusted Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Para escribir la información de la rutina existente (incluidos los controles de acceso) en un archivo JSON, usa el comando
bq get-iam-policy
:bq get-iam-policy --routine PROJECT_ID:DATASET.ROUTINE > PATH_TO_FILE
Reemplaza lo siguiente:
- PROJECT_ID: El ID de tu proyecto
- DATASET: Es el nombre del conjunto de datos que contiene la rutina que deseas actualizar.
- ROUTINE: el nombre del recurso que se actualizará
- PATH_TO_FILE: la ruta al archivo JSON en tu máquina local
En el archivo de políticas, el valor de
version
sigue siendo1
. Este número hace referencia a la versión de esquema de la política de IAM, no a la versión de la política. El valoretag
es el número de versión de la política.Realiza cambios a la sección
access
del archivo JSON. Puedes quitar cualquiera de las entradasspecialGroup
:projectOwners
,projectWriters
,projectReaders
yallAuthenticatedUsers
. También puedes quitar cualquiera de los siguientes elementos:userByEmail
,groupByEmail
ydomain
.Por ejemplo, la sección
access
del archivo JSON de una rutina se vería de la siguiente manera:{ "bindings": [ { "role": "roles/bigquery.dataViewer", "members": [ "user:user@example.com", "group:group@example.com", "domain:google.com", ] }, ], "etag": "BwWWja0YfJA=", "version": 1 }
Para actualizar tu política de acceso, usa el comando
bq set-iam-policy
.bq set-iam-policy --routine PROJECT_ID:DATASET.ROUTINE PATH_TO_FILE
Para verificar los cambios del control de acceso, usa otra vez el comando
get-iam-policy
sin escribir la información en un archivo:bq get-iam-policy --routine --format=prettyjson PROJECT_ID:DATASET.ROUTINE
Para recuperar la política actual, llama al método
routines.getIamPolicy
.Edita la política para agregar principales o vinculaciones, o ambos. Para obtener más información sobre el formato de una política, consulta el tema de referencia Política.
API
Cómo ver los controles de acceso heredados para un recurso
Puedes examinar los roles de IAM heredados de un recurso con la IU web de BigQuery. Necesitarás los permisos adecuados para ver la herencia en la consola. Para examinar la herencia de un conjunto de datos, una tabla, una vista o una rutina, haz lo siguiente:
En la consola de Trusted Cloud , ve a la página BigQuery.
En el panel Explorador, selecciona el conjunto de datos o expándelo y, luego, selecciona una tabla, una vista o una rutina.
En el caso de un conjunto de datos, haz clic en Uso compartido. En el caso de una tabla, una vista o una rutina, haz clic en Compartir.
Verifica que la opción Mostrar roles heredados en la tabla esté habilitada.
Expande un rol en la tabla.
En la columna Herencia, el ícono hexagonal indica si el rol se heredó de un recurso principal.
Deniega el acceso a un recurso
Las políticas de denegación de IAM te permiten establecer límites en el acceso a los recursos de BigQuery. Puedes definir reglas de denegación que impidan a determinados principales usar ciertos permisos, sin importar los roles que tengan concedidos.
Para obtener información sobre cómo crear, actualizar y borrar políticas de denegación, consulta Deniega el acceso a los recursos.
Casos especiales
Ten en cuenta las siguientes situaciones cuando crees políticas de denegación de IAM en algunos permisos de BigQuery:
El acceso a recursos autorizados (vistas, rutinas, conjuntos de datos o procedimientos almacenados) te permite crear, descartar o manipular una tabla, además de leer y modificar los datos de la tabla, incluso si no tienes permiso directo para realizar esas operaciones. También puede obtener datos o metadatos del modelo y invocar otros procedimientos almacenados en la tabla subyacente. Esta capacidad implica que los recursos autorizados tienen los siguientes permisos:
bigquery.tables.get
bigquery.tables.list
bigquery.tables.getData
bigquery.tables.updateData
bigquery.tables.create
bigquery.tables.delete
bigquery.routines.get
bigquery.routines.list
bigquery.datasets.get
bigquery.models.getData
bigquery.models.getMetadata
Para denegar el acceso a estos recursos autorizados, agrega uno de los siguientes valores al campo
deniedPrincipal
cuando crees la política de denegación:Valor Caso de uso principalSet://goog/public:all
Bloquea a todas las principales, incluidos los recursos autorizados. principalSet://bigquery.googleapis.com/projects/PROJECT_NUMBER/*
Bloquea todos los recursos autorizados de BigQuery en el proyecto especificado. PROJECT_NUMBER
es un identificador único generado automáticamente para tu proyecto de tipoINT64
.Para eximir a ciertas principales de la política de denegación, especifica esas principales en el campo
exceptionPrincipals
de tu política de denegación. Por ejemplo,exceptionPrincipals: "principalSet://bigquery.googleapis.com/projects/1234/*"
.BigQuery almacena en caché los resultados de las consultas del propietario de un trabajo durante 24 horas, a los que el propietario del trabajo puede acceder sin necesidad del permiso
bigquery.tables.getData
en la tabla que contiene los datos. Por lo tanto, agregar una política de denegación de IAM al permisobigquery.tables.getData
no bloquea el acceso a los resultados almacenados en caché para el propietario del trabajo hasta que venza la caché. Para bloquear el acceso del propietario del trabajo a los resultados almacenados en caché, crea una política de denegación independiente en el permisobigquery.jobs.create
.Para evitar el acceso no deseado a los datos cuando se usan políticas de denegación para bloquear las operaciones de lectura de datos, te recomendamos que también revises y revoques las suscripciones existentes en el conjunto de datos.
Para crear una política de rechazo de IAM para ver los controles de acceso del conjunto de datos, rechaza los siguientes permisos:
bigquery.datasets.get
bigquery.datasets.getIamPolicy
Para crear una política de rechazo de IAM para actualizar los controles de acceso del conjunto de datos, rechaza los siguientes permisos:
bigquery.datasets.update
bigquery.datasets.setIamPolicy
¿Qué sigue?
Aprende a usar el método projects.testIamPermissions
para probar el acceso de los usuarios a un recurso.