Controlar o acesso com tags
Neste documento, descrevemos como usar tags com recursos do BigQuery para controle de acesso.
Uma tag é um par de chave-valor que pode ser anexado a um recurso do Cloud de Confiance by S3NS. É possível usar tags com o BigQuery das seguintes maneiras:
- Conceder ou negar políticas condicionalmente: é possível anexar tags a tabelas, visualizações e conjuntos de dados do BigQuery e usar o Identity and Access Management (IAM) para conceder papéis ou negar acesso (prévia) a esses recursos com base nas tags deles. Para mais informações sobre políticas de negação, consulte Políticas de negação.
- Controle de acesso no nível da coluna: é possível anexar tags de governança de dados (em prévia) a colunas de tabelas e usá-las com políticas de dados para restringir o acesso aos dados da coluna.
É possível anexar tags diretamente a um recurso ou elas podem ser herdadas de recursos principais na hierarquia de recursos do Cloud de Confiance .
Este documento se concentra no uso de tags com o IAM para conceder ou negar condicionalmente o acesso a tabelas, visualizações e conjuntos de dados do BigQuery.
Para mais informações sobre o uso de tags na hierarquia de recursos do Cloud de Confiance by S3NS, consulte Visão geral das tags.
Para conceder permissões a muitos recursos relacionados do BigQuery ao mesmo tempo, incluindo recursos que ainda não existem, considere usar as Condições do IAM.
Limitações
As tags de tabela não são compatíveis com tabelas do BigQuery Omni, tabelas em conjuntos de dados ocultos ou tabelas temporárias. As tags de conjunto de dados não são compatíveis com conjuntos de dados do BigQuery Omni. Além disso, as consultas entre regiões no BigQuery Omni não usam tags durante verificações de controle de acesso de tabelas em outras regiões.
É possível anexar no máximo 50 tags a uma tabela ou conjunto de dados.
Todas as tabelas referenciadas em uma consulta com caractere curinga precisam ter exatamente o mesmo conjunto de chaves e valores de tag.
Os usuários com acesso condicional a um conjunto de dados ou uma tabela não podem modificar as permissões desse recurso pelo console do Cloud de Confiance . As modificações de permissão são aceitas apenas pela ferramenta bq e pela API BigQuery.
Alguns serviços fora do BigQuery não podem verificar corretamente as condições da tag do IAM. Se a condição da tag for positiva, ou seja, o usuário receberá um papel em um recurso somente se ele tiver uma tag específica, o acesso será negado ao recurso, independentemente das tags anexadas a ele. Se a condição da tag for negativa, ou seja, um usuário recebe um papel em um recurso somente se ele não tiver uma tag específica, a condição da tag não será verificada.
Funções exigidas
Você precisa conceder papéis do IAM que forneçam aos usuários as permissões necessárias para realizar cada tarefa neste documento.
Os dois papéis predefinidos do IAM incluem todas as permissões necessárias do BigQuery:
- Proprietário de dados do BigQuery (
roles/bigquery.dataOwner) - Administrador do BigQuery (
roles/bigquery.admin)
As permissões do Resource Manager para adicionar e remover tags estão incluídas no papel
Usuário de tags
(roles/resourcemanager.tagUser).
Permissões necessárias
Para usar tags no BigQuery, é necessário ter as seguintes permissões:
| Operação | Interfaces do BigQuery (API, CLI, console) e Terraform | API Cloud Resource Manager ou gcloud |
|---|---|---|
| Anexar uma tag a uma tabela ou visualização |
|
|
| Remover uma tag de uma tabela ou visualização |
|
|
| Anexar uma tag a um conjunto de dados |
|
|
| Remover uma tag de um conjunto de dados |
|
|
Para listar chaves e valores de chave de tag no console Cloud de Confiance , você precisa das seguintes permissões:
Para listar as chaves de tag associadas a uma organização ou um projeto pai, você precisa da permissão
resourcemanager.tagKeys.listno nível pai da chave de tag e da permissãoresourcemanager.tagKeys.getpara cada chave de tag. Para conferir a lista de chaves de tag no console do BigQuery, clique no nome do conjunto de dados e em Editar detalhes ou clique no nome da tabela ou da visualização e em Detalhes > Editar detalhes.Para listar os valores de tag das chaves associadas a uma organização ou um projeto pai, você precisa da permissão
resourcemanager.tagValues.listno nível pai do valor da tag e da permissãoresourcemanager.tagValues.getpara cada valor. Para conferir a lista de valores de chave de tag no console do BigQuery, clique no nome do conjunto de dados e em Editar detalhes. Ou clique no nome da tabela ou da visualização e em Detalhes > Editar detalhes.
Para usar tags na API Cloud Resource Manager ou na gcloud, você precisa das seguintes permissões:
- Para listar as tags anexadas a uma
tabela ou visualização com a API Cloud Resource Manager ou a CLI gcloud, você
precisa da permissão do IAM
bigquery.tables.listTagBindings. - Para listar as tags efetivas
de uma tabela ou visualização, você precisa da permissão
bigquery.tables.listEffectiveTagsdo IAM. - Para listar as tags anexadas a um
conjunto de dados com a API Cloud Resource Manager ou a CLI gcloud,
você precisa da permissão
bigquery.datasets.listTagBindingsdo IAM. - Para listar as tags efetivas para
um conjunto de dados, você precisa do argumento
bigquery.datasets.listEffectiveTagsdo IAM.
Criar chaves e valores de tags
É possível criar uma tag antes de anexá-la a um recurso do BigQuery ou criar uma tag manualmente ao criar o recurso usando o consoleCloud de Confiance .
Para informações sobre como criar chaves e valores de tag, consulte Como criar uma tag e Como adicionar valores de tag na documentação do Resource Manager.
Conjuntos de dados de tags
As seções a seguir descrevem como anexar tags a conjuntos de dados novos e atuais, listar tags anexadas a um conjunto de dados e remover tags de um conjunto de dados.
Anexar tags ao criar um conjunto de dados novo
Depois de criar uma tag, é possível anexá-la a um novo conjunto de dados do BigQuery. É possível anexar somente um valor de tag a um conjunto de dados para qualquer chave de tag. É possível anexar no máximo 50 tags a um conjunto de dados.
Console
No console do Cloud de Confiance , acesse a página BigQuery.
No painel à esquerda, clique em Explorer:

Se o painel esquerdo não aparecer, clique em Expandir painel esquerdo para abrir.
No painel Explorador, selecione o projeto em que você quer criar o conjunto de dados.
Clique em Ver ações > Criar conjunto de dados.
Insira as informações do novo conjunto de dados. Para mais detalhes, consulte Criar conjuntos de dados.
Abra a seção Tags.
Para aplicar uma tag existente, faça o seguinte:
Clique na seta suspensa ao lado de Selecionar escopo e escolha Escopo atual > Selecionar organização atual ou Selecionar projeto atual.
Ou clique em Selecionar escopo para pesquisar um recurso ou ver uma lista dos recursos atuais.
Em Chave 1 e Valor 1, escolha os valores adequados nas listas.
Para inserir uma nova tag manualmente, faça o seguinte:
Clique na seta suspensa ao lado de Selecionar um escopo e escolha Inserir IDs manualmente > Organização, Projeto ou Tags.
Se você estiver criando uma tag para seu projeto ou organização, na caixa de diálogo, insira o
PROJECT_IDou oORGANIZATION_IDe clique em Salvar.Em Chave 1 e Valor 1, escolha os valores adequados nas listas.
Opcional: para adicionar mais tags à tabela, clique em Adicionar tag e siga as etapas anteriores.
Clique em Criar conjunto de dados.
SQL
Use a
instrução CREATE SCHEMA.
No console do Cloud de Confiance , acesse a página BigQuery.
No editor de consultas, digite a seguinte instrução:
CREATE SCHEMA PROJECT_ID.DATASET_ID OPTIONS ( tags = [('TAG_KEY_1', 'TAG_VALUE_1'), ('TAG_KEY_2', 'TAG_VALUE_2')];)
Substitua:
PROJECT_ID: o ID do projeto.DATASET_ID: o ID do conjunto de dados que você está criando.TAG_KEY_1: o nome da chave do namespace que você quer definir como a primeira tag no conjunto de dados, por exemplo,'my-project/env'ou'556741164180/department'.TAG_VALUE_1: o nome abreviado do valor da tag, por exemplo,'prod'ou'sales'.TAG_KEY_2: o nome da chave com namespace da segunda tag.TAG_VALUE_2: o nome abreviado do valor da segunda tag.
Clique em Executar.
Para mais informações sobre como executar consultas, acesse Executar uma consulta interativa.
bq
Use o comando bq mk --dataset com a sinalização --add_tags.
bq mk --dataset \ --add_tags=TAG \ PROJECT_ID:DATASET_ID
Substitua:
TAG: a tag que você está anexando ao novo conjunto de dados. Várias tags são separadas por vírgulas. Por exemplo,556741164180/env:prod,myProject/department:sales. Cada tag precisa ter o nome da chave com namespace e o nome curto do valor.PROJECT_ID: o ID do projeto em que você está criando um conjunto de dados.DATASET_ID: o ID do novo conjunto de dados.
Terraform
Use o recurso google_bigquery_dataset.
Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
O exemplo a seguir cria um conjunto de dados chamado my_dataset e anexa tags a ele preenchendo o campo resource_tags:
Para aplicar a configuração do Terraform em um Cloud de Confiance projeto, siga as etapas nas seções a seguir.
Preparar o Cloud Shell
- Inicie o Cloud Shell.
-
Defina o projeto Cloud de Confiance padrão em que você quer aplicar as configurações do Terraform.
Você só precisa executar esse comando uma vez por projeto, e ele pode ser executado em qualquer diretório.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
As variáveis de ambiente serão substituídas se você definir valores explícitos no arquivo de configuração do Terraform.
Preparar o diretório
Cada arquivo de configuração do Terraform precisa ter o próprio diretório, também chamado de módulo raiz.
-
No Cloud Shell, crie um diretório e um novo
arquivo dentro dele. O nome do arquivo precisa ter a extensão
.tf, por exemplo,main.tf. Neste tutorial, o arquivo é chamado demain.tf.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Se você estiver seguindo um tutorial, poderá copiar o exemplo de código em cada seção ou etapa.
Copie o exemplo de código no
main.tfrecém-criado.Se preferir, copie o código do GitHub. Isso é recomendado quando o snippet do Terraform faz parte de uma solução de ponta a ponta.
- Revise e modifique os parâmetros de amostra para aplicar ao seu ambiente.
- Salve as alterações.
-
Inicialize o Terraform. Você só precisa fazer isso uma vez por diretório.
terraform init
Opcionalmente, para usar a versão mais recente do provedor do Google, inclua a opção
-upgrade:terraform init -upgrade
Aplique as alterações
-
Revise a configuração e verifique se os recursos que o Terraform vai criar ou
atualizar correspondem às suas expectativas:
terraform plan
Faça as correções necessárias na configuração.
-
Para aplicar a configuração do Terraform, execute o comando a seguir e digite
yesno prompt:terraform apply
Aguarde até que o Terraform exiba a mensagem "Apply complete!".
- Abra seu Cloud de Confiance projeto para conferir os resultados. No console do Cloud de Confiance , navegue até seus recursos na UI para verificar se foram criados ou atualizados pelo Terraform.
API
Chame o
método datasets.insert
e adicione suas tags ao campo resource_tags.
Anexar tags a um conjunto de dados
Depois de criar uma tag, você pode anexá-la a um conjunto de dados já existente. É possível anexar somente um valor de tag a um conjunto de dados para qualquer chave de tag.
Console
No console do Cloud de Confiance , acesse a página BigQuery.
No painel à esquerda, clique em Explorer:

No painel Explorer, expanda o projeto, clique em Conjuntos de dados e selecione um conjunto de dados.
Na seção Informações do conjunto de dados, clique em Editar detalhes.
Abra a seção Tags.
Para aplicar uma tag existente, faça o seguinte:
Clique na seta suspensa ao lado de Selecionar escopo e escolha Escopo atual > Selecionar organização atual ou Selecionar projeto atual.
Ou clique em Selecionar escopo para pesquisar um recurso ou ver uma lista dos recursos atuais.
Em Chave 1 e Valor 1, escolha os valores adequados nas listas.
Para inserir uma nova tag manualmente, faça o seguinte:
Clique na seta suspensa ao lado de Selecionar um escopo e escolha Inserir IDs manualmente > Organização, Projeto ou Tags.
Se você estiver criando uma tag para seu projeto ou organização, na caixa de diálogo, insira o
PROJECT_IDou oORGANIZATION_IDe clique em Salvar.Em Chave 1 e Valor 1, escolha os valores adequados nas listas.
Opcional: para adicionar mais tags à tabela, clique em Adicionar tag e siga as etapas anteriores.
Clique em Salvar.
SQL
Use a
instrução ALTER SCHEMA SET OPTIONS.
O exemplo a seguir substitui todas as tags de um conjunto de dados.
No console do Cloud de Confiance , acesse a página BigQuery.
No editor de consultas, digite a seguinte instrução:
ALTER SCHEMA PROJECT_ID.DATASET_ID SET OPTIONS ( tags = [('TAG_KEY_1', 'TAG_VALUE_1'), ('TAG_KEY_2', 'TAG_VALUE_2')];)
Substitua:
PROJECT_ID: o ID do projeto.DATASET_ID: o ID do conjunto de dados que contém a tabela.TABLE_ID: o nome da tabela que você está marcando.TAG_KEY_1: o nome da chave com namespace que você quer definir como a primeira tag na tabela, por exemplo,'my-project/env'ou'556741164180/department'.TAG_VALUE_1: o nome abreviado do valor da tag, por exemplo,'prod'ou'sales'.TAG_KEY_2: o nome da chave com namespace da segunda tag.TAG_VALUE_2: o nome abreviado do valor da segunda tag.
Clique em Executar.
Para mais informações sobre como executar consultas, acesse Executar uma consulta interativa.
O exemplo a seguir usa o operador += para anexar tags a um conjunto de dados sem substituir as tags atuais. Se uma tag tiver a mesma chave, ela será substituída.
No console do Cloud de Confiance , acesse a página BigQuery.
No editor de consultas, digite a seguinte instrução:
ALTER SCHEMA PROJECT_ID.DATASET_ID SET OPTIONS ( tags += [('TAG_KEY_1', 'TAG_VALUE_1'), ('TAG_KEY_2', 'TAG_VALUE_2')];)
Substitua:
PROJECT_ID: o ID do projeto.DATASET_ID: o ID do conjunto de dados que contém a tabela.TABLE_ID: o nome da tabela que você está marcando.TAG_KEY_1: o nome da chave com namespace que você quer definir como a primeira tag na tabela, por exemplo,'my-project/env'ou'556741164180/department'.TAG_VALUE_1: o nome abreviado do valor da tag, por exemplo,'prod'ou'sales'.TAG_KEY_2: o nome da chave com namespace da segunda tag.TAG_VALUE_2: o nome abreviado do valor da segunda tag.
Clique em Executar.
Para mais informações sobre como executar consultas, acesse Executar uma consulta interativa.
bq
Use o comando bq update com a sinalização --add_tags.
bq update \ --add_tags=TAG \ PROJECT_ID:DATASET_ID
Substitua:
TAG: a tag que você está anexando ao conjunto de dados. Várias tags são separadas por vírgulas. Por exemplo,556741164180/env:prod,myProject/department:sales. Cada tag precisa ter o nome da chave com namespace e o nome curto do valor.PROJECT_ID: o ID do projeto em que o conjunto de dados existente está localizado.DATASET_ID: o ID do conjunto de dados.
gcloud
Para anexar uma tag a um conjunto de dados usando a linha de comando, crie um recurso de vinculação de tag usando o comando gcloud resource-manager tags bindings create:
gcloud resource-manager tags bindings create \
--tag-value=TAG_VALUE_NAME \
--parent=RESOURCE_ID \
--location=LOCATION
Substitua:
TAG_VALUE_NAME: o ID permanente ou o nome do namespace do valor da tag a ser anexado, comotagValues/4567890123ou1234567/my_tag_key/my_tag_valueRESOURCE_ID: o ID completo do conjunto de dados, incluindo o nome de domínio da API (//bigquery.googleapis.com/) para identificar o tipo de recurso. Exemplo://bigquery.googleapis.com/projects/my_project/datasets/my_datasetLOCATION: o local do conjunto de dados.
Terraform
Adicione tags ao campo resource_tags do conjunto de dados e aplique a configuração atualizada usando o recurso google_bigquery_dataset. Para
mais informações, consulte o exemplo do Terraform em
Anexar tags ao criar um novo conjunto de dados.
API
Chame o
método datasets.get
para receber o recurso do conjunto de dados, incluindo o campo resource_tags. Adicione suas
tags no campo resource_tags e transmita o recurso do conjunto de dados atualizado
usando
método datasets.update.
Listar tags anexadas a um conjunto de dados
As etapas a seguir apresentam uma lista de vinculações de tag anexadas diretamente a um conjunto de dados. Esses métodos não retornam tags herdadas dos recursos pai.
Console
No console do Cloud de Confiance , acesse a página BigQuery.
No painel à esquerda, clique em Explorer:

No painel Explorer, expanda o projeto, clique em Conjuntos de dados e selecione um conjunto de dados.
As tags aparecem na seção Informações do conjunto de dados.
bq
Para listar as tags anexadas a um conjunto de dados, use o método
comando bq show.
bq show PROJECT_ID:DATASET_ID
Substitua:
PROJECT_ID: o ID do projeto que contém esse conjunto de dados.DATASET_ID: o ID do conjunto de dados para o qual você quer listar as tags.
gcloud
Para ver uma lista de vinculações de tags anexadas a um recurso, use o comando gcloud resource-manager tags bindings list:
gcloud resource-manager tags bindings list \
--parent=RESOURCE_ID \
--location=LOCATION
Substitua:
RESOURCE_ID: o ID completo do conjunto de dados, incluindo o nome de domínio da API (//bigquery.googleapis.com/) para identificar o tipo de recurso. Por exemplo,//bigquery.googleapis.com/projects/my_project/datasets/my_dataset.LOCATION: o local do conjunto de dados.
O resultado será o seguinte:
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
É possível listar as tags herdadas por conjuntos de dados do BigQuery usando
o gcloud resource-manager tags bindings list. Você também pode usar a opção --filter
no atributo namespacedTagValue para filtrar tags de acordo com
ID do projeto, valor ou chave da tag.
gcloud resource-manager tags bindings list \
--parent=//bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET_ID \
--effective \
--filter=namespacedTagValue:TAG_FILTER
Substitua o seguinte :
PROJECT_ID: o ID do projeto que contém seu conjunto de dados.DATASET_ID: o código do conjunto de dados.TAG_FILTER: especifique um valor para filtrar tags herdadas com base em uma das seguintes opções:Filtre tags por ID do projeto. Por exemplo,
myprojectFiltre os valores de tag especificando o ID permanente ou o nome do namespace do valor de tag. Por exemplo,
tagValues/4567890123ou1234567/my_tag_key/my_tag_value.Filtre chaves de tag especificando o nome de exibição delas. Por exemplo,
tagkey.
Terraform
Use o comando terraform state show para listar os atributos do conjunto de dados, incluindo o campo resource_tags. Execute esse comando
no diretório em que o arquivo de configuração do Terraform do conjunto de dados foi executado.
terraform state show google_bigquery_dataset.default
API
Chame o
Método datasets.get
para receber o recurso do conjunto de dados. O recurso do conjunto de dados inclui tags anexadas ao conjunto de dados no campo resource_tags.
Visualizações
Use a visualização INFORMATION_SCHEMA.SCHEMATA_OPTIONS:
Por exemplo, a consulta a seguir mostra todas as tags anexadas a todos os conjuntos de dados
de uma região. Esta consulta retorna uma tabela com colunas, incluindo schema_name
(os nomes dos conjuntos de dados), option_name (sempre 'tags'),
object_type (sempre ARRAY<STRUCT<STRING, STRING>>) e option_value,
que contém matrizes de objetos STRUCT que representam tags associadas a
cada conjunto de dados. Para conjuntos de dados sem tags atribuídas, a coluna option_value
retorna uma matriz vazia.
SELECT * from region-REGION.INFORMATION_SCHEMA.SCHEMATA_OPTIONS WHERE option_name='tags'
Substitua:
REGION: a região em que seus conjuntos de dados estão localizados.
Remover tags de um conjunto de dados
É possível desanexar uma tag de um recurso excluindo o recurso de vinculação de tags. Se você estiver excluindo uma tag, remova a associação dela com o conjunto de dados antes de fazer isso. Para mais informações, consulte Excluir tags.
Console
No console do Cloud de Confiance , acesse a página BigQuery.
No painel à esquerda, clique em Explorer:

No painel Explorer, expanda o projeto, clique em Conjuntos de dados e selecione um conjunto de dados.
Na seção Informações do conjunto de dados, clique em Editar detalhes.
Na seção Tags, clique em Excluir item ao lado da tag que você quer excluir.
Clique em Salvar.
SQL
Use a
instrução ALTER SCHEMA SET OPTIONS.
O exemplo a seguir remove tags de um conjunto de dados usando o operador -=. Para
desvincular todas as tags de um conjunto de dados, especifique tags=NULL ou tags=[].
No console do Cloud de Confiance , acesse a página BigQuery.
No editor de consultas, digite a seguinte instrução:
ALTER TABLE PROJECT_ID.DATASET_ID.TABLE_ID SET OPTIONS ( tags -= [('TAG_KEY_1', 'TAG_VALUE_1'), ('TAG_KEY_2', 'TAG_VALUE_2')];)
Substitua:
PROJECT_ID: o ID do projeto.DATASET_ID: o ID do conjunto de dados que contém a tabela.TABLE_ID: o nome da tabela de que você está desvinculando as tags.TAG_KEY_1: o nome da chave com namespace da primeira tag que você quer desanexar, por exemplo,'my-project/env'ou'556741164180/department'.TAG_VALUE_1: o nome abreviado do valor da tag que você quer desanexar, por exemplo,'prod'ou'sales'.TAG_KEY_2: o nome da chave com namespace da segunda tag que você está desvinculando.TAG_VALUE_2: o nome abreviado do valor da segunda tag que você está desvinculando.
Clique em Executar.
Para mais informações sobre como executar consultas, acesse Executar uma consulta interativa.
bq
Use o comando bq update com a sinalização --remove_tags.
bq update \ --remove_tags=REMOVED_TAG \ PROJECT_ID:DATASET_ID
Substitua:
REMOVED_TAG: a tag que você está removendo do conjunto de dados. Várias tags são separadas por vírgulas. Aceita apenas chaves sem pares de valor. Por exemplo,556741164180/env,myProject/department. Cada tag deve ter o nome da chave com namespace.PROJECT_ID: o ID do projeto que contém seu conjunto de dados.DATASET_ID: o ID do conjunto de dados do qual remover as tags. .
Como alternativa, para remover todas as tags de um conjunto de dados, use o método
comando bq update
com a flag --clear_all_tags:
bq update \ --clear_all_tags PROJECT_ID:DATASET_ID
gcloud
Para remover uma tag de um conjunto de dados usando a linha de comando, exclua a vinculação de tag usando o comando gcloud resource-manager tags bindings delete:
gcloud resource-manager tags bindings delete \
--tag-value=TAG_VALUE_NAME \
--parent=RESOURCE_ID \
--location=LOCATION
Substitua:
TAG_VALUE_NAME: o ID permanente ou o nome do namespace do valor da tag a ser removido ,comotagValues/4567890123ou1234567/my_tag_key/my_tag_valueRESOURCE_ID: o ID completo do conjunto de dados, incluindo o nome de domínio da API para identificar o tipo de recurso (//bigquery.googleapis.com/). Por exemplo,//bigquery.googleapis.com/projects/my_project/datasets/my_dataset.LOCATION: o local do conjunto de dados.
Terraform
Remova as tags do campo resource_tags do conjunto de dados e aplique a configuração atualizada usando o recurso google_bigquery_dataset.
API
Chame o
método datasets.get
para receber o recurso do conjunto de dados, incluindo o campo resource_tags. Remova
suas tags do campo resource_tags e transmita o recurso de conjunto de dados atualizado
usando o
método datasets.update.
Tabelas de tags
As seções a seguir descrevem como anexar tags a tabelas novas e atuais, listar tags anexadas a uma tabela e remover tags de uma tabela.
Anexar tags ao criar uma tabela
Depois de criar uma tag, você pode anexá-la a uma nova tabela. É possível anexar somente um valor de tag a uma tabela para qualquer chave de tag. É possível anexar no máximo 50 tags a uma tabela.
Console
No console do Cloud de Confiance , acesse a página BigQuery.
No painel à esquerda, clique em Explorer:

No painel Explorer, expanda o projeto, clique em Conjuntos de dados e selecione um conjunto de dados.
Na seção Informações do conjunto de dados, clique em Criar tabela.
Insira as informações da nova tabela. Para mais detalhes, consulte Criar e usar tabelas.
Abra a seção Tags.
Para aplicar uma tag existente, faça o seguinte:
Clique na seta suspensa ao lado de Selecionar escopo e escolha Escopo atual > Selecionar organização atual ou Selecionar projeto atual.
Ou clique em Selecionar escopo para pesquisar um recurso ou ver uma lista dos recursos atuais.
Em Chave 1 e Valor 1, escolha os valores adequados nas listas.
Para inserir uma nova tag manualmente, faça o seguinte:
Clique na seta suspensa ao lado de Selecionar um escopo e escolha Inserir IDs manualmente > Organização, Projeto ou Tags.
Se você estiver criando uma tag para seu projeto ou organização, na caixa de diálogo, insira o
PROJECT_IDou oORGANIZATION_IDe clique em Salvar.Em Chave 1 e Valor 1, escolha os valores adequados nas listas.
Opcional: para adicionar mais tags à tabela, clique em Adicionar tag e siga as etapas anteriores.
Clique em Criar tabela.
SQL
Use a
instrução CREATE TABLE.
No console do Cloud de Confiance , acesse a página BigQuery.
No editor de consultas, digite a seguinte instrução:
CREATE TABLE PROJECT_ID.DATASET_ID.TABLE_ID OPTIONS ( tags = [('TAG_KEY_1', 'TAG_VALUE_1'), ('TAG_KEY_2', 'TAG_VALUE_2')];)
Substitua:
PROJECT_ID: o ID do projeto.DATASET_ID: o ID do conjunto de dados em que você está criando a tabela.TABLE_ID: o nome da nova tabela.TAG_KEY_1: o nome da chave com namespace que você quer definir como a primeira tag na tabela, por exemplo,'my-project/env'ou'556741164180/department'.TAG_VALUE_1: o nome abreviado do valor da tag, por exemplo,'prod'ou'sales'.TAG_KEY_2: o nome da chave com namespace da segunda tag.TAG_VALUE_2: o nome abreviado do valor da segunda tag.
Clique em Executar.
Para mais informações sobre como executar consultas, acesse Executar uma consulta interativa.
bq
Use o comando bq mk --table com a sinalização --add_tags.
bq mk --table \ --schema=SCHEMA \ --add_tags=TAG \ PROJECT_ID:DATASET_ID.TABLE_ID
Substitua:
SCHEMA: a definição do esquema in-line.TAG: a tag que você está anexando à nova tabela. Várias tags são separadas por vírgulas. Por exemplo,556741164180/env:prod,myProject/department:sales. Cada tag precisa ter o nome da chave com namespace e o nome curto do valor.PROJECT_ID: o ID do projeto em que você está criando uma tabela.DATASET_ID: o ID do conjunto de dados em que você está criando uma tabela.TABLE_ID: o ID da nova tabela.
Terraform
Use o
recurso
google_bigquery_table.
Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
O exemplo a seguir cria uma tabela chamada mytable e anexa tags a ela preenchendo o campo resource_tags:
Para aplicar a configuração do Terraform em um Cloud de Confiance projeto, siga as etapas nas seções a seguir.
Preparar o Cloud Shell
- Inicie o Cloud Shell.
-
Defina o projeto Cloud de Confiance padrão em que você quer aplicar as configurações do Terraform.
Você só precisa executar esse comando uma vez por projeto, e ele pode ser executado em qualquer diretório.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
As variáveis de ambiente serão substituídas se você definir valores explícitos no arquivo de configuração do Terraform.
Preparar o diretório
Cada arquivo de configuração do Terraform precisa ter o próprio diretório, também chamado de módulo raiz.
-
No Cloud Shell, crie um diretório e um novo
arquivo dentro dele. O nome do arquivo precisa ter a extensão
.tf, por exemplo,main.tf. Neste tutorial, o arquivo é chamado demain.tf.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Se você estiver seguindo um tutorial, poderá copiar o exemplo de código em cada seção ou etapa.
Copie o exemplo de código no
main.tfrecém-criado.Se preferir, copie o código do GitHub. Isso é recomendado quando o snippet do Terraform faz parte de uma solução de ponta a ponta.
- Revise e modifique os parâmetros de amostra para aplicar ao seu ambiente.
- Salve as alterações.
-
Inicialize o Terraform. Você só precisa fazer isso uma vez por diretório.
terraform init
Opcionalmente, para usar a versão mais recente do provedor do Google, inclua a opção
-upgrade:terraform init -upgrade
Aplique as alterações
-
Revise a configuração e verifique se os recursos que o Terraform vai criar ou
atualizar correspondem às suas expectativas:
terraform plan
Faça as correções necessárias na configuração.
-
Para aplicar a configuração do Terraform, execute o comando a seguir e digite
yesno prompt:terraform apply
Aguarde até que o Terraform exiba a mensagem "Apply complete!".
- Abra seu Cloud de Confiance projeto para conferir os resultados. No console do Cloud de Confiance , navegue até seus recursos na UI para verificar se foram criados ou atualizados pelo Terraform.
API
Chame o método tables.insert com um recurso de tabela definido e inclua as tags no campo resource_tags.
Anexar tags a uma tabela
Depois de criar uma tag, você pode anexá-la a uma tabela já existente. É possível anexar somente um valor de tag a uma tabela para qualquer chave de tag.
Console
No console do Cloud de Confiance , acesse a página BigQuery.
No painel à esquerda, clique em Explorer:

No painel Explorer, expanda seu projeto e clique em Conjuntos de dados.
Clique em Visão geral > Tabelas e selecione uma tabela.
Clique na guia Detalhes e em Editar detalhes.
Abra a seção Tags.
Para aplicar uma tag existente, faça o seguinte:
Clique na seta suspensa ao lado de Selecionar escopo e escolha Escopo atual > Selecionar organização atual ou Selecionar projeto atual.
Ou clique em Selecionar escopo para pesquisar um recurso ou ver uma lista dos recursos atuais.
Em Chave 1 e Valor 1, escolha os valores adequados nas listas.
Para inserir uma nova tag manualmente, faça o seguinte:
Clique na seta suspensa ao lado de Selecionar um escopo e escolha Inserir IDs manualmente > Organização, Projeto ou Tags.
Se você estiver criando uma tag para seu projeto ou organização, na caixa de diálogo, insira o
PROJECT_IDou oORGANIZATION_IDe clique em Salvar.Em Chave 1 e Valor 1, escolha os valores adequados nas listas.
Opcional: para adicionar mais tags à tabela, clique em Adicionar tag e siga as etapas anteriores.
Clique em Salvar.
SQL
Use a
instrução ALTER TABLE SET OPTIONS.
O exemplo a seguir substitui todas as tags de uma tabela atual.
No console do Cloud de Confiance , acesse a página BigQuery.
No editor de consultas, digite a seguinte instrução:
ALTER TABLE PROJECT_ID.DATASET_ID.TABLE_ID SET OPTIONS ( tags = [('TAG_KEY_1', 'TAG_VALUE_1'), ('TAG_KEY_2', 'TAG_VALUE_2')];)
Substitua:
PROJECT_ID: o ID do projeto.DATASET_ID: o ID do conjunto de dados que contém a tabela.TABLE_ID: o nome da tabela que você está marcando.TAG_KEY_1: o nome da chave com namespace que você quer definir como a primeira tag na tabela, por exemplo,'my-project/env'ou'556741164180/department'.TAG_VALUE_1: o nome abreviado do valor da tag, por exemplo,'prod'ou'sales'.TAG_KEY_2: o nome da chave com namespace da segunda tag.TAG_VALUE_2: o nome abreviado do valor da segunda tag.
Clique em Executar.
Para mais informações sobre como executar consultas, acesse Executar uma consulta interativa.
O exemplo a seguir usa o operador += para anexar uma tag a uma tabela sem substituir as tags atuais. Se uma tag tiver a mesma chave, ela será substituída.
No console do Cloud de Confiance , acesse a página BigQuery.
No editor de consultas, digite a seguinte instrução:
ALTER TABLE PROJECT_ID.DATASET_ID.TABLE_ID SET OPTIONS ( tags += [('TAG_KEY_1', 'TAG_VALUE_1'), ('TAG_KEY_2', 'TAG_VALUE_2')];)
Substitua:
PROJECT_ID: o ID do projeto.DATASET_ID: o ID do conjunto de dados que contém a tabela.TABLE_ID: o nome da tabela que você está marcando.TAG_KEY_1: o nome da chave com namespace que você quer definir como a primeira tag na tabela, por exemplo,'my-project/env'ou'556741164180/department'.TAG_VALUE_1: o nome abreviado do valor da tag, por exemplo,'prod'ou'sales'.TAG_KEY_2: o nome da chave com namespace da segunda tag.TAG_VALUE_2: o nome abreviado do valor da segunda tag.
Clique em Executar.
Para mais informações sobre como executar consultas, acesse Executar uma consulta interativa.
bq
Use o comando bq update com a sinalização --add_tags.
bq update \ --add_tags=TAG \ PROJECT_ID:DATASET_ID.TABLE_ID
Substitua:
TAG: a tag que você está anexando à tabela. Várias tags são separadas por vírgulas. Por exemplo,556741164180/env:prod,myProject/department:sales. Cada tag precisa ter o nome da chave com namespace e o nome curto do valor.PROJECT_ID: o ID do projeto que contém seus artefatos.DATASET_ID: o ID do conjunto de dados que contém a tabela.TABLE_ID: o ID da tabela que você está atualizando.
gcloud
Para anexar uma tag a uma tabela usando a linha de comando, crie um recurso de vinculação de tag usando o comando gcloud resource-manager tags bindings create:
gcloud resource-manager tags bindings create \
--tag-value=TAG_VALUE_NAME \
--parent=RESOURCE_ID \
--location=LOCATION
Substitua:
TAG_VALUE_NAME: o ID permanente ou o nome do namespace do valor da tag a ser anexado, comotagValues/4567890123ou1234567/my_tag_key/my_tag_valueRESOURCE_ID: o ID completo da tabela, incluindo o nome de domínio da API (//bigquery.googleapis.com/) para identificar o tipo de recurso. Exemplo://bigquery.googleapis.com/projects/my_project/datasets/my_dataset/tables/my_table.LOCATION: o local da sua tabela.
Terraform
Adicione tags ao campo resource_tags da tabela e aplique a configuração atualizada usando o recurso google_bigquery_table. Para
mais informações, consulte o exemplo do Terraform em
Anexar tags ao criar uma nova tabela.
API
Chame o método tables.update com um recurso de tabela definido e inclua as tags no campo resource_tags.
Listar tags anexadas a uma tabela
É possível listar as tags anexadas diretamente a uma tabela. Esse processo não lista as tags herdadas dos recursos pai.
Console
No console do Cloud de Confiance , acesse a página BigQuery.
No painel à esquerda, clique em Explorer:

No painel Explorer, expanda seu projeto e clique em Conjuntos de dados.
Clique em Visão geral > Tabelas e selecione uma tabela.
As tags aparecem na guia Detalhes.
bq
Use o
comando bq show
e procure a coluna tags. Se não houver tags na tabela, a coluna tags não será exibida.
bq show \ PROJECT_ID:DATASET_ID.TABLE_ID
Substitua:
PROJECT_ID: o ID do projeto que contém seus artefatos.DATASET_ID: o ID do conjunto de dados que contém a tabela.TABLE_ID: o ID da tabela.
gcloud
Para ver uma lista de vinculações de tags anexadas a um recurso, use o comando gcloud resource-manager tags bindings list:
gcloud resource-manager tags bindings list \
--parent=RESOURCE_ID \
--location=LOCATION
Substitua:
RESOURCE_ID: o ID completo da tabela, incluindo o nome de domínio da API (//bigquery.googleapis.com/) para identificar o tipo de recurso. Por exemplo,//bigquery.googleapis.com/projects/my_project/datasets/my_dataset/tables/my_table.LOCATION: o local do conjunto de dados.
O resultado será o seguinte:
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
É possível listar as tags herdadas por tabelas do BigQuery usando
o gcloud resource-manager tags bindings list. Você também pode usar a opção --filter
no atributo namespacedTagValue para filtrar tags de acordo com
ID do projeto, valor ou chave da tag.
gcloud resource-manager tags bindings list \
--parent=//bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET_ID/tables/TABLE_ID \
--effective \
--filter=namespacedTagValue:TAG_FILTER
Substitua o seguinte :
PROJECT_ID: o ID do projeto que contém seu conjunto de dados.DATASET_ID: o código do conjunto de dados.TAG_FILTER: especifique um valor para filtrar tags herdadas com base em uma das seguintes opções:Filtre tags por ID do projeto. Por exemplo,
myprojectFiltre os valores de tag especificando o ID permanente ou o nome do namespace do valor de tag. Por exemplo,
tagValues/4567890123ou1234567/my_tag_key/my_tag_value.Filtre chaves de tag especificando o nome de exibição delas. Por exemplo,
tagkey.
Terraform
Use o comando terraform state show para listar os atributos da tabela, incluindo o campo resource_tags. Execute esse comando
no diretório em que o arquivo de configuração do Terraform da tabela foi
executado.
terraform state show google_bigquery_table.default
API
Chame o
método tables.get
com um recurso de tabela definido
e procure o campo resource_tags.
Visualizações
Use a visualização INFORMATION_SCHEMA.TABLE_OPTIONS:
Por exemplo, a consulta a seguir mostra todas as tags anexadas a todas as tabelas em um
conjunto de dados. Esta consulta retorna uma tabela com colunas, incluindo schema_name
(o nome dos conjuntos de dados), option_name (sempre 'tags'),
object_type (sempre ARRAY<STRUCT<STRING, STRING>>) e option_value,
que contém matrizes de objetos STRUCT que representam tags associadas a
cada conjunto de dados. Para tabelas de dados sem tags atribuídas, a coluna option_value
retorna uma matriz vazia.
SELECT * from DATASET_ID.INFORMATION_SCHEMA.TABLE_OPTIONS WHERE option_name='tags'
Substitua DATASET_ID pelo ID do conjunto de dados
que contém sua tabela.
Remover tags de uma tabela
Para remover uma associação de tag de uma tabela, exclua a vinculação. Se você estiver excluindo uma tag, remova-a da tabela antes de fazer isso. Para mais informações, consulte Excluir tags.
Console
No console do Cloud de Confiance , acesse a página BigQuery.
No painel à esquerda, clique em Explorer:

No painel Explorer, expanda seu projeto e clique em Conjuntos de dados.
Clique em Visão geral > Tabelas e selecione uma tabela.
Clique na guia Detalhes e em Editar detalhes.
Na seção Tags, clique em Excluir item ao lado da tag que você quer excluir.
Clique em Salvar.
SQL
Use a
instrução ALTER TABLE SET OPTIONS.
O exemplo a seguir remove tags de uma tabela usando o operador -=. Para remover todas as tags de uma tabela, especifique tags=NULL ou tags=[].
No console do Cloud de Confiance , acesse a página BigQuery.
No editor de consultas, digite a seguinte instrução:
ALTER TABLE PROJECT_ID.DATASET_ID.TABLE_ID SET OPTIONS ( tags -= [('TAG_KEY_1', 'TAG_VALUE_1'), ('TAG_KEY_2', 'TAG_VALUE_2')];)
Substitua:
PROJECT_ID: o ID do projeto.DATASET_ID: o ID do conjunto de dados que contém a tabela.TABLE_ID: o nome da tabela de que você está desvinculando as tags.TAG_KEY_1: o nome da chave com namespace da primeira tag que você quer desanexar, por exemplo,'my-project/env'ou'556741164180/department'.TAG_VALUE_1: o nome abreviado do valor da tag que você quer desanexar, por exemplo,'prod'ou'sales'.TAG_KEY_2: o nome da chave com namespace da segunda tag que você está desvinculando.TAG_VALUE_2: o nome abreviado do valor da segunda tag que você está desvinculando.
Clique em Executar.
Para mais informações sobre como executar consultas, acesse Executar uma consulta interativa.
bq
Para remover algumas tags de uma tabela, use o comando bq update com a sinalização --remove_tags:
bq update \ --remove_tags=TAG_KEYS \ PROJECT_ID:DATASET_ID.TABLE_ID
Substitua:
TAG_KEYS: as chaves de tag que você está removendo da tabela, separados por vírgulas. Por exemplo,556741164180/env,myProject/department. Cada chave de tag precisa ter o nome de chave com namespace.PROJECT_ID: o ID do projeto que contém seus artefatos.DATASET_ID: o ID do conjunto de dados que contém a tabela.TABLE_ID: o ID da tabela que você está atualizando.
Para remover todas as tags de uma tabela, use o comando bq update com a sinalização --clear_all_tags:
bq update \ --clear_all_tags \ PROJECT_ID:DATASET_ID.TABLE_ID
gcloud
Para remover uma associação de tag de uma tabela usando a linha de comando, exclua
a vinculação de tags usando
comando gcloud resource-manager tags bindings delete:
gcloud resource-manager tags bindings delete \
--tag-value=TAG_VALUE_NAME \
--parent=RESOURCE_ID \
--location=LOCATION
Substitua:
TAG_VALUE_NAME: o ID permanente ou o nome do namespace do valor da tag a ser excluído, comotagValues/4567890123ou1234567/my_tag_key/my_tag_valueRESOURCE_ID: o ID completo da tabela, incluindo o nome de domínio da API (//bigquery.googleapis.com/) para identificar o tipo de recurso. Por exemplo,//bigquery.googleapis.com/projects/my_project/datasets/my_dataset/tables/my_table.LOCATION: o local do conjunto de dados.
Terraform
Remova as tags do campo resource_tags da tabela e aplique
a configuração atualizada usando o recurso google_bigquery_table.
API
Chame o
método tables.update
com um recurso de tabela definido
e remova as tags no campo resource_tags. Para remover todas as tags, remova o campo resource_tags.
Adicionar tags a outros recursos semelhantes a tabelas
Da mesma forma, é possível adicionar tags a visualizações, visualizações materializadas, clones e snapshots do BigQuery.
Adicionar tags às colunas
É possível adicionar tags de governança de dados às colunas de tabelas para controle de acesso no nível da coluna e mascaramento de dados.
Excluir tags
Não é possível excluir uma tag se ela for referenciada por uma tabela, visualização ou conjunto de dados. Exclua todos os recursos atuais de vinculação de tags antes de excluir a chave ou o valor da tag. Para excluir chaves e valores de tags, consulte Como excluir tags.
Exemplo
Digamos que você seja um administrador de uma organização. Todos os seus analistas de dados são membros do grupo analytics@example.com, que tem o papel do IAM de Leitor de dados do BigQuery no projeto userData. Um analista de dados estagiário é contratado e, de acordo com a política da empresa, precisa ter permissão apenas para visualizar o conjunto de dados anonymousData no projeto userData.
É possível controlar o acesso dele usando tags.
Crie uma tag com a chave
employee_typee o valorintern:
No console do Cloud de Confiance , acesse a página IAM.
Localize a linha que contém o estagiário a quem você quer restringir o acesso ao conjunto de dados e clique em Editar principal nessa linha.
No menu Papel, selecione Leitor de dados do BigQuery.
Clique em Adicionar condição.
Nos campos Título e Descrição, insira valores que descrevem a condição de tag do IAM que você quer criar.
Na guia Criador de condições, clique em Adicionar.
No menu Tipo de condição, selecione Recurso e, em seguida, selecione Tag.
No menu Operador, selecione tem valor.
No campo Caminho do valor, insira o caminho do valor da tag no formato
ORGANIZATION/TAG_KEY/TAG_VALUE. Por exemplo,example.org/employee_type/intern.
Essa condição de tag do IAM restringe o acesso do estagiário aos conjuntos de dados que têm a tag
intern.Para salvar a condição de tag, clique em Salvar.
Para salvar as mudanças feitas no painel Editar permissões, clique em Salvar.
Para anexar o valor da tag
internao conjunto de dadosanonymousData, use a linha de comando para executar o comandogcloud resource-manager tags bindings create. Exemplo:gcloud resource-manager tags bindings create \ --tag-value=tagValues/4567890123 \ --parent=//bigquery.googleapis.com/projects/userData/datasets/anonymousData \ --location=US
Controlar o acesso a colunas com tags de governança de dados
É possível aplicar a segurança no nível da coluna e o mascaramento de dados no BigQuery usando tags de governança de dados. As tags de governança de dados são um tipo de tag do Resource Manager que pode ser anexada a colunas sensíveis e usada em políticas de dados do BigQuery para conceder acesso condicional aos usuários.
Configure a segurança no nível da coluna criando tags de governança de dados e anexando-as a colunas do BigQuery. Em seguida, crie políticas de dados do BigQuery que referenciem essas tags. Essas políticas aplicam regras de mascaramento de dados ou concedem acesso a dados brutos para usuários específicos, garantindo que apenas principais autorizados visualizem dados sensíveis.
Para mais informações, consulte Introdução ao controle de acesso no nível da coluna e Introdução ao mascaramento de dados.
Antes de começar a usar tags de governança
-
Instale a CLI do Google Cloud.
-
Configure a CLI gcloud para usar sua identidade federada.
Para mais informações, consulte Fazer login na CLI gcloud com sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init - Para criar e gerenciar tags de governança de dados, use a edição Enterprise do BigQuery.
Papéis necessários para tags de governança de dados
Para receber as permissões necessárias para controlar o acesso a colunas com tags de governança de dados, peça ao administrador para conceder a você os seguintes papéis do IAM:
-
Crie tags de governança de dados:
- Administrador de tags (
roles/resourcemanager.tagAdmin) no projeto ou na organização - Leitor da organização (
roles/resourcemanager.organizationViewer) na organização
- Administrador de tags (
-
Anexe ou remova tags das colunas:
- Proprietário de dados do BigQuery (
roles/bigquery.dataOwner) na tabela - Usuário de tag (
roles/resourcemanager.tagUser) na organização, no projeto ou no valor da tag
- Proprietário de dados do BigQuery (
-
Criar e gerenciar políticas de dados:
Administrador do BigQuery (
roles/bigquerydatapolicy.admin) no projeto
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias usando papéis personalizados ou outros papéis predefinidos.
Criar tags de governança de dados
Crie a chave e os valores da tag de governança de dados.
Criar uma chave de tag
Para criar uma chave para uma tag de governança de dados, defina o campo purpose como
DATA_GOVERNANCE ao criar a chave de tag. Ao definir essa finalidade, a tag é categorizada para segurança no nível da coluna ou mascaramento de dados e é diferenciada das tags de recursos gerais no BigQuery.
gcloud
Execute o comando
gcloud resource-manager tags keys create:gcloud resource-manager tags keys create TAG_KEY \ --parent=projects/PROJECT_ID \ --purpose=DATA_GOVERNANCESubstitua:
TAG_KEY: o nome abreviado da chave de tag.PROJECT_ID: o ID do seu Cloud de Confiance by S3NS projeto. Para fornecer uma organização em vez de um projeto, useorganizations/ORGANIZATION_IDem vez deprojects/PROJECT_ID.
API
Envie uma solicitação
POSTpara o endpointtagKeys:curl --request POST \ "https://cloudresourcemanager.googleapis.com/v3/tagKeys" \ --header "Authorization: Bearer $(gcloud auth print-access-token)" \ --header 'Accept: application/json' \ --header 'Content-Type: application/json' \ --data '{"shortName":"TAG_KEY","parent":"projects/PROJECT_ID","purpose":"DATA_GOVERNANCE"}' \ --compressedSubstitua:
TAG_KEY: o nome abreviado da chave de tag.PROJECT_ID: o ID do seu Cloud de Confiance by S3NS projeto. Para fornecer uma organização em vez de um projeto, useorganizations/ORGANIZATION_IDem vez deprojects/PROJECT_ID.
Criar um valor de tag
Para adicionar um ou mais valores a uma chave de tag, siga estas etapas.
gcloud
Para encontrar o nome do namespace da chave de tag, execute o comando
gcloud resource-manager tags keys list:gcloud resource-manager tags keys list --parent=projects/PROJECT_IDCrie um novo valor executando o comando
gcloud resource-manager tags values create:gcloud resource-manager tags values create TAG_VALUE \ --parent=PROJECT_ID/TAG_KEYSubstitua:
TAG_VALUE: um nome abreviado especificado pelo usuário do valor da tag.PROJECT_ID: o ID do seu Cloud de Confiance by S3NS projeto. Para fornecer uma organização em vez de um projeto, use seuORGANIZATION_ID.
API
Encontre o nome com namespace da chave de tag:
curl --request GET \ "https://cloudresourcemanager.googleapis.com/v3/tagKeys/namespaced?name=PROJECT_ID/TAG_KEY" \ --header "Authorization: Bearer $(gcloud auth print-access-token)" \ --header 'Accept: application/json'A resposta contém o campo
name, por exemplo,tagKeys/4567890123.Envie uma solicitação
POSTpara o endpointtagValuescom o nome da chave da tag:curl --request POST \ "https://cloudresourcemanager.googleapis.com/v3/tagValues" \ --header "Authorization: Bearer $(gcloud auth print-access-token)" \ --header 'Accept: application/json' \ --header 'Content-Type: application/json' \ --data '{"shortName":"TAG_VALUE","parent":"tagKeys/TAG_KEY_ID"}' \ --compressedSubstitua:
TAG_VALUE: um nome abreviado especificado pelo usuário do valor da tag.PROJECT_ID: o ID do seu Cloud de Confiance by S3NS projeto. Para fornecer uma organização em vez de um projeto, use seuORGANIZATION_ID.TAG_KEY_ID: o nome do namespace da chave de tag da etapa 1. Por exemplo, se o nome da chave de tag fortagKeys/4567890123, o ID da chave de tag será4567890123.
Criar valores de tag hierárquicos
Também é possível criar um valor de tag filho que seja subordinado a um valor de tag e criar uma árvore hierárquica de valores de tag de governança de dados. A hierarquia pode ter cinco níveis de profundidade, como mostrado no diagrama a seguir:
gcloud
Para criar um valor de tag filho, execute o comando
gcloud resource-manager tags values create
e especifique um valor de tag pai na flag --parent:
gcloud resource-manager tags values create CHILD_TAG_VALUE \
--parent=PROJECT_ID/TAG_KEY/PARENT_TAG_VALUE
Substitua:
CHILD_TAG_VALUE: o nome abreviado do valor da tag filha que você está criando.PROJECT_ID: o ID do seu projeto do Cloud de Confiance by S3NS . Para fornecer uma organização em vez de um projeto, use seuORGANIZATION_ID.TAG_KEY: o nome abreviado da chave de tag que é o pai do valor da tag.PARENT_TAG_VALUE: o nome abreviado do valor da tag principal.
API
Para criar um valor de tag filho, use o nome do recurso de valor de tag do
pai (por exemplo, tagValues/123456789012) no campo parent:
curl --request POST \
"https://cloudresourcemanager.googleapis.com/v3/tagValues" \
--header "Authorization: Bearer $(gcloud auth print-access-token)" \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"shortName":"CHILD_TAG_VALUE","parent":"tagValues/PARENT_TAG_VALUE_ID"}' \
--compressed
Substitua:
CHILD_TAG_VALUE: o nome abreviado do valor da tag filha que você está criando.PARENT_TAG_VALUE_ID: o ID numérico do valor da tag principal.
Anexar tags de governança de dados a colunas do BigQuery
Anexe as tags de governança de dados criadas às colunas do BigQuery que você quer proteger.
SQL
Criar uma tabela com uma coluna de tags
Para anexar tags de governança de dados ao criar uma tabela, use a instrução
CREATE TABLE. Defina a opção data_governance_tags na coluna para especificar a tag.
CREATE TABLE PROJECT_ID.DATASET_ID.TABLE_ID (
COLUMN_NAME INT64 OPTIONS (data_governance_tags=[("PROJECT_ID/TAG_KEY", "TAG_VALUE")])
);
Substitua:
PROJECT_ID: o ID do seu projeto do Cloud de Confiance by S3NS . Para fornecer uma organização em vez de um projeto como pai da sua tag, use seuORGANIZATION_IDem vez do formato de chave de tag (ORGANIZATION_ID/TAG_KEY).DATASET_ID: o ID do conjunto de dados em que a tabela está localizada.TABLE_ID: o ID da tabela que você está criando.COLUMN_NAME: o nome da coluna que você quer marcar.TAG_KEY: a chave de tag que você quer aplicar.TAG_VALUE: o valor da tag que você quer aplicar.
Adicionar uma tag a uma tabela
Para anexar tags de governança de dados a uma coluna em uma tabela existente, use a instrução
ALTER TABLE
para definir a opção data_governance_tags na coluna.
ALTER TABLE PROJECT_ID.DATASET_ID.TABLE_ID
ALTER COLUMN COLUMN_NAME SET OPTIONS (data_governance_tags=[("PROJECT_ID/TAG_KEY", "TAG_VALUE")]);
CLI bq
Criar uma tabela com uma coluna de tags
Para criar um arquivo de esquema JSON local que defina a tag, execute o comando
bq mk:bq mk \ --table \ --project_id=PROJECT_ID \ --description="description of my table" \ --schema=SCHEMA_FILE.json \ DATASET_ID.TABLE_IDSubstitua:
PROJECT_ID: o ID do seu Cloud de Confiance by S3NS projeto. Para fornecer uma organização em vez de um projeto como o pai da tag, useORGANIZATION_IDem vez do formato de chave de tag (ORGANIZATION_ID/TAG_KEY).DATASET_ID: o ID do conjunto de dados em que a tabela está localizada.TABLE_ID: o ID da tabela que você está criando.
Adicionar uma tag a uma tabela
Para adicionar uma tag a uma tabela, primeiro exporte o esquema dela para um arquivo local:
bq show \ --project_id=PROJECT_ID \ --schema \ --format=prettyjson \ DATASET_ID.TABLE_ID > SCHEMA_FILE.jsonEdite o arquivo de esquema para adicionar o objeto
dataGovernanceTagsInfoà coluna. Exemplo:[ { "description": "my sensitive column", "mode": "NULLABLE", "name": "Column_X", "type": "INT64", "dataGovernanceTagsInfo": { "dataGovernanceTags": { "PROJECT_ID/TAG_KEY": "TAG_VALUE" } } }, { "mode": "REQUIRED", "name": "column2", "type": "FLOAT" } ]Atualize a tabela para anexar tags à coluna sensível com o comando
bq update:bq update \ --project_id=PROJECT_ID \ --schema=SCHEMA_FILE.json \ DATASET_ID.TABLE_IDTambém é possível usar o comando
bq updatepara remover tags atuais e anexar novas tags.
API
Criar uma tabela com uma coluna de tags
Use o método tables.insert. Inclua o campo dataGovernanceTagsInfo no corpo da solicitação.
```json
{
"schema": {
"fields": [
{
"name": "Column_X",
"type": "INT64",
"description": "sensitive column",
"dataGovernanceTagsInfo": {
"dataGovernanceTags": {
"PROJECT_ID/TAG_KEY": "TAG_VALUE"
}
}
}
]
}
}
```
Adicionar uma tag a uma tabela
Recupere o recurso de tabela atual com o método
tables.get.Modifique o recurso de tabela para incluir o campo
dataGovernanceTagsInfoda coluna de destino.Chame o método
tables.updateoutables.patchcom o recurso de tabela atualizado.
Criar e gerenciar políticas de dados
Crie e gerencie políticas de dados do BigQuery que referenciam tags de governança de dados para aplicar regras de mascaramento ou políticas de acesso aos dados brutos.
Depois que uma política de dados é criada para uma coluna marcada, somente os usuários especificados nessa política podem acessar a coluna, desde que também tenham acesso à tabela. Todos os outros usuários têm o acesso negado.
Criar políticas de dados
API
Crie uma política de dados que use uma regra de mascaramento SHA256 predefinida ou uma política de acesso aos dados brutos.
Criar uma política de dados com uma regra de mascaramento SHA256 predefinida
Para criar uma política de dados com uma regra de mascaramento SHA256 predefinida, envie uma
solicitação POST para o endpoint dataPolicies:
curl --request POST \
"https://bigquerydatapolicy.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/dataPolicies" \
--header "Authorization: Bearer $(gcloud auth print-access-token)" \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"dataPolicy":{"dataPolicyType":"DATA_MASKING_POLICY","dataMaskingPolicy":{"predefinedExpression":"SHA256"},"grantees": ["principal://goog/subject/EMAIL_ADDRESS"],"dataGovernanceTag":{"key":"PROJECT_ID/TAG_KEY","value":"TAG_VALUE"}},"dataPolicyId":"POLICY_ID"}' \
--compressed
Substitua:
PROJECT_ID: o ID do seu Cloud de Confiance by S3NS projeto. Para fornecer uma organização em vez de um projeto como o pai da sua tag, use seuORGANIZATION_IDem vez do formatodataGovernanceTag.key(ORGANIZATION_ID/TAG_KEY).LOCATION: a região em que você está criando a política de dados. Para mais informações, consulte locais da política de dados.EMAIL_ADDRESS: o endereço de e-mail do usuário a quem o acesso será concedido.TAG_KEY: o nome abreviado da chave de tag.TAG_VALUE: um nome abreviado especificado pelo usuário do valor da tag.POLICY_ID: o ID da política de dados.
Criar uma política de acesso aos dados brutos
Para criar uma política de acesso aos dados brutos, defina dataPolicyType como RAW_DATA_ACCESS_POLICY:
curl --request POST \
"https://bigquerydatapolicy.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/dataPolicies" \
--header "Authorization: Bearer $(gcloud auth print-access-token)" \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"dataPolicy":{"dataPolicyType":"RAW_DATA_ACCESS_POLICY","grantees": ["principal://goog/subject/EMAIL_ADDRESS"],"dataGovernanceTag":{"key":"PROJECT_ID/TAG_KEY","value":"TAG_VALUE"}},"dataPolicyId":"POLICY_ID"}' \
--compressed
Atualizar políticas de dados
Atualize uma política de dados para conceder acesso a mais usuários.
API
Para adicionar usuários atualizando diretamente uma política, primeiro receba a política atual e o
etagdela:curl --request GET \ "https://bigquerydatapolicy.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/dataPolicies/POLICY_ID" \ --header "Authorization: Bearer $(gcloud auth print-access-token)" \ --header 'Accept: application/json' \ --header 'Content-Type: application/json' \ --compressedEnvie uma solicitação
PATCHcom a lista atualizada de beneficiários e oetagda etapa anterior:curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d '{ "grantees": ["principal://goog/subject/user1@example.com","principal://iam.googleapis.com/projects/-/serviceAccounts/SA_EMAIL_ADDRESS"], "etag": "ETAG" }' \ "https://bigquerydatapolicy.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/dataPolicies/POLICY_ID?updateMask=grantees"Substitua
ETAGpelo valoretagretornado pela solicitaçãoGETna etapa anterior.Como alternativa, use o método
addGranteespara adicionar usuários a uma política:curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d '{ "grantees": ["principal://goog/subject/user1@example.com","principal://iam.googleapis.com/projects/-/serviceAccounts/SA_EMAIL_ADDRESS"] }' \ "https://bigquerydatapolicy.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/dataPolicies/POLICY_ID:addGrantees"Para remover usuários de uma política, use o método
removeGrantees:curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d '{ "grantees": ["principal://goog/subject/user1@example.com","principal://iam.googleapis.com/projects/-/serviceAccounts/SA_EMAIL_ADDRESS"] }' \ "https://bigquerydatapolicy.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/dataPolicies/POLICY_ID:removeGrantees"
Excluir políticas de dados
API
Para excluir uma política de dados, envie uma solicitação DELETE ao endpoint dataPolicies:
curl --request DELETE \
"https://bigquerydatapolicy.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/dataPolicies/POLICY_ID" \
--header "Authorization: Bearer $(gcloud auth print-access-token)" \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--compressed
Listar políticas de dados
API
Para listar políticas de dados que fazem referência a uma chave de tag, envie uma solicitação GET para o
endpoint dataPolicies com um parâmetro filter:
curl --request GET \
"https://bigquerydatapolicy.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/dataPolicies?filter=dataGovernanceTag:PROJECT_ID/TAG_KEY" \
--header "Authorization: Bearer $(gcloud auth print-access-token)" \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--compressed
Interações com outros recursos
Esta seção descreve como as tags de governança de dados interagem com outros recursos do BigQuery.
| Recurso | Interação |
|---|---|
| Esquema de informações | As tags de governança de dados anexadas às colunas são incluídas nas visualizações INFORMATION_SCHEMA.COLUMNS e INFORMATION_SCHEMA.COLUMN_FIELD_PATHS. |
| Cópia da tabela | As cópias de tabelas entre regiões estão desativadas para tabelas que têm recursos de segurança no nível da coluna, incluindo tabelas com tags de governança de dados. |
| Viagem no tempo | O acesso a dados históricos de tabelas é regido pelas políticas e tags anexadas a elas. |
Configurar um projeto padrão de política de dados
Quando você acessa colunas protegidas por tags de governança de dados, o BigQuery avalia por padrão apenas as políticas de dados no projeto em que a tabela está localizada. As políticas de dados definidas em outros projetos não se aplicam, a menos que um administrador configure um projeto padrão de política de dados no nível da organização.
Se um projeto de política de dados padrão estiver configurado para sua organização, o BigQuery vai avaliar as políticas de dados do projeto da tabela e as do projeto de política de dados padrão ao determinar o acesso à coluna.
Se um usuário estiver sujeito a políticas de dados conflitantes no projeto da tabela e no projeto da política de dados padrão, as políticas de dados no projeto da tabela terão precedência.
Para definir ou conferir a opção default_data_policy_projects no nível da organização usando DDL ou visualizações INFORMATION_SCHEMA, consulte Configurações de gerenciamento de dados na documentação de configuração padrão.
Limitações das tags de governança de dados
- As tabelas do BigQuery Omni não são compatíveis com tags de governança de dados em colunas.
- É possível usar o console Cloud de Confiance by S3NS para ver tags de governança de dados em colunas, mas não para vincular ou desvincular.
- É possível vincular uma tag por coluna e até mil tags exclusivas por tabela.
- Se você consultar uma coluna marcada usando a API BigQuery Storage Read,
chamadas
tabledata.listou tabelas curinga, vai receber um erro de acesso negado a menos que uma política de dados conceda acesso. - Para campos
STRUCT, é possível aplicar tags de governança de dados apenas aos campos de folha. - É possível excluir valores de tag anexados a colunas. Se você excluir um valor de tag, a vinculação de tag vai permanecer na coluna, mas como o valor de tag não existe mais, o acesso à coluna pode ser perdido.
Resolver problemas com tags de governança de dados
Esta seção descreve como resolver problemas comuns ao controlar o acesso a colunas com tags de governança de dados.
Nomes de tag formatados incorretamente
Ao criar tags, você define um nome abreviado (por exemplo, ssn). No entanto, ao anexar tags a colunas no seu esquema ou usá-las em condições, a chave de tag precisa usar o formato com namespace (PROJECT_ID/TAG_KEY ou ORGANIZATION_ID/TAG_KEY), enquanto o valor da tag ainda usa o nome abreviado. Fornecer apenas o nome abreviado da chave de tag gera um erro Invalid tagKey ou Invalid
tagValue.
Aplicação de políticas entre projetos
Por padrão, apenas as políticas de dados do projeto da tabela são avaliadas. As políticas de outros projetos não se aplicam, a menos que um projeto padrão de política de dados seja configurado no nível da organização. Para mais informações sobre como configurar e avaliar políticas entre projetos, consulte Configurar um projeto de política de dados padrão.
A seguir
- Para uma visão geral das tags em Cloud de Confiance by S3NS, consulte Visão geral sobre tags.
- Para mais informações sobre como usar tags, consulte Como criar e gerenciar tags.
- Saiba mais sobre como aplicar políticas em colunas.
- Para informações sobre como controlar o acesso aos recursos do BigQuery com as condições do IAM, consulte Controlar o acesso com as condições do IAM.