Usar o IAM para controlar o acesso a recursos
Neste documento, descrevemos como ver a política de acesso atual de um recurso, como conceder acesso a um recurso e como para revogar o acesso a um recurso.
Para este documento, é preciso conhecer o sistema Identity and Access Management (IAM) no Google Cloud.
Funções exigidas
Para conseguir as permissões necessárias para modificar as políticas do IAM para recursos, peça ao administrador para conceder a você o papel do IAM de Proprietário de dados do BigQuery (roles/bigquery.dataOwner
) no projeto.
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Esse papel predefinido contém as permissões necessárias para modificar as políticas do IAM para recursos. Para conferir as permissões exatas necessárias, expanda a seção Permissões necessárias:
Permissões necessárias
As seguintes permissões são necessárias para modificar as políticas do IAM para recursos:
-
Para ver a política de acesso a um conjunto de dados:
bigquery.datasets.get
-
Para definir a política de acesso de um conjunto de dados:
bigquery.datasets.update
-
Para ver a política de acesso a um conjunto de dados (somente no console do Google Cloud):
bigquery.datasets.getIamPolicy
-
Para definir a política de acesso a um conjunto de dados (somente console):
bigquery.datasets.setIamPolicy
-
Para ver a política de uma tabela ou visualização:
bigquery.tables.getIamPolicy
-
Para definir a política de uma tabela ou visualização:
bigquery.tables.setIamPolicy
-
Para criar a ferramenta bq ou jobs do SQL do BigQuery (opcional):
bigquery.jobs.create
Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.
Ver a política de acesso de um recurso
As seções a seguir descrevem como visualizar as políticas de acesso de diferentes recursos.
Ver a política de acesso de um conjunto de dados
Selecione uma das seguintes opções:
Console
Acessar a página do BigQuery.
No painel Explorer, expanda o projeto e selecione um conjunto de dados.
Clique em > Permissões.
CompartilhamentoAs políticas de acesso ao conjunto de dados aparecem no painel Permissões do conjunto de dados.
bq
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Para receber uma política atual e enviá-la para um arquivo local em JSON, use o comando
bq show
no Cloud Shell:bq show \ --format=prettyjson \ PROJECT_ID:DATASET > PATH_TO_FILE
Substitua:
- PROJECT_ID: ID do projeto
- DATASET: o nome do conjunto de dados
- PATH_TO_FILE: o caminho para o arquivo JSON em sua máquina local.
API
Para conferir a política de acesso de um conjunto de dados, chame o método
datasets.get
com um recurso
dataset
definido.
A política está disponível na propriedade access
do recurso dataset
retornado.
Ver a política de acesso de uma tabela ou visualização
Selecione uma das seguintes opções:
Console
Acessar a página do BigQuery.
No painel Explorer, expanda seu projeto e selecione uma tabela ou visualização.
Clique em
Compartilhar.As políticas de acesso de tabela ou visualização aparecem no painel Compartilhar.
bq
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Para receber uma política de acesso atual e enviá-la para um arquivo local em JSON, use o comando
bq get-iam-policy
no Cloud Shell:bq get-iam-policy \ --table=true \ PROJECT_ID:DATASET.RESOURCE > PATH_TO_FILE
Substitua:
- PROJECT_ID: ID do projeto
- DATASET: o nome do conjunto de dados
- RESOURCE: o nome da tabela ou visualização com a política que você quer ver
- PATH_TO_FILE: o caminho para o arquivo JSON em sua máquina local.
API
Para recuperar a política atual, chame o
método tables.getIamPolicy
.
Permitir acesso a um recurso
As seções a seguir descrevem como conceder acesso a diferentes recursos.
Conceder acesso a um conjunto de dados
Selecione uma das seguintes opções:
Console
Acessar a página do BigQuery.
No painel Explorer, expanda seu projeto e selecione um conjunto de dados para compartilhar.
Clique em > Permissões.
CompartilhamentoClique em
adicionar conta principal.No campo Novos principais, digite um principal..
Na lista Selecionar papel, escolha uma função predefinida ou personalizada..
Clique em Save.
Para retornar às informações do conjunto de dados, clique em Fechar.
SQL
Para conceder aos principais acesso aos conjuntos de dados, use a
instrução DCL GRANT
:
No Console do Google Cloud, acesse a página BigQuery.
No editor de consultas, digite a seguinte instrução:
GRANT `ROLE_LIST` ON SCHEMA RESOURCE_NAME TO "USER_LIST"
Substitua:
ROLE_LIST
: um papel ou uma lista de papéis separados por vírgulas que você queira conceder.RESOURCE_NAME
: o nome do recurso em que você quer conceder a permissão.USER_LIST
: uma lista separada por vírgulas de usuários a que o papel é concedido.Para ver uma lista de formatos válidos, consulte
user_list
.
Clique em
Executar.
Para mais informações sobre como executar consultas, acesse Executar uma consulta interativa.
O exemplo a seguir concede o papel de visualizador de dados no conjunto de dados myDataset
:
GRANT `roles/bigquery.dataViewer`
ON SCHEMA `myProject`.myDataset
TO "user:raha@example-pet-store.com", "user:sasha@example-pet-store.com"
bq
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Para gravar as informações do conjunto de dados existente (incluindo controles de acesso) em um arquivo JSON, use o comando
bq show
:bq show \ --format=prettyjson \ PROJECT_ID:DATASET > PATH_TO_FILE
Substitua:
- PROJECT_ID: ID do projeto
- DATASET: o nome do conjunto de dados
- PATH_TO_FILE: o caminho para o arquivo JSON em sua máquina local.
Faça suas alterações na seção
access
do arquivo JSON. É possível adicionar qualquer uma das entradasspecialGroup
:projectOwners
,projectWriters
,projectReaders
eallAuthenticatedUsers
. Também é possível adicionar qualquer uma das seguintes opções:userByEmail
,groupByEmail
edomain
.Por exemplo, a seção
access
do arquivo JSON de um conjunto de dados tem esta aparência:{ "access": [ { "role": "READER", "specialGroup": "projectReaders" }, { "role": "WRITER", "specialGroup": "projectWriters" }, { "role": "OWNER", "specialGroup": "projectOwners" }, { "role": "READER", "specialGroup": "allAuthenticatedUsers" }, { "role": "READER", "domain": "domain_name" }, { "role": "WRITER", "userByEmail": "user_email" }, { "role": "READER", "groupByEmail": "group_email" } ], ... }
Quando as edições estiverem concluídas, use o comando
bq update
e inclua o arquivo JSON usando a sinalização--source
. Se o conjunto de dados estiver em um projeto diferente do padrão, adicione o ID do projeto ao nome do conjunto de dados no seguinte formato:PROJECT_ID:DATASET
.bq update \ --source PATH_TO_FILE \ PROJECT_ID:DATASET
Para verificar as alterações no controle de acesso, insira o comando
bq show
novamente sem gravar as informações em um arquivo.bq show --format=prettyjson PROJECT_ID:DATASET
Terraform
Use os recursos google_bigquery_dataset_iam
para atualizar o acesso a um conjunto de dados.
Definir a política de acesso para um conjunto de dados
O exemplo a seguir mostra como usar o recurso google_bigquery_dataset_iam_policy
para definir a política do IAM para o conjunto de dados mydataset
. Isso substitui qualquer política existente já anexada ao conjunto de dados:
# This file sets the IAM policy for the dataset created by # https://github.com/terraform-google-modules/terraform-docs-samples/blob/main/bigquery/bigquery_create_dataset/main.tf. # You must place it in the same local directory as that main.tf file, # and you must have already applied that main.tf file to create # the "default" dataset resource with a dataset_id of "mydataset". data "google_iam_policy" "iam_policy" { binding { role = "roles/bigquery.admin" members = [ "user:hao@altostrat.com", ] } binding { role = "roles/bigquery.dataOwner" members = [ "group:dba@altostrat.com", ] } binding { role = "roles/bigquery.dataEditor" members = [ "serviceAccount:bqcx-1234567891011-12a3@gcp-sa-bigquery-condel.iam.gserviceaccount.com", ] } } resource "google_bigquery_dataset_iam_policy" "dataset_iam_policy" { dataset_id = google_bigquery_dataset.default.dataset_id policy_data = data.google_iam_policy.iam_policy.policy_data }
Definir associação de papel para um conjunto de dados
O exemplo a seguir mostra como usar o recurso google_bigquery_dataset_iam_binding
para definir a associação em um determinado papel para o conjunto de dados mydataset
. Isso substitui qualquer associação existente nesse papel.
Outros papéis na política do IAM para o conjunto de dados são preservados:
# This file sets membership in an IAM role for the dataset created by # https://github.com/terraform-google-modules/terraform-docs-samples/blob/main/bigquery/bigquery_create_dataset/main.tf. # You must place it in the same local directory as that main.tf file, # and you must have already applied that main.tf file to create # the "default" dataset resource with a dataset_id of "mydataset". resource "google_bigquery_dataset_iam_binding" "dataset_iam_binding" { dataset_id = google_bigquery_dataset.default.dataset_id role = "roles/bigquery.jobUser" members = [ "user:raha@altostrat.com", "group:analysts@altostrat.com" ] }
Definir associação de papel para um único principal
O exemplo a seguir mostra como usar o recurso google_bigquery_dataset_iam_member
para atualizar a política do IAM para o conjunto de dados mydataset
a fim de conceder um papel a um só principal. A atualização dessa
política do IAM não afeta o acesso de outros principais
que receberam esse papel no conjunto de dados.
# This file adds a member to an IAM role for the dataset created by # https://github.com/terraform-google-modules/terraform-docs-samples/blob/main/bigquery/bigquery_create_dataset/main.tf. # You must place it in the same local directory as that main.tf file, # and you must have already applied that main.tf file to create # the "default" dataset resource with a dataset_id of "mydataset". resource "google_bigquery_dataset_iam_member" "dataset_iam_member" { dataset_id = google_bigquery_dataset.default.dataset_id role = "roles/bigquery.user" member = "user:yuri@altostrat.com" }
Para aplicar a configuração do Terraform em um projeto do Google Cloud, conclua as etapas nas seções a seguir.
Preparar o Cloud Shell
- Inicie o Cloud Shell.
-
Defina o projeto padrão do Google Cloud 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.tf
recé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
yes
no prompt:terraform apply
Aguarde até que o Terraform exiba a mensagem "Apply complete!".
- Abra seu projeto do Google Cloud para ver os resultados. No console do Google Cloud, navegue até seus recursos na IU para verificar se foram criados ou atualizados pelo Terraform.
API
Para aplicar controles de acesso quando o conjunto de dados for criado, chame o
método datasets.insert
com um
recurso de conjunto de dados definido.
Para atualizar os controles de acesso, chame o
método datasets.patch
e use
a propriedade access
no recurso Dataset
.
Como datasets.update
substitui todo o recurso do conjunto de dados, é melhor usar o método datasets.patch
para atualizar os controles de acesso.
Go
Antes de testar esta amostra, siga as instruções de configuração do Go no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Go.
Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Java
Antes de testar esta amostra, siga as instruções de configuração do Java no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Java.
Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Python
Antes de testar esta amostra, siga as instruções de configuração do Python no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Python.
Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Defina a propriedadedataset.access_entries
com os controles de acesso de um conjunto de dados. Em seguida, chame a
função client.update_dataset()
para atualizar a propriedade.
Permitir acesso a uma tabela ou visualização
Selecione uma das seguintes opções:
Console
Acessar a página do BigQuery.
No painel Explorer, expanda seu projeto e selecione uma tabela ou visualização para compartilhar.
Clique em
Compartilhar.Clique em
adicionar conta principal.No campo Novos principais, digite um principal..
Na lista Selecionar papel, escolha uma função predefinida ou personalizada..
Clique em Save.
Para retornar à tabela ou aos detalhes da visualização, clique em Fechar.
SQL
Para conceder aos principais acesso a tabelas ou visualizações, use a
instrução DCL GRANT
:
No Console do Google Cloud, acesse a página BigQuery.
No editor de consultas, digite a seguinte instrução:
GRANT `ROLE_LIST` ON RESOURCE_TYPE RESOURCE_NAME TO "USER_LIST"
Substitua:
ROLE_LIST
: um papel ou uma lista de papéis separados por vírgulas que você queira conceder.RESOURCE_TYPE
: o tipo de recurso ao qual o papel é aplicado.Os valores aceitos incluem
TABLE
,VIEW
,MATERIALIZED VIEW
eEXTERNAL TABLE
.RESOURCE_NAME
: o nome do recurso em que você quer conceder a permissão.USER_LIST
: uma lista separada por vírgulas de usuários a que o papel é concedido.Para ver uma lista de formatos válidos, consulte
user_list
.
Clique em
Executar.
Para mais informações sobre como executar consultas, acesse Executar uma consulta interativa.
O exemplo a seguir concede o papel de visualizador de dados na tabela myTable
:
GRANT `roles/bigquery.dataViewer`
ON TABLE `myProject`.myDataset.myTable
TO "user:raha@example-pet-store.com", "user:sasha@example-pet-store.com"
bq
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Para conceder acesso a uma tabela ou visualização, use o comando
bq add-iam-policy-binding
:bq add-iam-policy-binding --member=MEMBER_TYPE:MEMBER --role=ROLE --table=true RESOURCE
Substitua:
- MEMBER_TYPE: o tipo de membro, como
user
,group
,serviceAccount
oudomain
. - MEMBER: o endereço de e-mail ou o nome de domínio do membro.
- ROLE: o papel que você quer conceder ao membro.
- RESOURCE: o nome da tabela ou visualização com a política que você quer atualizar.
- MEMBER_TYPE: o tipo de membro, como
Terraform
Use os recursos google_bigquery_table_iam
para atualizar o acesso a uma tabela.
Definir a política de acesso para uma tabela
O exemplo a seguir mostra como usar o recurso google_bigquery_table_iam_policy
para definir a política do IAM para a tabela mytable
. Isso substitui qualquer política existente já anexada à tabela:
# This file sets the IAM policy for the table created by # https://github.com/terraform-google-modules/terraform-docs-samples/blob/main/bigquery/bigquery_create_table/main.tf. # You must place it in the same local directory as that main.tf file, # and you must have already applied that main.tf file to create # the "default" table resource with a table_id of "mytable". data "google_iam_policy" "iam_policy" { binding { role = "roles/bigquery.dataOwner" members = [ "user:raha@altostrat.com", ] } } resource "google_bigquery_table_iam_policy" "table_iam_policy" { dataset_id = google_bigquery_table.default.dataset_id table_id = google_bigquery_table.default.table_id policy_data = data.google_iam_policy.iam_policy.policy_data }
Definir a assinatura de uma função para uma tabela
O exemplo a seguir mostra como usar o recurso google_bigquery_table_iam_binding
para definir a associação em um determinado papel para a tabela mytable
. Isso substitui qualquer associação existente nesse papel.
Outros papéis na política do IAM para a tabela são preservados.
# This file sets membership in an IAM role for the table created by # https://github.com/terraform-google-modules/terraform-docs-samples/blob/main/bigquery/bigquery_create_table/main.tf. # You must place it in the same local directory as that main.tf file, # and you must have already applied that main.tf file to create # the "default" table resource with a table_id of "mytable". resource "google_bigquery_table_iam_binding" "table_iam_binding" { dataset_id = google_bigquery_table.default.dataset_id table_id = google_bigquery_table.default.table_id role = "roles/bigquery.dataOwner" members = [ "group:analysts@altostrat.com", ] }
Definir associação de papel para um único principal
O exemplo a seguir mostra como usar o recurso google_bigquery_table_iam_member
para atualizar a política do IAM para a tabela mytable
a fim de conceder um papel a um só principal. A atualização dessa
política do IAM não afeta o acesso de outros principais
que receberam esse papel no conjunto de dados.
# This file adds a member to an IAM role for the table created by # https://github.com/terraform-google-modules/terraform-docs-samples/blob/main/bigquery/bigquery_create_table/main.tf. # You must place it in the same local directory as that main.tf file, # and you must have already applied that main.tf file to create # the "default" table resource with a table_id of "mytable". resource "google_bigquery_table_iam_member" "table_iam_member" { dataset_id = google_bigquery_table.default.dataset_id table_id = google_bigquery_table.default.table_id role = "roles/bigquery.dataEditor" member = "serviceAccount:bqcx-1234567891011-12a3@gcp-sa-bigquery-condel.iam.gserviceaccount.com" }
Para aplicar a configuração do Terraform em um projeto do Google Cloud, conclua as etapas nas seções a seguir.
Preparar o Cloud Shell
- Inicie o Cloud Shell.
-
Defina o projeto padrão do Google Cloud 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.tf
recé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
yes
no prompt:terraform apply
Aguarde até que o Terraform exiba a mensagem "Apply complete!".
- Abra seu projeto do Google Cloud para ver os resultados. No console do Google Cloud, navegue até seus recursos na IU para verificar se foram criados ou atualizados pelo Terraform.
API
- Para recuperar a política atual, chame o
método
tables.getIamPolicy
. Edite a política para adicionar membros ou vinculações, ou ambos. Quanto ao formato necessário à política, consulte o tópico de referência Políticas.
Chame
tables.setIamPolicy
para gravar a política atualizada. Cuidado: vinculações vazias sem membros não são permitidas e resultam em erro.
Java
Antes de testar esta amostra, siga as instruções de configuração do Java no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Java.
Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Python
Antes de testar esta amostra, siga as instruções de configuração do Python no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Python.
Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Revogar acesso a um recurso
As seções a seguir descrevem como revogar o acesso a recursos diferentes.
Revogar acesso a um conjunto de dados
Selecione uma das seguintes opções:
Console
Acessar a página do BigQuery.
No painel Explorer, expanda o projeto e selecione um conjunto de dados.
No painel de detalhes, clique em Compartilhamento>Permissões.
Na caixa de diálogo Permissões do conjunto de dados, expanda o principal cujo acesso você quer revogar.
Clique em
Remover principal.Na caixa de diálogo Remover papel do principal?, clique em Remover.
Para retornar aos detalhes do conjunto de dados, clique em Fechar.
SQL
Para remover o acesso de principais dos conjuntos de dados, use a
instrução DCL REVOKE
:
No Console do Google Cloud, acesse a página BigQuery.
No editor de consultas, digite a seguinte instrução:
REVOKE `ROLE_LIST` ON SCHEMA RESOURCE_NAME FROM "USER_LIST"
Substitua:
ROLE_LIST
: um papel ou uma lista de papéis separados por vírgulas que você queira revogarRESOURCE_NAME
: o nome do recurso em que você quer revogar a permissão.USER_LIST
: uma lista separada por vírgulas de usuários que terão os papéis revogados.Para ver uma lista de formatos válidos, consulte
user_list
.
Clique em
Executar.
Para mais informações sobre como executar consultas, acesse Executar uma consulta interativa.
O exemplo a seguir revoga o papel de administrador no conjunto de dados myDataset
:
REVOKE `roles/bigquery.admin`
ON SCHEMA `myProject`.myDataset
FROM "group:example-team@example-pet-store.com", "serviceAccount:user@test-project.iam.gserviceaccount.com"
bq
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Para gravar as informações do conjunto de dados existente (incluindo controles de acesso) em um arquivo JSON, use o comando
bq show
:bq show \ --format=prettyjson \ PROJECT_ID:DATASET > PATH_TO_FILE
Substitua:
- PROJECT_ID: ID do projeto
- DATASET: o nome do conjunto de dados
- PATH_TO_FILE: o caminho para o arquivo JSON em sua máquina local.
Faça suas alterações na seção
access
do arquivo JSON. É possível remover qualquer uma das entradasspecialGroup
:projectOwners
,projectWriters
,projectReaders
eallAuthenticatedUsers
. Também é possível remover qualquer um dos itens a seguir:userByEmail
,groupByEmail
edomain
.Por exemplo, a seção
access
do arquivo JSON de um conjunto de dados tem esta aparência:{ "access": [ { "role": "READER", "specialGroup": "projectReaders" }, { "role": "WRITER", "specialGroup": "projectWriters" }, { "role": "OWNER", "specialGroup": "projectOwners" }, { "role": "READER", "specialGroup": "allAuthenticatedUsers" }, { "role": "READER", "domain": "domain_name" }, { "role": "WRITER", "userByEmail": "user_email" }, { "role": "READER", "groupByEmail": "group_email" } ], ... }
Quando as edições estiverem concluídas, use o comando
bq update
e inclua o arquivo JSON usando a sinalização--source
. Se o conjunto de dados estiver em um projeto diferente do padrão, adicione o ID do projeto ao nome do conjunto de dados no seguinte formato:PROJECT_ID:DATASET
.bq update \ --source PATH_TO_FILE \ PROJECT_ID:DATASET
Para verificar as alterações no controle de acesso, insira o comando
show
novamente sem gravar as informações em um arquivo.bq show --format=prettyjson PROJECT_ID:DATASET
API
Chame datasets.patch
e use a propriedade access
no recurso Dataset
para atualizar os
controles de acesso.
Como datasets.update
substitui todo o recurso do conjunto de dados, é melhor usar o método datasets.patch
para atualizar os controles de acesso.
Go
Antes de testar esta amostra, siga as instruções de configuração do Go no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Go.
Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Python
Antes de testar esta amostra, siga as instruções de configuração do Python no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Python.
Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Defina a propriedadedataset.access_entries
com os controles de acesso de um conjunto de dados. Em seguida, chame a
função client.update_dataset()
para atualizar a propriedade.
Revogar acesso a uma tabela ou visualização
Selecione uma das seguintes opções:
Console
Acessar a página do BigQuery.
No painel Explorer, expanda seu projeto e selecione uma tabela ou visualização.
No painel de detalhes, clique em Compartilhar.
Na caixa de diálogo Compartilhar, expanda o principal cujo acesso você quer revogar.
Clique em
Excluir.Na caixa de diálogo Remover papel do principal?, clique em Remover.
Para retornar à tabela ou aos detalhes da visualização, clique em Fechar.
SQL
Para remover o acesso de tabelas ou visualizações dos principais, use a
instrução DCL REVOKE
:
No Console do Google Cloud, acesse a página BigQuery.
No editor de consultas, digite a seguinte instrução:
REVOKE `ROLE_LIST` ON RESOURCE_TYPE RESOURCE_NAME FROM "USER_LIST"
Substitua:
ROLE_LIST
: um papel ou uma lista de papéis separados por vírgulas que você queira revogarRESOURCE_TYPE
: o tipo de recurso do qual o papel é revogado.Os valores aceitos incluem
TABLE
,VIEW
,MATERIALIZED VIEW
eEXTERNAL TABLE
.RESOURCE_NAME
: o nome do recurso em que você quer revogar a permissão.USER_LIST
: uma lista separada por vírgulas de usuários que terão os papéis revogados.Para ver uma lista de formatos válidos, consulte
user_list
.
Clique em
Executar.
Para mais informações sobre como executar consultas, acesse Executar uma consulta interativa.
O exemplo a seguir revoga o papel de administrador na tabela myTable
:
REVOKE `roles/bigquery.admin`
ON TABLE `myProject`.myDataset.myTable
FROM "group:example-team@example-pet-store.com", "serviceAccount:user@test-project.iam.gserviceaccount.com"
bq
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Para revogar o acesso a uma tabela ou visualização, use o comando
bq remove-iam-policy-binding
:bq remove-iam-policy-binding --member=MEMBER_TYPE:MEMBER --role=ROLE --table=true RESOURCE
Substitua:
- MEMBER_TYPE: o tipo de membro, como
user
,group
,serviceAccount
oudomain
. - MEMBER: o endereço de e-mail ou o nome de domínio do membro.
- ROLE: o papel que você quer revogar do membro.
- RESOURCE: o nome da tabela ou visualização com a política que você quer atualizar.
- MEMBER_TYPE: o tipo de membro, como
API
- Para recuperar a política atual, chame o
método
tables.getIamPolicy
. Edite a política para remover membros ou vinculações, ou ambos. Quanto ao formato necessário à política, consulte o tópico de referência Políticas.
Chame
tables.setIamPolicy
para gravar a política atualizada. Cuidado: vinculações vazias sem membros não são permitidas e resultam em erro.
Java
Antes de testar esta amostra, siga as instruções de configuração do Java no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Java.
Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Negar acesso a um recurso
As políticas de negação do IAM permitem definir proteções no acesso aos recursos do BigQuery. É possível definir regras de negação para impedir que alguns principais usem determinadas permissões, seja qual for o papel que eles receberam.
Para informações sobre como criar, atualizar e excluir políticas de negação, consulte Negar acesso a recursos.
Casos especiais
Considere os seguintes cenários ao criar políticas de negação do IAM em algumas permissões do BigQuery:
O acesso a recursos autorizados (visualizações, rotinas, conjuntos de dados ou procedimentos armazenados) permite que você crie, exclua ou manipula uma tabela, além de ler e modificar os dados da tabela, mesmo que você não tenha permissão direta para realizar essas operações. Ele também pode receber dados ou metadados do modelo e invocar outros procedimentos armazenados na tabela. Esse recurso implica que os recursos autorizados têm as seguintes permissões:
bigquery.tables.get
bigquery.tables.list
bigquery.tables.getData
bigquery.tables.updateData
bigquery.tables.create
bigquery.tables.delete
bigquery.routines.get
bigquery.routines.list
bigquery.datasets.get
bigquery.models.getData
bigquery.models.getMetadata
Para negar o acesso a esses recursos autorizados, adicione um dos seguintes valores ao campo
deniedPrincipal
ao criar a política de negação:Valor Caso de uso principalSet://goog/public:all
Bloqueia todos os principais, incluindo recursos autorizados. principalSet://bigquery.googleapis.com/projects/PROJECT_NUMBER/*
Bloqueia todos os recursos autorizados do BigQuery no projeto especificado. PROJECT_NUMBER
é um identificador exclusivo gerado automaticamente para seu projeto do tipoINT64
.Para isentar determinados principais da política de negação, especifique esses principais no campo
exceptionPrincipals
da sua política de negação. Por exemplo,exceptionPrincipals: "principalSet://bigquery.googleapis.com/projects/1234/*"
.O BigQuery armazena em cache os resultados da consulta de um proprietário de job por 24 horas, que podem ser acessados sem precisar da permissão
bigquery.tables.getData
na tabela que contém os dados. Portanto, adicionar uma política de negação do IAM à permissãobigquery.tables.getData
não bloqueia o acesso aos resultados armazenados em cache para o proprietário do job até que o cache expire. Para bloquear o acesso do proprietário do job aos resultados armazenados em cache, crie uma política de recusa separada na permissãobigquery.jobs.create
.Para evitar o acesso não intencional a dados ao usar políticas de negação para bloquear operações de leitura de dados, recomendamos que você também analise e revogue todas as assinaturas no conjunto de dados.
Para criar uma política de negação do IAM para visualizar os controles de acesso a conjuntos de dados, negue as seguintes permissões:
bigquery.datasets.get
bigquery.datasets.getIamPolicy
Para criar uma política de negação do IAM para atualizar os controles de acesso ao conjunto de dados, negue as seguintes permissões:
bigquery.datasets.update
bigquery.datasets.setIamPolicy