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 permiso resourcemanager.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 permiso resourcemanager.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 permiso resourcemanager.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 permiso resourcemanager.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 permiso resourcemanager.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 permiso resourcemanager.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

  1. En la consola de Google Cloud, ve a la página de BigQuery.

    Ir a BigQuery

  2. En el panel Explorador, expande tu proyecto y elige un conjunto de datos.

  3. En la sección Información del conjunto de datos, haz clic en Crear tabla.

  4. Ingresa la información de la nueva tabla. Para obtener más información, consulta Crea y usa tablas.

  5. En la sección Etiquetas, selecciona las etiquetas que deseas agregar a la tabla nueva.

  6. 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:


# Create tag keys and values
data "google_project" "default" {}

resource "google_tags_tag_key" "env_tag_key" {
  parent     = "projects/${data.google_project.default.project_id}"
  short_name = "env3"
}

resource "google_tags_tag_key" "department_tag_key" {
  parent     = "projects/${data.google_project.default.project_id}"
  short_name = "department3"
}

resource "google_tags_tag_value" "env_tag_value" {
  parent     = "tagKeys/${google_tags_tag_key.env_tag_key.name}"
  short_name = "prod"
}

resource "google_tags_tag_value" "department_tag_value" {
  parent     = "tagKeys/${google_tags_tag_key.department_tag_key.name}"
  short_name = "sales"
}

# Create a dataset
resource "google_bigquery_dataset" "default" {
  dataset_id                      = "MyDataset"
  default_partition_expiration_ms = 2592000000  # 30 days
  default_table_expiration_ms     = 31536000000 # 365 days
  description                     = "dataset description"
  location                        = "US"
  max_time_travel_hours           = 96 # 4 days
}

# Create a table
resource "google_bigquery_table" "default" {
  dataset_id          = google_bigquery_dataset.default.dataset_id
  table_id            = "mytable"
  description         = "table description"
  deletion_protection = false # set to "true" in production

  # Attach tags to the table
  resource_tags = {
    (google_tags_tag_key.env_tag_key.namespaced_name) : google_tags_tag_value.env_tag_value.short_name,
    (google_tags_tag_key.department_tag_key.namespaced_name) : google_tags_tag_value.department_tag_value.short_name
  }
}

Para aplicar tu configuración de Terraform en un proyecto de Google Cloud, completa los pasos de las siguientes secciones.

Prepara Cloud Shell

  1. Inicia Cloud Shell
  2. 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).

  1. 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 denomina main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. 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.

  3. Revisa y modifica los parámetros de muestra que se aplicarán a tu entorno.
  4. Guarda los cambios.
  5. 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

  1. 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.

  2. 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!”.

  3. 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

  1. En la consola de Google Cloud, ve a la página de BigQuery.

    Ir a BigQuery

  2. En el panel Explorador, expande el proyecto y el conjunto de datos y, luego, selecciona una tabla.

  3. En la pestaña Detalles, haz clic en Editar detalles.

  4. En la sección Etiquetas, selecciona las etiquetas que deseas agregar a la tabla.

  5. 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á, como tagValues/4567890123 o 1234567/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

  1. En la consola de Google Cloud, ve a la página de BigQuery.

    Ir a BigQuery

  2. 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

  1. En la consola de Google Cloud, ve a la página de BigQuery.

    Ir a BigQuery

  2. En el panel Explorador, expande el proyecto y el conjunto de datos y, luego, selecciona una tabla.

  3. En la pestaña Detalles, haz clic en Editar detalles.

  4. En la sección Etiquetas, quita las etiquetas que deseas desconectar de la tabla.

  5. 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á, como tagValues/4567890123 o 1234567/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

  1. En la consola de Google Cloud, ve a la página de BigQuery.

    Ir a BigQuery

  2. En el panel Explorador, selecciona el proyecto en el que deseas crear tu conjunto de datos.

  3. Haz clic en more_vert Ver acciones > Crear conjunto de datos.

  4. En el menú Etiquetas, haz clic en Seleccionar permiso.

  5. Selecciona el permiso para tus etiquetas.

  6. Selecciona y agrega las etiquetas que deseas agregar al conjunto de datos.

  7. 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:


# Create tag keys and values
data "google_project" "default" {}

resource "google_tags_tag_key" "env_tag_key" {
  parent     = "projects/${data.google_project.default.project_id}"
  short_name = "env2"
}

resource "google_tags_tag_key" "department_tag_key" {
  parent     = "projects/${data.google_project.default.project_id}"
  short_name = "department2"
}

resource "google_tags_tag_value" "env_tag_value" {
  parent     = "tagKeys/${google_tags_tag_key.env_tag_key.name}"
  short_name = "prod"
}

resource "google_tags_tag_value" "department_tag_value" {
  parent     = "tagKeys/${google_tags_tag_key.department_tag_key.name}"
  short_name = "sales"
}

# Create a dataset
resource "google_bigquery_dataset" "default" {
  dataset_id                      = "my_dataset"
  default_partition_expiration_ms = 2592000000  # 30 days
  default_table_expiration_ms     = 31536000000 # 365 days
  description                     = "dataset description"
  location                        = "US"
  max_time_travel_hours           = 96 # 4 days

  # Attach tags to the dataset
  resource_tags = {
    (google_tags_tag_key.env_tag_key.namespaced_name) : google_tags_tag_value.env_tag_value.short_name,
    (google_tags_tag_key.department_tag_key.namespaced_name) : google_tags_tag_value.department_tag_value.short_name
  }
}

Para aplicar tu configuración de Terraform en un proyecto de Google Cloud, completa los pasos de las siguientes secciones.

Prepara Cloud Shell

  1. Inicia Cloud Shell
  2. 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).

  1. 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 denomina main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. 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.

  3. Revisa y modifica los parámetros de muestra que se aplicarán a tu entorno.
  4. Guarda los cambios.
  5. 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

  1. 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.

  2. 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!”.

  3. 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

  1. En la consola de Google Cloud, ve a la página de BigQuery.

    Ir a BigQuery

  2. En el panel Explorador, expande tu proyecto y elige un conjunto de datos.

  3. En la sección Información del conjunto de datos, haz clic en Editar detalles.

  4. En la sección Etiquetas, selecciona las etiquetas que deseas agregar al conjunto de datos.

  5. 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á, como tagValues/4567890123 o 1234567/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

  1. En la consola de Google Cloud, ve a la página de BigQuery.

    Ir a BigQuery

  2. 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

  1. En la consola de Google Cloud, ve a la página de BigQuery.

    Ir a BigQuery

  2. En el panel Explorador, expande tu proyecto y elige un conjunto de datos.

  3. En la sección Información del conjunto de datos, haz clic en Editar detalles.

  4. En la sección Etiquetas, haz clic en Borrar elemento junto a la etiqueta que deseas borrar.

  5. 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 es 556741164180/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á, como tagValues/4567890123 o 1234567/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.

  1. Crea una etiqueta con la clave employee_type y el valor intern:

    Ejemplo de cómo crear valores y clave de etiqueta

  2. En la consola de Google Cloud, ve a la página IAM.

    Ir a IAM

  3. Ubica la fila que contiene el pasante cuyo acceso al conjunto de datos deseas restringir y haz clic en Editar principal en esa fila.

  4. En el menú Rol, selecciona Visualizador de datos de BigQuery.

  5. Haz clic en Agregar condición:

  6. En los campos Título y Descripción, ingresa los valores que describen la condición de etiqueta de IAM que deseas crear.

  7. En la pestaña Creador de condiciones, haz clic en Agregar.

  8. En el menú Tipo de condición, selecciona Recurso y, luego, Etiqueta.

  9. En el menú Operador, selecciona tiene el valor.

  10. 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.

    Ejemplo de una condición de IAM mediante el uso de etiquetas

    Esta condición de etiqueta de IAM restringe el acceso del pasante a los conjuntos de datos que tienen la etiqueta intern.

  11. Para guardar la condición de etiqueta, haz clic en Guardar.

  12. Para guardar los cambios que realizaste en el panel Editar permisos, haz clic en Guardar.

  13. A fin de adjuntar el valor de etiqueta intern al conjunto de datos anonymousData, usa la línea de comandos para ejecutar el comando gcloud 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 etiqueta employee_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 etiqueta employee_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?