Etiqueta tablas y conjuntos de datos
En este documento, se describe cómo usar etiquetas para aplicar de forma condicional las políticas de Identity and Access Management (IAM) a las tablas y los conjuntos de datos de BigQuery.
Una etiqueta es un par clave-valor que puedes adjuntar directamente a una tabla o un conjunto de datos, o que una tabla o un conjunto de datos puede heredar de otros recursos de Google Cloud. Puedes aplicar políticas de forma condicional en función de si un recurso tiene una etiqueta específica. Por ejemplo, puedes otorgar de forma condicional el rol de Visualizador de datos de BigQuery a una principal en cualquier conjunto de datos con la etiqueta environment:dev
.
Para obtener más información sobre el uso de etiquetas en la jerarquía de recursos de Google Cloud, consulta la Descripción general de las etiquetas.
Para otorgar permisos a muchos recursos de BigQuery relacionados al mismo tiempo, incluidos los recursos que aún no existen, considera usar las Condiciones de IAM.
Antes de comenzar
Debes otorgar roles de IAM que otorguen a los usuarios los permisos necesarios para realizar cada tarea de este documento. También debes crear claves y valores de etiqueta para adjuntar a los recursos.
Permisos necesarios
Para usar etiquetas en BigQuery, necesitas los siguientes permisos:
- Para adjuntar una etiqueta a una tabla, necesitas el permiso
bigquery.tables.createTagBinding
de IAM en la tabla y el permisoresourcemanager.tagValueBindings.create
a nivel del proyecto en el valor de la etiqueta que deseas adjuntar. - Para adjuntar una etiqueta a un conjunto de datos, necesitas el permiso
bigquery.datasets.createTagBinding
de IAM en el conjunto de datos y el permisoresourcemanager.tagValueBindings.create
a nivel del proyecto en el valor de la etiqueta que deseas adjuntar. - Para quitar una etiqueta de una tabla, necesitas el permiso
bigquery.tables.deleteTagBinding
de IAM en la tabla y el permisoresourcemanager.tagValueBindings.delete
a nivel del proyecto en el valor de la etiqueta que deseas borrar. - Para quitar una etiqueta de un conjunto de datos, necesitas el permiso
bigquery.datasets.deleteTagBinding
de IAM en el conjunto de datos y el permisoresourcemanager.tagValueBindings.delete
a nivel de proyecto en el valor de la etiqueta que deseas borrar. - Para enumerar las claves de etiqueta que están asociadas con una organización o proyecto superior en el panel Editar detalles de un conjunto de datos o una tabla, necesitas el permiso
resourcemanager.tagKeys.list
en la clave de etiqueta el nivel superior y el permisoresourcemanager.tagKeys.get
para cada clave de etiqueta. - Para enumerar los valores de las etiquetas de las claves asociadas con una organización o un proyecto superior en el panel Editar detalles de un conjunto de datos o una tabla, necesitas el permiso
resourcemanager.tagValues.list
en el nivel superior del valor de la etiqueta y el permisoresourcemanager.tagValues.get
para cada valor de la etiqueta.
Si usas etiquetas con la API de Cloud Resource Manager o gcloud, también necesitas los siguientes permisos:
- Para obtener una lista de las etiquetas adjuntas a una tabla con la API de Cloud Resource Manager o gcloud CLI, necesitas el permiso
bigquery.tables.listTagBindings
de IAM. - Para generar una lista de las etiquetas efectivas de una tabla, necesitas el permiso
bigquery.tables.listEffectiveTags
de IAM. - Para obtener una lista de las etiquetas adjuntas a un conjunto de datos con la API de Cloud Resource Manager o gcloud CLI, necesitas el permiso
bigquery.datasets.listTagBindings
de IAM. - Para enumerar las etiquetas eficaces para un conjunto de datos, necesitas el permiso de IAM
bigquery.datasets.listEffectiveTags
.
Los siguientes roles predefinidos de IAM incluyen todos los permisos de BigQuery necesarios:
- Propietario de datos de BigQuery (
roles/bigquery.dataOwner
) - BigQuery Admin (
roles/bigquery.admin
)
Los permisos de Resource Manager se incluyen en el rol de usuario de etiquetas (roles/resourcemanager.tagUser
).
También puedes usar etiquetas para denegar el acceso de forma condicional con las políticas de IAM a las tablas y los conjuntos de datos de BigQuery (vista previa). Para obtener más información, consulta Políticas de denegación.
Crea claves y valores de etiqueta
Antes de poder adjuntar una etiqueta, debes crear una y configurar su valor. Para crear valores y claves de etiqueta, consulta Crea una etiqueta y Agrega valores de etiqueta.
Etiqueta tablas
En las siguientes secciones, se describe cómo adjuntar etiquetas a tablas nuevas y existentes, enumerar las etiquetas adjuntas a una tabla y desacoplar etiquetas de una tabla.
Adjunta etiquetas cuando crees una tabla nueva
Después de crear una etiqueta, puedes adjuntarla a una tabla nueva. Solo puedes adjuntar un valor de etiqueta a una tabla para cualquier clave de etiqueta determinada. Puedes adjuntar un máximo de 50 etiquetas a una tabla.
Console
En la consola de Google Cloud, ve a la página de BigQuery.
En el panel Explorador, expande tu proyecto y elige un conjunto de datos.
En la sección Información del conjunto de datos, haz clic en
Crear tabla.Ingresa la información de la nueva tabla. Para obtener más información, consulta Crea y usa tablas.
En la sección Etiquetas, selecciona las etiquetas que deseas agregar a la tabla nueva.
Haga clic en Create table.
bq
Usa el comando bq mk --table
con la marca --add_tags
:
bq mk --table \ --schema=SCHEMA \ --add_tags=TAG \ PROJECT_ID:DATASET_ID.TABLE_ID
Reemplaza lo siguiente:
SCHEMA
: es la definición de esquema intercalado.TAG
: Es la etiqueta que estás adjuntando a la tabla nueva. Si hay varias etiquetas, estas están separadas por comas. Por ejemplo,556741164180/env:prod,myProject/department:sales
. Cada etiqueta debe tener el nombre de clave con espacio de nombres y el nombre corto del valor.PROJECT_ID
: el ID del proyecto en el que creas una tabla.DATASET_ID
: el ID del conjunto de datos en el que creas una tabla.TABLE_ID
: el ID de la tabla nueva que estás creando.
Terraform
Usa el recurso google_bigquery_table
.
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.
En el siguiente ejemplo, se crea una tabla llamada mytable
y, luego, se le adjuntan
etiquetas; para ello, se completa el campo resource_tags
:
Para aplicar tu configuración de Terraform en un proyecto de Google Cloud, completa los pasos de las siguientes secciones.
Prepara Cloud Shell
- Inicia Cloud Shell
-
Establece el proyecto de Google 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.
Prepara el directorio
Cada archivo de configuración de Terraform debe tener su propio directorio (también llamado módulo raíz).
-
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
Aplica los cambios
-
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 de Google Cloud para ver los resultados. En la consola de Google Cloud, navega a tus recursos en la IU para asegurarte de que Terraform los haya creado o actualizado.
API
Realiza una llamada al método tables.insert
con un recurso de tabla definido. Incluye las etiquetas en el campo resource_tags
.
Adjunta etiquetas a una tabla existente
Después de crear una etiqueta, puedes adjuntarla a una tabla existente. Solo puedes adjuntar un valor de etiqueta a una tabla para cualquier clave de etiqueta determinada.
Console
En la consola de Google Cloud, ve a la página de BigQuery.
En el panel Explorador, expande el proyecto y el conjunto de datos y, luego, selecciona una tabla.
En la pestaña Detalles, haz clic en
Editar detalles.En la sección Etiquetas, selecciona las etiquetas que deseas agregar a la tabla.
Haz clic en Guardar.
bq
Usa el comando bq update
con la marca --add_tags
:
bq update \ --add_tags=TAG \ PROJECT_ID:DATASET_ID.TABLE_ID
Reemplaza lo siguiente:
TAG
: Es la etiqueta que adjuntas a la tabla. Si hay varias etiquetas, estas están separadas por comas. Por ejemplo,556741164180/env:prod,myProject/department:sales
. Cada etiqueta debe tener el nombre de clave con espacio de nombres y el nombre corto del valor.PROJECT_ID
: el ID del proyecto que contiene tu tabla.DATASET_ID
: el ID del conjunto de datos que contiene tu tabla.TABLE_ID
: el ID de la tabla que deseas actualizar.
gcloud
Para adjuntar una etiqueta a una tabla mediante la línea de comandos, crea un recurso de vinculación de etiquetas con el comando gcloud resource-manager tags bindings create
:
gcloud resource-manager tags bindings create \ --tag-value=TAGVALUE_NAME \ --parent=RESOURCE_ID \ --location=LOCATION
Reemplaza lo siguiente:
TAGVALUE_NAME
: El ID permanente o el nombre con espacio de nombres del valor de la etiqueta que se adjuntará, comotagValues/4567890123
o1234567/my_tag_key/my_tag_value
.RESOURCE_ID
: el ID completo de la tabla, incluido el nombre de dominio de la API (//bigquery.googleapis.com/
) para identificar el tipo de recurso. Por ejemplo,//bigquery.googleapis.com/projects/my_project/datasets/my_dataset/my_table
LOCATION
: La ubicación de tu tabla.
Terraform
Agrega etiquetas al campo resource_tags
de la tabla y, luego, aplica la
configuración actualizada con el recurso google_bigquery_table
. Para
obtener más información, consulta el ejemplo de Terraform en
Adjunta etiquetas cuando crees una tabla nueva.
API
Realiza una llamada al método tables.update
con un recurso de tabla definido. Incluye las etiquetas en el campo resource_tags
.
Enumera las etiquetas adjuntas a una tabla
Puedes enumerar las etiquetas que se adjuntan directamente a una tabla. Este proceso no enumera las etiquetas heredadas de los recursos superiores.
Console
En la consola de Google Cloud, ve a la página de BigQuery.
En el panel Explorador, expande el proyecto y el conjunto de datos y, luego, selecciona una tabla.
Las etiquetas se pueden ver en la pestaña Detalles.
bq
Usa el comando bq show
y busca la columna tags
. Si no hay etiquetas en la tabla, no se muestra la columna tags
.
bq show \ PROJECT_ID:DATASET_ID.TABLE_ID
Reemplaza lo siguiente:
PROJECT_ID
: el ID del proyecto que contiene tu tabla.DATASET_ID
: el ID del conjunto de datos que contiene tu tabla.TABLE_ID
: el ID de tu tabla.
gcloud
Para obtener una lista de vinculaciones de etiquetas adjuntas a un recurso, usa el comando gcloud resource-manager tags bindings list
:
gcloud resource-manager tags bindings list \ --parent=RESOURCE_ID \ --location=LOCATION
Reemplaza lo siguiente:
RESOURCE_ID
: el ID completo de la tabla, incluido el nombre de dominio de la API (//bigquery.googleapis.com/
) para identificar el tipo de recurso. Por ejemplo,//bigquery.googleapis.com/projects/my_project/datasets/my_dataset/my_table
.LOCATION
: La ubicación de tu conjunto de datos.
El resultado es similar a este:
name: tagBindings/%2F%2Fbigquery.googleapis.com%2Fprojects%2Fmy_project%2Fdatasets%2Fmy_dataset/tagValues/4567890123 parent: //bigquery.googleapis.com/projects/my_project/datasets/my_dataset tagValue: tagValues/4567890123
Terraform
Usa el comando terraform state show
para enumerar los atributos de la
tabla, incluido el campo resource_tags
. Ejecuta este comando
en el directorio en el que se ejecutó el archivo de configuración de Terraform de
la tabla.
terraform state show google_bigquery_table.default
API
Realiza una llamada al método tables.get
con un recurso de tabla definido y busca el campo resource_tags
.
Vistas
Usa la vista INFORMATION_SCHEMA.TABLE_OPTIONS
.
Por ejemplo, en la siguiente consulta, se muestran todas las etiquetas adjuntas a todas las tablas en un conjunto de datos. Esta consulta muestra una tabla con columnas que incluyen schema_name
(el nombre del conjunto de datos), option_name
(siempre 'tags'
), object_type
(siempre ARRAY<STRUCT<STRING, STRING>>
) y option_value
, que contiene arreglos de objetos STRUCT
que representan etiquetas asociadas con cada conjunto de datos. Para las tablas sin etiquetas asignadas, la columna option_value
muestra un array vacío.
SELECT * from DATASET_ID.INFORMATION_SCHEMA.TABLE_OPTIONS WHERE option_name='tags'
Reemplaza DATASET_ID
por el ID del conjunto de datos que contiene tu tabla.
Desconecta etiquetas de una tabla
Para quitar una asociación de etiqueta de una tabla, borra la vinculación de etiqueta. Si necesitas borrar una etiqueta, primero debes desvincularla.
Console
En la consola de Google Cloud, ve a la página de BigQuery.
En el panel Explorador, expande el proyecto y el conjunto de datos y, luego, selecciona una tabla.
En la pestaña Detalles, haz clic en
Editar detalles.En la sección Etiquetas, quita las etiquetas que deseas desconectar de la tabla.
Haz clic en Guardar.
bq
Para quitar algunas etiquetas de una tabla, usa el comando bq update
con la marca --remove_tags
:
bq update \ --remove_tags=TAG_KEYS \ PROJECT_ID:DATASET_ID.TABLE_ID
Reemplaza lo siguiente:
TAG_KEYS
: las claves de etiqueta que desconectas de la tabla, separadas por comas. Por ejemplo,556741164180/env,myProject/department
. Cada clave de etiqueta debe tener el nombre de clave con espacio de nombres.PROJECT_ID
: el ID del proyecto que contiene tu tabla.DATASET_ID
: el ID del conjunto de datos que contiene tu tabla.TABLE_ID
: el ID de la tabla que deseas actualizar.
Para quitar todas las etiquetas de una tabla, usa el comando bq update
con la marca --clear_all_tags
:
bq update \ --clear_all_tags \ PROJECT_ID:DATASET_ID.TABLE_ID
gcloud
Para quitar una asociación de etiqueta de una tabla mediante la línea de comandos, borra la vinculación de etiqueta con el comando gcloud resource-manager tags bindings delete
:
gcloud resource-manager tags bindings delete \ --tag-value=TAGVALUE_NAME \ --parent=RESOURCE_ID \ --location=LOCATION
Reemplaza lo siguiente:
TAGVALUE_NAME
: El ID permanente o el nombre con espacio de nombres del valor de la etiqueta que se eliminará, comotagValues/4567890123
o1234567/my_tag_key/my_tag_value
.RESOURCE_ID
: el ID completo de la tabla, incluido el nombre de dominio de la API (//bigquery.googleapis.com/
) para identificar el tipo de recurso. Por ejemplo,//bigquery.googleapis.com/projects/my_project/datasets/my_dataset/my_table
.LOCATION
: La ubicación de tu conjunto de datos.
Terraform
Quita tus etiquetas del campo resource_tags
de la tabla y, luego, aplica
la configuración actualizada con el recurso google_bigquery_table
.
API
Realiza una llamada al método tables.update
con un recurso de tabla definido y quita las etiquetas en el campo resource_tags
. Para quitar todas las etiquetas, quita el campo resource_tags
.
Conjuntos de datos de etiquetas
En las siguientes secciones, se describe cómo adjuntar etiquetas a conjuntos de datos nuevos y existentes, enumerar las etiquetas adjuntas a un conjunto de datos y desconectar etiquetas de un conjunto de datos.
Adjunta etiquetas cuando crees una tabla nueva
Después de crear una etiqueta, puedes adjuntarla a un nuevo conjunto de datos de BigQuery. Solo puedes adjuntar un valor de etiqueta a un conjunto de datos para cualquier clave de etiqueta determinada. Puedes adjuntar un máximo de 50 etiquetas a un conjunto de datos.
Console
En la consola de Google Cloud, ve a la página de BigQuery.
En el panel Explorador, selecciona el proyecto en el que deseas crear tu conjunto de datos.
Haz clic en more_vert Ver acciones > Crear conjunto de datos.
En el menú Etiquetas, haz clic en Seleccionar permiso.
Selecciona el permiso para tus etiquetas.
Selecciona y agrega las etiquetas que deseas agregar al conjunto de datos.
Haz clic en Crear conjunto de datos.
bq
Usa el comando bq mk --dataset
con la marca --add_tags
:
bq mk --dataset \ --add_tags=TAG \ PROJECT_ID:DATASET_ID
Reemplaza lo siguiente:
TAG
: Es la etiqueta que estás adjuntando al conjunto de datos nuevo. Si hay varias etiquetas, estas están separadas por comas. Por ejemplo,556741164180/env:prod,myProject/department:sales
. Cada etiqueta debe tener el nombre de clave con espacio de nombres y el nombre corto del valor.PROJECT_ID
: el ID del proyecto en el que creas un conjunto de datos.DATASET_ID
: es el ID del conjunto de datos nuevo que crearás.
Terraform
Usa el
recurso google_bigquery_dataset
.
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.
En el siguiente ejemplo, se crea un conjunto de datos llamado my_dataset
y, luego, se le adjuntan
etiquetas; para ello, se completa el campo resource_tags
:
Para aplicar tu configuración de Terraform en un proyecto de Google Cloud, completa los pasos de las siguientes secciones.
Prepara Cloud Shell
- Inicia Cloud Shell
-
Establece el proyecto de Google 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.
Prepara el directorio
Cada archivo de configuración de Terraform debe tener su propio directorio (también llamado módulo raíz).
-
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
Aplica los cambios
-
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 de Google Cloud para ver los resultados. En la consola de Google Cloud, navega a tus recursos en la IU para asegurarte de que Terraform los haya creado o actualizado.
API
Llama al método datasets.insert
y agrega tus etiquetas al campo resource_tags
.
Adjunta etiquetas a un conjunto de datos existente
Después de crear una etiqueta, puedes adjuntarla a un conjunto de datos existente. Solo puedes adjuntar un valor de etiqueta a un conjunto de datos para cualquier clave de etiqueta determinada.
Console
En la consola de Google Cloud, ve a la página de BigQuery.
En el panel Explorador, expande tu proyecto y elige un conjunto de datos.
En la sección Información del conjunto de datos, haz clic en
Editar detalles.En la sección Etiquetas, selecciona las etiquetas que deseas agregar al conjunto de datos.
Haz clic en Guardar.
bq
Usa el comando bq update
con la marca --add_tags
:
bq update \ --add_tags=TAG \ PROJECT_ID:DATASET_ID
Reemplaza lo siguiente:
TAG
: Es la etiqueta que adjuntas al conjunto de datos. Si hay varias etiquetas, estas están separadas por comas. Por ejemplo,556741164180/env:prod,myProject/department:sales
. Cada etiqueta debe tener el nombre de clave con espacio de nombres y el nombre corto del valor.PROJECT_ID
: El ID del proyecto en el que se encuentra el conjunto de datos existente.DATASET_ID
: el ID del conjunto de datos existente.
gcloud
Para adjuntar una etiqueta a un conjunto de datos mediante la línea de comandos, crea un recurso de vinculación de etiquetas con el comando gcloud resource-manager tags bindings create
:
gcloud resource-manager tags bindings create \ --tag-value=TAGVALUE_NAME \ --parent=RESOURCE_ID \ --location=LOCATION
Reemplaza lo siguiente:
TAGVALUE_NAME
: El ID permanente o el nombre con espacio de nombres del valor de la etiqueta que se adjuntará, comotagValues/4567890123
o1234567/my_tag_key/my_tag_value
.RESOURCE_ID
: el ID completo del conjunto de datos, incluido el nombre de dominio de la API (//bigquery.googleapis.com/
) para identificar el tipo de recurso. Por ejemplo://bigquery.googleapis.com/projects/my_project/datasets/my_dataset
.LOCATION
: Es la ubicación de tu conjunto de datos.
Terraform
Agrega etiquetas al campo resource_tags
del conjunto de datos y, luego, aplica la
configuración actualizada con el recurso google_bigquery_dataset
. Para
obtener más información, consulta el ejemplo de Terraform en
Adjunta etiquetas cuando crees un conjunto de datos nuevo.
API
Llama al método datasets.get
para obtener el recurso del conjunto de datos, incluido el campo resource_tags
. Agrega las etiquetas al campo resource_tags
y pasa el recurso del conjunto de datos actualizado mediante el método datasets.update
.
Obtén una lista de las etiquetas adjuntas a un conjunto de datos
Con los siguientes pasos, se proporciona una lista de vinculaciones de etiquetas adjuntas directamente a un conjunto de datos. No se muestran etiquetas heredadas de los recursos superiores.
Console
En la consola de Google Cloud, ve a la página de BigQuery.
En el panel Explorador, expande tu proyecto y elige un conjunto de datos.
Las etiquetas aparecen en la sección Información del conjunto de datos.
bq
Para enumerar las etiquetas adjuntas a un conjunto de datos, usa el comando bq show
.
bq show PROJECT_ID:DATASET_ID
Reemplaza lo siguiente:
PROJECT_ID
: El ID del proyecto que contiene este conjunto de datos.DATASET_ID
: El ID del conjunto de datos cuyas etiquetas deseas enumerar.
gcloud
Para obtener una lista de vinculaciones de etiquetas adjuntas a un recurso, usa el comando gcloud resource-manager tags bindings list
:
gcloud resource-manager tags bindings list \ --parent=RESOURCE_ID \ --location=LOCATION
Reemplaza lo siguiente:
RESOURCE_ID
: el ID completo del conjunto de datos, incluido el nombre de dominio de la API (//bigquery.googleapis.com/
) para identificar el tipo de recurso. Por ejemplo,//bigquery.googleapis.com/projects/my_project/datasets/my_dataset
.LOCATION
: La ubicación de tu conjunto de datos.
El resultado es similar a este:
name: tagBindings/%2F%2Fbigquery.googleapis.com%2Fprojects%2Fmy_project%2Fdatasets%2Fmy_dataset/tagValues/4567890123 parent: //bigquery.googleapis.com/projects/my_project/datasets/my_dataset tagValue: tagValues/4567890123
Terraform
Usa el comando terraform state show
para enumerar los atributos del
conjunto de datos, incluido el campo resource_tags
. Ejecuta este comando
en el directorio en el que se ejecutó el archivo de configuración de Terraform del conjunto
de datos.
terraform state show google_bigquery_dataset.default
API
Llama al método datasets.get
para obtener el recurso del conjunto de datos. El recurso de conjunto de datos incluye etiquetas adjuntas al conjunto de datos en el campo resource_tags
.
Vistas
Usa la vista INFORMATION_SCHEMA.SCHEMATA_OPTIONS
.
Por ejemplo, en la siguiente consulta, se muestran todas las etiquetas adjuntas a todos los conjuntos de datos de una región. Esta consulta muestra una tabla con columnas que incluyen schema_name
(los nombres de los conjuntos de datos), option_name
(siempre 'tags'
), object_type
(siempre ARRAY<STRUCT<STRING, STRING>>
) y option_value
, que contiene arreglos de objetos STRUCT
que representan etiquetas asociadas con cada conjunto de datos. Para los conjuntos de datos sin etiquetas asignadas, la columna option_value
muestra un array vacío.
SELECT * from region-REGION.INFORMATION_SCHEMA.SCHEMATA_OPTIONS WHERE option_name='tags'
Reemplaza lo siguiente:
REGION
: la región en la que se encuentran los conjuntos de datos.
Desvincula etiquetas de un conjunto de datos
Para desconectar una etiqueta de un recurso, borra el recurso de vinculación de etiquetas. Si necesitas borrar una etiqueta, primero debes desvincularla.
Console
En la consola de Google Cloud, ve a la página de BigQuery.
En el panel Explorador, expande tu proyecto y elige un conjunto de datos.
En la sección Información del conjunto de datos, haz clic en
Editar detalles.En la sección Etiquetas, haz clic en
Borrar elemento junto a la etiqueta que deseas borrar.Haz clic en Guardar.
bq
Usa el comando bq update
con la marca --remove_tags
:
bq update \ --remove_tags=REMOVED_TAG \ PROJECT_ID:DATASET_ID
Reemplaza lo siguiente:
REMOVED_TAG
: la etiqueta que quitas del conjunto de datos. Si hay varias etiquetas, estas están separadas por comas. Solo acepta claves sin pares de valores. Un ejemplo es556741164180/env,myProject/department
. Cada clave de etiqueta debe tener el nombre de clave con espacio de nombres.PROJECT_ID
: es el ID del proyecto que contiene tu conjunto de datos.DATASET_ID
: el ID del conjunto de datos del que se desconectarán las etiquetas.
Como alternativa, si deseas quitar todas las etiquetas de un conjunto de datos, usa el comando bq update
con la marca --clear_all_tags
:
bq update \ --clear_all_tags PROJECT_ID:DATASET_ID
gcloud
Para desvincular una etiqueta de un conjunto de datos mediante la línea de comandos, borra la vinculación de la etiqueta con el comando gcloud resource-manager tags bindings delete
:
gcloud resource-manager tags bindings delete \ --tag-value=TAGVALUE_NAME \ --parent=RESOURCE_ID \ --location=LOCATION
Reemplaza lo siguiente:
TAGVALUE_NAME
: El ID permanente o el nombre con espacio de nombres del valor de la etiqueta que se desconectará, comotagValues/4567890123
o1234567/my_tag_key/my_tag_value
.RESOURCE_ID
: el ID completo del conjunto de datos, incluido el nombre de dominio de la API (//bigquery.googleapis.com/
) para identificar el tipo de recurso. Por ejemplo,//bigquery.googleapis.com/projects/my_project/datasets/my_dataset
.LOCATION
: La ubicación de tu conjunto de datos.
Terraform
Quita tus etiquetas del campo resource_tags
del conjunto de datos y, luego, aplica
la configuración actualizada con el recurso google_bigquery_dataset
.
API
Llama al método datasets.get
para obtener el recurso del conjunto de datos, incluido el campo resource_tags
. Quita tus etiquetas del campo resource_tags
y pasa el recurso del conjunto de datos actualizado mediante el método datasets.update
.
Borrar etiquetas
No puedes borrar una etiqueta si una tabla o un conjunto de datos hace referencia a ella. Debes desconectar todos los recursos de vinculación de etiquetas existentes antes de borrar la clave o el valor de la etiqueta. Para borrar claves y valores de etiqueta, consulta Borra etiquetas.
Ejemplo
Imagina que eres administrador de una organización. Los analistas de datos son todos miembros del grupo analysts@example.com, que tiene el rol de IAM de Visualizador de datos de BigQuery en el proyecto userData
. Se contrata un pasante de analista de datos y, de acuerdo con la política de la empresa, solo debe tener permiso para ver el conjunto de datos anonymousData
en el proyecto userData
.
Puedes controlar su acceso mediante etiquetas.
Crea una etiqueta con la clave
employee_type
y el valorintern
:En la consola de Google Cloud, ve a la página IAM.
Ubica la fila que contiene el pasante cuyo acceso al conjunto de datos deseas restringir y haz clic en
Editar principal en esa fila.En el menú Rol, selecciona Visualizador de datos de BigQuery.
Haz clic en Agregar condición:
En los campos Título y Descripción, ingresa los valores que describen la condición de etiqueta de IAM que deseas crear.
En la pestaña Creador de condiciones, haz clic en Agregar.
En el menú Tipo de condición, selecciona Recurso y, luego, Etiqueta.
En el menú Operador, selecciona tiene el valor.
En el campo Ruta de valor, ingresa la ruta de valor de etiqueta en el formato
ORGANIZATION/TAG_KEY/TAG_VALUE
. Por ejemplo,example.org/employee_type/intern
.Esta condición de etiqueta de IAM restringe el acceso del pasante a los conjuntos de datos que tienen la etiqueta
intern
.Para guardar la condición de etiqueta, haz clic en Guardar.
Para guardar los cambios que realizaste en el panel Editar permisos, haz clic en Guardar.
A fin de adjuntar el valor de etiqueta
intern
al conjunto de datosanonymousData
, usa la línea de comandos para ejecutar el comandogcloud resource-manager tags bindings create
:gcloud resource-manager tags bindings create \ --tag-value=tagValues/4567890123 \ --parent=//bigquery.googleapis.com/projects/userData/datasets/anonymousData \ --location=US
Limitaciones
Las etiquetas de tabla no son compatibles con las tablas de BigQuery Omni, las tablas de conjuntos de datos ocultos ni las tablas temporales. Además, las consultas entre regiones en BigQuery Omni no usan etiquetas durante las verificaciones de control de acceso de las tablas en otras regiones.
Puedes adjuntar un máximo de 50 etiquetas a una tabla o un conjunto de datos.
Todas las tablas a las que se hace referencia en una consulta comodín deben tener exactamente el mismo conjunto de claves y valores de etiqueta.
Algunos servicios fuera de BigQuery no pueden verificar las condiciones de la etiqueta de IAM de forma correcta. Si la condición de la etiqueta es positiva, es decir, se le otorga a un usuario una función en un recurso solo si ese recurso tiene una etiqueta en particular, entonces el acceso se niega al recurso, sin importar a qué etiquetas se adjunten. Si la condición de la etiqueta es negativa, lo que significa que se otorga a un usuario una función en un recurso solo si ese recurso no tiene una etiqueta en particular, entonces la condición de la etiqueta no se verifica.
Por ejemplo, Data Catalog no puede verificar las condiciones de la etiqueta de IAM en los conjuntos de datos de BigQuery. Supongamos que hay una política de IAM condicional que le otorga a un pasante el rol de visualizador de datos de BigQuery en los conjuntos de datos con la etiqueta
employee_type=intern
. Dado que esta es una condición de etiqueta positiva, el pasante no puede ver los conjuntos de datos mediante la búsqueda en Data Catalog, incluso si esos conjuntos de datos tienen la etiquetaemployee_type=intern
. Si la condición se cambia a una negativa, de modo que el pasante solo pueda ver los conjuntos de datos que no tienen la etiquetaemployee_type=intern
, entonces la verificación se omitiría por completo y el pasante podría ver los conjuntos de datos a los que normalmente no podría acceder en BigQuery.
¿Qué sigue?
- Para obtener una descripción general de las etiquetas en Google Cloud, consulta Descripción general de las etiquetas.
- Para obtener más información sobre cómo usar etiquetas, consulta Crea y administra etiquetas.
- Para obtener información sobre cómo controlar el acceso a los recursos de BigQuery con condiciones de IAM, consulta Controla el acceso con Condiciones de IAM.