Controle o acesso aos recursos com o IAM
Este documento descreve como ver, conceder e revogar controlos de acesso para conjuntos de dados do BigQuery e para os recursos nos conjuntos de dados: tabelas, vistas e rotinas. Embora os modelos também sejam recursos ao nível do conjunto de dados, não pode conceder acesso a modelos individuais através de funções de IAM.
Pode conceder acesso a Google Cloud recursos através de políticas de autorização, também conhecidas como políticas de gestão de identidade e de acesso (IAM), que são anexadas a recursos. Só pode anexar uma política de autorização a cada recurso. A política de autorização controla o acesso ao próprio recurso, bem como a todos os descendentes desse recurso que herdam a política de autorização.
Para mais informações sobre as políticas de autorização, consulte a secção Estrutura das políticas na documentação da IAM.
Este documento pressupõe familiaridade com a gestão de identidade e de acesso (IAM) no Google Cloud.
Limitações
- As listas de controlo de acesso (ACLs) de rotina não estão incluídas nas rotinas replicadas.
- As rotinas em conjuntos de dados externos ou associados não suportam controlos de acesso.
- As tabelas em conjuntos de dados externos ou associados não suportam controlos de acesso.
- Não é possível definir controlos de acesso de rotina com o Terraform.
- Não é possível definir controlos de acesso de rotina com o SDK Cloud da Google.
- Não é possível definir controlos de acesso de rotina através da linguagem de controlo de dados (DCL) do BigQuery.
- O catálogo de dados não suporta controlos de acesso de rotina. Se um utilizador tiver concedido condicionalmente acesso ao nível da rotina, não vê as respetivas rotinas no painel lateral do BigQuery. Como solução alternativa, conceda acesso ao nível do conjunto de dados.
- A vista
INFORMATION_SCHEMA.OBJECT_PRIVILEGES
não mostra os controlos de acesso para rotinas.
Antes de começar
Conceda funções de gestão de identidade e acesso (IAM) que dão aos utilizadores as autorizações necessárias para realizar cada tarefa neste documento.
Funções necessárias
Para receber as autorizações de que precisa para modificar as políticas de IAM para recursos,
peça ao seu administrador que lhe conceda a função de IAM de
proprietário de dados do BigQuery (roles/bigquery.dataOwner
) no projeto.
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Esta função predefinida contém as autorizações necessárias para modificar as políticas de IAM para recursos. Para ver as autorizações exatas que são necessárias, expanda a secção Autorizações necessárias:
Autorizações necessárias
São necessárias as seguintes autorizações para modificar as políticas de IAM para recursos:
-
Para obter a política de acesso de um conjunto de dados:
bigquery.datasets.get
-
Para definir a política de acesso de um conjunto de dados:
bigquery.datasets.update
-
Para obter a política de acesso de um conjunto de dados (Google Cloud apenas na consola):
bigquery.datasets.getIamPolicy
-
Para definir a política de acesso de um conjunto de dados (apenas na consola):
bigquery.datasets.setIamPolicy
-
Para obter a política de uma tabela ou de uma vista:
bigquery.tables.getIamPolicy
-
Para definir uma política de tabela ou vista:
bigquery.tables.setIamPolicy
-
Para obter a política de acesso de uma rotina:
bigquery.routines.getIamPolicy
-
Para definir a política de acesso de uma rotina:
bigquery.routines.setIamPolicy
-
Para criar a ferramenta bq ou tarefas SQL do BigQuery (opcional):
bigquery.jobs.create
Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.
Trabalhe com controlos de acesso a conjuntos de dados
Pode conceder acesso a um conjunto de dados atribuindo a um principal do IAM uma função predefinida ou personalizada que determina o que o principal pode fazer com o conjunto de dados. Isto também é conhecido como anexar uma política de autorização a um recurso. Depois de conceder acesso, pode ver os controlos de acesso do conjunto de dados e revogar o acesso ao conjunto de dados.
Conceda acesso a um conjunto de dados
Não pode conceder acesso a um conjunto de dados quando o cria através da IU Web do BigQuery ou da ferramenta de linha de comandos bq. Primeiro, tem de criar o conjunto de dados e, em seguida, conceder-lhe acesso.
A API permite-lhe conceder acesso durante a criação do conjunto de dados chamando o
método
com um recurso de conjunto de dados definido.datasets.insert
Um projeto é o recurso principal de um conjunto de dados, e um conjunto de dados é o recurso principal de tabelas e vistas, rotinas e modelos. Quando atribui uma função ao nível do projeto, a função e as respetivas autorizações são herdadas pelo conjunto de dados e pelos recursos do conjunto de dados. Da mesma forma, quando atribui uma função ao nível do conjunto de dados, a função e as respetivas autorizações são herdadas pelos recursos no conjunto de dados.
Pode conceder acesso a um conjunto de dados concedendo uma autorização de função de IAM para aceder ao conjunto de dados ou concedendo acesso condicionalmente através de uma condição de IAM. Para mais informações sobre a concessão de acesso condicional, consulte o artigo Controle o acesso com as condições da IAM.
Para conceder a uma função da IAM acesso a um conjunto de dados sem usar condições, selecione uma das seguintes opções:
Consola
Aceda à página do BigQuery.
No painel Explorador, expanda o projeto e selecione um conjunto de dados para partilhar.
Clique em > Autorizações.
PartilhaClique em
Adicionar responsável.No campo Novos membros, introduza um membro.
Na lista Selecionar uma função, selecione uma função predefinida ou uma função personalizada.
Clique em Guardar.
Para regressar às informações do conjunto de dados, clique em Fechar.
SQL
Para conceder aos principais acesso a conjuntos de dados, use a
GRANT
declaração DCL:
Na Google Cloud consola, aceda à página BigQuery.
No editor de consultas, introduza a seguinte declaração:
GRANT `ROLE_LIST` ON SCHEMA RESOURCE_NAME TO "USER_LIST"
Substitua o seguinte:
ROLE_LIST
: uma função ou uma lista de funções separadas por vírgulas que quer concederRESOURCE_NAME
: o nome do conjunto de dados ao qual está a conceder acessoUSER_LIST
: uma lista de utilizadores separada por vírgulas aos quais a função é concedidaPara ver uma lista de formatos válidos, consulte
user_list
.
Clique em
Executar.
Para mais informações sobre como executar consultas, consulte o artigo Execute uma consulta interativa.
O exemplo seguinte concede a função de visualizador de dados do BigQuery a myDataset
:
GRANT `roles/bigquery.dataViewer`
ON SCHEMA `myProject`.myDataset
TO "user:[email protected]", "user:[email protected]"
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 escrever as informações do conjunto de dados existente (incluindo os controlos de acesso) num ficheiro JSON, use o comando
bq show
:bq show \ --format=prettyjson \ PROJECT_ID:DATASET > PATH_TO_FILE
Substitua o seguinte:
- PROJECT_ID: o ID do seu projeto
- DATASET: o nome do seu conjunto de dados
- PATH_TO_FILE: o caminho para o ficheiro JSON no seu computador local
Faça alterações à secção
access
do ficheiro JSON. Pode adicionar a qualquer uma das entradasspecialGroup
:projectOwners
,projectWriters
,projectReaders
eallAuthenticatedUsers
. Também pode adicionar qualquer um dos seguintes elementos:userByEmail
,groupByEmail
edomain
.Por exemplo, a secção
access
de um ficheiro JSON de um conjunto de dados teria o seguinte aspeto:{ "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 ficheiro JSON com a flag--source
. Se o conjunto de dados estiver num projeto que não seja o seu projeto predefinido, 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:DATASETPara validar as alterações ao controlo de acesso, use novamente o comando
bq show
sem escrever as informações num ficheiro:bq show --format=prettyjson PROJECT_ID:DATASET
- Inicie o Cloud Shell.
-
Defina o Google Cloud projeto predefinido onde quer aplicar as suas configurações do Terraform.
Só tem de executar este comando uma vez por projeto e pode executá-lo em qualquer diretório.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
As variáveis de ambiente são substituídas se definir valores explícitos no ficheiro de configuração do Terraform.
-
No Cloud Shell, crie um diretório e um novo ficheiro nesse diretório. O nome do ficheiro tem de ter a extensão
.tf
, por exemplo,main.tf
. Neste tutorial, o ficheiro é denominadomain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Se estiver a seguir um tutorial, pode copiar o código de exemplo em cada secção ou passo.
Copie o exemplo de código para o ficheiro
main.tf
criado recentemente.Opcionalmente, copie o código do GitHub. Isto é recomendado quando o fragmento do Terraform faz parte de uma solução completa.
- Reveja e modifique os parâmetros de exemplo para aplicar ao seu ambiente.
- Guarde as alterações.
-
Inicialize o Terraform. Só tem de fazer isto uma vez por diretório.
terraform init
Opcionalmente, para usar a versão mais recente do fornecedor Google, inclua a opção
-upgrade
:terraform init -upgrade
-
Reveja a configuração e verifique se os recursos que o Terraform vai criar ou
atualizar correspondem às suas expetativas:
terraform plan
Faça as correções necessárias à configuração.
-
Aplique a configuração do Terraform executando o seguinte comando e introduzindo
yes
no comando:terraform apply
Aguarde até que o Terraform apresente a mensagem "Apply complete!" (Aplicação concluída!).
- Abra o seu Google Cloud projeto para ver os resultados. Na Google Cloud consola, navegue para os seus recursos na IU para se certificar de que o Terraform os criou ou atualizou.
Terraform
Use os recursos
google_bigquery_dataset_iam
para atualizar o acesso a um conjunto de dados.
Defina a política de acesso para um conjunto de dados
O exemplo seguinte mostra como usar o recurso google_bigquery_dataset_iam_policy
para definir a política de IAM para o conjunto de dados mydataset
. Esta ação 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:[email protected]", ] } binding { role = "roles/bigquery.dataOwner" members = [ "group:[email protected]", ] } 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 }
Defina a associação de funções para um conjunto de dados
O exemplo seguinte mostra como usar o recurso google_bigquery_dataset_iam_binding
para definir a associação a uma determinada função para o conjunto de dados mydataset
. Esta ação substitui qualquer registo de membro existente nessa função.
Outras funções na política IAM para o conjunto de dados
são preservadas:
# 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:[email protected]", "group:[email protected]" ] }
Defina a associação de funções para um único principal
O exemplo seguinte mostra como usar o recurso google_bigquery_dataset_iam_member
para atualizar a política de IAM do conjunto de dados mydataset
para conceder uma função a um principal. A atualização desta política de IAM não afeta o acesso de outros responsáveis que tenham recebido essa função para o 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:[email protected]" }
Para aplicar a configuração do Terraform num Google Cloud projeto, conclua os passos nas secções seguintes.
Prepare o Cloud Shell
Prepare o diretório
Cada ficheiro de configuração do Terraform tem de ter o seu próprio diretório (também denominado módulo raiz).
Aplique as alterações
API
Para aplicar controlos de acesso quando o conjunto de dados é criado, chame o método datasets.insert
com um recurso de conjunto de dados definido.
Para atualizar os controlos de acesso, chame o método datasets.patch
e use a propriedade access
no recurso Dataset
.
Uma vez que o método datasets.update
substitui o recurso do conjunto de dados completo, o método datasets.patch
é o preferencial para atualizar os controlos de acesso.
Go
Antes de experimentar este exemplo, siga as Goinstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Go BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Defina a nova lista de acesso anexando a nova entrada à lista existente com o tipoDatasetMetadataToUpdate
. Em seguida, chame a função dataset.Update()
para atualizar a propriedade.
Java
Antes de experimentar este exemplo, siga as Javainstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Java BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Node.js
Antes de experimentar este exemplo, siga as Node.jsinstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Node.js BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Defina a nova lista de acesso anexando a nova entrada à lista existente através do método Dataset#metadata. Em seguida, chame a função Dataset#setMetadata() para atualizar a propriedade.Python
Antes de experimentar este exemplo, siga as Pythoninstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Python BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Defina a propriedadedataset.access_entries
com os controlos de acesso para um conjunto de dados. Em seguida, chame a função client.update_dataset()
para atualizar a propriedade.
Funções predefinidas que concedem acesso a conjuntos de dados
Pode conceder às seguintes funções predefinidas de IAM acesso a um conjunto de dados.
Função | Descrição |
---|---|
Proprietário dos dados do BigQuery
(roles/bigquery.dataOwner ) |
Quando concedida num conjunto de dados, esta função concede as seguintes autorizações:
|
Editor de dados do BigQuery
(roles/bigquery.dataEditor ) |
Quando concedida num conjunto de dados, esta função concede as seguintes autorizações:
|
Visualizador de dados do BigQuery
(roles/bigquery.dataViewer ) |
Quando concedida num conjunto de dados, esta função concede as seguintes autorizações:
|
Visualizador de metadados do BigQuery
(roles/bigquery.metadataViewer ) |
Quando concedida num conjunto de dados, esta função concede as seguintes autorizações:
|
Autorizações do conjunto de dados
A maioria das autorizações que começam com bigquery.datasets
aplica-se ao nível do conjunto de dados.
O bigquery.datasets.create
não. Para criar conjuntos de dados, tem de conceder autorização bigquery.datasets.create
a uma função no contentor principal, ou seja, o projeto.
A tabela seguinte apresenta todas as autorizações para conjuntos de dados e o recurso de nível mais baixo ao qual a autorização pode ser aplicada.
Autorização | Recurso | Ação |
---|---|---|
bigquery.datasets.create |
Projeto | Criar novos conjuntos de dados no projeto. |
bigquery.datasets.get |
Conjunto de dados | Obtenha metadados e controlos de acesso para o conjunto de dados. As autorizações de visualização na
consola também requerem a autorização
bigquery.datasets.getIamPolicy . |
bigquery.datasets.getIamPolicy |
Conjunto de dados | Necessário pela consola para conceder ao utilizador autorização para obter os controlos de acesso de um conjunto de dados. Falha ao abrir. A consola também requer a autorização bigquery.datasets.get para ver o conjunto de dados. |
bigquery.datasets.update |
Conjunto de dados | Atualize os metadados e os controlos de acesso do conjunto de dados. A atualização dos controlos de acesso na consola também requer a autorização bigquery.datasets.setIamPolicy .
|
bigquery.datasets.setIamPolicy |
Conjunto de dados | Obrigatório pela consola para conceder ao utilizador autorização para definir os controlos de acesso de um conjunto de dados. Falha ao abrir. A consola também requer a autorização bigquery.datasets.update para atualizar o conjunto de dados. |
bigquery.datasets.delete |
Conjunto de dados | Eliminar um conjunto de dados. |
bigquery.datasets.createTagBinding |
Conjunto de dados | Anexe etiquetas ao conjunto de dados. |
bigquery.datasets.deleteTagBinding |
Conjunto de dados | Desassocie etiquetas do conjunto de dados. |
bigquery.datasets.listTagBindings |
Conjunto de dados | Liste as etiquetas do conjunto de dados. |
bigquery.datasets.listEffectiveTags |
Conjunto de dados | Apresentar uma lista de etiquetas eficazes (aplicadas e herdadas) para o conjunto de dados. |
bigquery.datasets.link |
Conjunto de dados | Crie um conjunto de dados associado. |
bigquery.datasets.listSharedDatasetUsage |
Projeto | Apresenta estatísticas de utilização de conjuntos de dados partilhados aos quais tem acesso no projeto. Esta autorização é necessária para consultar a vista
INFORMATION_SCHEMA.SHARED_DATASET_USAGE . |
Veja os controlos de acesso de um conjunto de dados
Pode ver os controlos de acesso definidos explicitamente para um conjunto de dados escolhendo uma das seguintes opções. Para ver funções herdadas, para um conjunto de dados, use a IU Web do BigQuery.
Consola
Aceda à página do BigQuery.
No painel Explorador, expanda o projeto e selecione um conjunto de dados.
Clique em > Autorizações.
PartilharOs controlos de acesso do conjunto de dados aparecem no painel Autorizaçõ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 obter uma política existente e enviá-la para um ficheiro local em JSON, use o comando
bq show
no Cloud Shell:bq show \ --format=prettyjson \ PROJECT_ID:DATASET > PATH_TO_FILE
Substitua o seguinte:
- PROJECT_ID: o ID do seu projeto
- DATASET: o nome do seu conjunto de dados
- PATH_TO_FILE: o caminho para o ficheiro JSON no seu computador local
Na Google Cloud consola, aceda à página BigQuery.
No editor de consultas, introduza a seguinte declaração:
SELECT COLUMN_LIST FROM PROJECT_ID.`region-REGION`.INFORMATION_SCHEMA.OBJECT_PRIVILEGES WHERE object_name = "DATASET";
Substitua o seguinte:
- COLUMN_LIST: uma lista de colunas separadas por vírgulas da vista
INFORMATION_SCHEMA.OBJECT_PRIVILEGES
- PROJECT_ID: o ID do seu projeto
- REGION: um qualificador de região
- DATASET: o nome de um conjunto de dados no seu projeto
- COLUMN_LIST: uma lista de colunas separadas por vírgulas da vista
Clique em
Executar.
SQL
Consulte a INFORMATION_SCHEMA.OBJECT_PRIVILEGES
vista.
As consultas para obter controlos de acesso para um conjunto de dados têm de especificar o
object_name
.
Para mais informações sobre como executar consultas, consulte o artigo Execute uma consulta interativa.
Exemplo:
Esta consulta obtém controlos de acesso para mydataset
.
SELECT object_name, privilege_type, grantee FROM my_project.`region-us`.INFORMATION_SCHEMA.OBJECT_PRIVILEGES WHERE object_name = "mydataset";
O resultado deve ter o seguinte aspeto:
+------------------+-----------------------------+-------------------------+
| object_name | privilege_type | grantee |
+------------------+-----------------------------+-------------------------+
| mydataset | roles/bigquery.dataOwner | projectOwner:myproject |
| mydataset | roles/bigquery.dataViwer | user:[email protected] |
+------------------+-----------------------------+-------------------------+
API
Para ver os controlos de acesso de um conjunto de dados, chame o método
datasets.get
com um recurso
dataset
definido.
Os controlos de acesso aparecem na propriedade access
do recurso dataset
.
Go
Antes de experimentar este exemplo, siga as Goinstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Go BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Chama a funçãoclient.Dataset().Metadata()
. A política de acesso está disponível na propriedade Access
.
Java
Antes de experimentar este exemplo, siga as Javainstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Java BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Node.js
Antes de experimentar este exemplo, siga as Node.jsinstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Node.js BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Obtenha os metadados do conjunto de dados através da funçãoDataset#getMetadata()
.
A política de acesso está disponível na propriedade de acesso do objeto de metadados resultante.
Python
Antes de experimentar este exemplo, siga as Pythoninstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Python BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Chama a funçãoclient.get_dataset()
.
A política de acesso está disponível na propriedade dataset.access_entries
.
Revogue o acesso a um conjunto de dados
Para revogar o acesso a um conjunto de dados, selecione uma das seguintes opções:
Consola
Aceda à página do BigQuery.
No painel Explorador, expanda o projeto e selecione um conjunto de dados.
No painel de detalhes, clique em Partilha > Autorizações.
Na caixa de diálogo Autorizações do conjunto de dados, expanda o principal cujo acesso quer revogar.
Clique em
Remover principal.Na caixa de diálogo Remover função do principal?, clique em Remover.
Para regressar aos detalhes do conjunto de dados, clique em Fechar.
SQL
Para remover o acesso de um principal a um conjunto de dados, use a
REVOKE
declaração DCL:
Na Google Cloud consola, aceda à página BigQuery.
No editor de consultas, introduza a seguinte declaração:
REVOKE `ROLE_LIST` ON SCHEMA RESOURCE_NAME FROM "USER_LIST"
Substitua o seguinte:
ROLE_LIST
: uma função ou uma lista de funções separadas por vírgulas que quer revogarRESOURCE_NAME
: o nome do recurso no qual quer revogar a autorizaçãoUSER_LIST
: uma lista de utilizadores separados por vírgulas cujas funções vão ser revogadasPara ver uma lista de formatos válidos, consulte
user_list
.
Clique em
Executar.
Para mais informações sobre como executar consultas, consulte o artigo Execute uma consulta interativa.
O exemplo seguinte revoga a função de proprietário de dados do BigQuery de myDataset
:
REVOKE `roles/bigquery.dataOwner`
ON SCHEMA `myProject`.myDataset
FROM "group:[email protected]", "serviceAccount:[email protected]"
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 escrever as informações do conjunto de dados existente (incluindo os controlos de acesso) num ficheiro JSON, use o comando
bq show
:bq show \ --format=prettyjson \ PROJECT_ID:DATASET > PATH_TO_FILE
Substitua o seguinte:
- PROJECT_ID: o ID do seu projeto
- DATASET: o nome do seu conjunto de dados
- PATH_TO_FILE: o caminho para o ficheiro JSON no seu computador local
Faça alterações à secção
access
do ficheiro JSON. Pode remover qualquer uma das entradasspecialGroup
:projectOwners
,projectWriters
,projectReaders
eallAuthenticatedUsers
. Também pode remover qualquer um dos seguintes elementos:userByEmail
,groupByEmail
edomain
.Por exemplo, a secção
access
de um ficheiro JSON de um conjunto de dados teria o seguinte aspeto:{ "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 ficheiro JSON com a flag--source
. Se o conjunto de dados estiver num projeto que não seja o seu projeto predefinido, 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:DATASETPara validar as alterações de controlo de acesso, use o comando
show
sem escrever as informações num ficheiro:bq show --format=prettyjson PROJECT_ID:DATASET
API
Chame o métododatasets.patch
e use a propriedade access
no recurso Dataset
para atualizar os controlos de acesso.
Uma vez que o método datasets.update
substitui o recurso do conjunto de dados completo, o método datasets.patch
é o preferencial para atualizar os controlos de acesso.
Go
Antes de experimentar este exemplo, siga as Goinstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Go BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Defina a nova lista de acesso removendo a entrada da lista existente com o tipoDatasetMetadataToUpdate
. Em seguida, chame a função dataset.Update()
para atualizar a propriedade.
Java
Antes de experimentar este exemplo, siga as Javainstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Java BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Node.js
Antes de experimentar este exemplo, siga as Node.jsinstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Node.js BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Atualize a lista de acesso ao conjunto de dados removendo a entrada especificada da lista existente através do métodoDataset#get()
para obter os metadados atuais. Modifique a propriedade de acesso para excluir a entidade pretendida e, em seguida, chame a função
Dataset#setMetadata()
para aplicar a lista de acesso atualizada.
Python
Antes de experimentar este exemplo, siga as Pythoninstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Python BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Defina a propriedadedataset.access_entries
com os controlos de acesso para um conjunto de dados. Em seguida, chame a função client.update_dataset()
para atualizar a propriedade.
Trabalhe com controlos de acesso de tabelas e vistas
As vistas são tratadas como recursos de tabelas no BigQuery. Pode conceder acesso a uma tabela ou a uma vista atribuindo a um principal do IAM uma função predefinida ou personalizada que determina o que o principal pode fazer com a tabela ou a vista. Isto também é conhecido como anexar uma política de autorização a um recurso. Depois de conceder acesso, pode ver os controlos de acesso da tabela ou da vista, e pode revogar o acesso à tabela ou à vista.
Conceda acesso a uma tabela ou a uma vista
Para um controlo de acesso detalhado, pode conceder uma função do IAM predefinida ou personalizada numa tabela ou vista específica. A tabela ou a vista também herda os controlos de acesso especificados ao nível do conjunto de dados e superior. Por exemplo, se conceder a um principal a função de proprietário de dados do BigQuery num conjunto de dados, esse principal também tem autorizações de proprietário de dados do BigQuery nas tabelas e nas vistas no conjunto de dados.
Para conceder acesso a uma tabela ou a uma vista, selecione uma das seguintes opções:
Consola
Aceda à página do BigQuery.
No painel Explorador, expanda o projeto e selecione uma tabela ou uma vista para partilhar.
Clique em
Partilhar.Clique em
Adicionar responsável.No campo Novos membros, introduza um membro.
Na lista Selecionar uma função, selecione uma função predefinida ou uma função personalizada.
Clique em Guardar.
Para regressar à tabela ou ver detalhes, clique em Fechar.
SQL
Para conceder aos principais acesso a tabelas ou vistas, use a declaração DCL GRANT
:
Na Google Cloud consola, aceda à página BigQuery.
No editor de consultas, introduza a seguinte declaração:
GRANT `ROLE_LIST` ON RESOURCE_TYPE RESOURCE_NAME TO "USER_LIST"
Substitua o seguinte:
ROLE_LIST
: uma função ou uma lista de funções separadas por vírgulas que quer concederRESOURCE_TYPE
: o tipo de recurso ao qual a função é aplicadaOs valores suportados incluem
TABLE
,VIEW
,MATERIALIZED VIEW
eEXTERNAL TABLE
.RESOURCE_NAME
: o nome do recurso no qual quer conceder a autorizaçãoUSER_LIST
: uma lista de utilizadores separada por vírgulas aos quais a função é concedidaPara ver uma lista de formatos válidos, consulte
user_list
.
Clique em
Executar.
Para mais informações sobre como executar consultas, consulte o artigo Execute uma consulta interativa.
O exemplo seguinte concede a função de visualizador de dados do BigQuery em myTable
:
GRANT `roles/bigquery.dataViewer`
ON TABLE `myProject`.myDataset.myTable
TO "user:[email protected]", "user:[email protected]"
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 a uma vista, use o comando
bq add-iam-policy-binding
:bq add-iam-policy-binding --member=MEMBER_TYPE:MEMBER --role=ROLE --table=true RESOURCE
Substitua o seguinte:
- MEMBER_TYPE: o tipo de membro, como
user
,group
,serviceAccount
oudomain
. - MEMBER: o endereço de email ou o nome do domínio do membro.
- ROLE: a função que quer conceder ao membro.
- RESOURCE: o nome da tabela ou da vista cuja política quer atualizar.
- MEMBER_TYPE: o tipo de membro, como
- Inicie o Cloud Shell.
-
Defina o Google Cloud projeto predefinido onde quer aplicar as suas configurações do Terraform.
Só tem de executar este comando uma vez por projeto e pode executá-lo em qualquer diretório.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
As variáveis de ambiente são substituídas se definir valores explícitos no ficheiro de configuração do Terraform.
-
No Cloud Shell, crie um diretório e um novo ficheiro nesse diretório. O nome do ficheiro tem de ter a extensão
.tf
, por exemplo,main.tf
. Neste tutorial, o ficheiro é denominadomain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Se estiver a seguir um tutorial, pode copiar o código de exemplo em cada secção ou passo.
Copie o exemplo de código para o ficheiro
main.tf
criado recentemente.Opcionalmente, copie o código do GitHub. Isto é recomendado quando o fragmento do Terraform faz parte de uma solução completa.
- Reveja e modifique os parâmetros de exemplo para aplicar ao seu ambiente.
- Guarde as alterações.
-
Inicialize o Terraform. Só tem de fazer isto uma vez por diretório.
terraform init
Opcionalmente, para usar a versão mais recente do fornecedor Google, inclua a opção
-upgrade
:terraform init -upgrade
-
Reveja a configuração e verifique se os recursos que o Terraform vai criar ou
atualizar correspondem às suas expetativas:
terraform plan
Faça as correções necessárias à configuração.
-
Aplique a configuração do Terraform executando o seguinte comando e introduzindo
yes
no comando:terraform apply
Aguarde até que o Terraform apresente a mensagem "Apply complete!" (Aplicação concluída!).
- Abra o seu Google Cloud projeto para ver os resultados. Na Google Cloud consola, navegue para os seus recursos na IU para se certificar de que o Terraform os criou ou atualizou.
Para obter a política atual, chame o método
tables.getIamPolicy
.Edite a política para adicionar membros ou controlos de acesso, ou ambos. Para ver o formato exigido pela política, consulte o tópico de referência da Política.
Chame
tables.setIamPolicy
para escrever a política atualizada.
Terraform
Use os recursos
google_bigquery_table_iam
para atualizar o acesso a uma tabela.
Defina a política de acesso para uma tabela
O exemplo seguinte mostra como usar o recurso google_bigquery_table_iam_policy
para definir a política de IAM para a tabela mytable
. Isto 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:[email protected]", ] } } 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 }
Defina a associação de funções para uma tabela
O exemplo seguinte mostra como usar o recurso
google_bigquery_table_iam_binding
para definir a associação numa determinada função para a tabela
mytable
. Esta ação substitui qualquer registo de membro existente nessa função.
Outras funções na política de IAM para a tabela
são preservadas.
# 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:[email protected]", ] }
Defina a associação de funções para um único principal
O exemplo seguinte mostra como usar o recurso google_bigquery_table_iam_member
para atualizar a política de IAM da tabela mytable
de modo a conceder uma função a um principal. A atualização desta política de IAM não afeta o acesso de outros responsáveis que tenham recebido essa função para o 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 num Google Cloud projeto, conclua os passos nas secções seguintes.
Prepare o Cloud Shell
Prepare o diretório
Cada ficheiro de configuração do Terraform tem de ter o seu próprio diretório (também denominado módulo raiz).
Aplique as alterações
API
Go
Antes de experimentar este exemplo, siga as Goinstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Go BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Chame a funçãoIAM().SetPolicy()
do recurso
para guardar as alterações à política de acesso de uma tabela ou uma vista.
Java
Antes de experimentar este exemplo, siga as Javainstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Java BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Node.js
Antes de experimentar este exemplo, siga as Node.jsinstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Node.js BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Chame a funçãoTable#getIamPolicy()
para obter a política de IAM atual de uma tabela ou uma vista, modifique a política adicionando novas associações e, em seguida, use a função
Table#setIamPolicy()
para guardar as alterações à política de acesso.
Python
Antes de experimentar este exemplo, siga as Pythoninstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Python BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Chame a funçãoclient.set_iam_policy()
para guardar as alterações à política de acesso de uma tabela ou uma vista.
Funções predefinidas que concedem acesso a tabelas e vistas
As vistas são tratadas como recursos de tabelas no BigQuery. Para um controlo de acesso detalhado, pode conceder uma função do IAM predefinida ou personalizada numa tabela ou vista específica. A tabela ou a vista também herda os controlos de acesso especificados ao nível do conjunto de dados e superior. Por exemplo, se conceder a um principal a função de proprietário de dados do BigQuery num conjunto de dados, esse principal também tem autorizações de proprietário de dados nas tabelas e nas vistas no conjunto de dados.
As seguintes funções de IAM predefinidas têm autorizações em tabelas ou vistas.
Função | Descrição |
---|---|
Proprietário dos dados do BigQuery
(roles/bigquery.dataOwner ) |
Quando concedida numa tabela ou numa vista, esta função concede as seguintes autorizações:
|
Editor de dados do BigQuery
(roles/bigquery.dataEditor ) |
Quando concedida numa tabela ou numa vista, esta função concede as seguintes autorizações:
|
Visualizador de dados do BigQuery
(roles/bigquery.dataViewer ) |
Quando concedida numa tabela ou numa vista, esta função concede as seguintes autorizações:
|
Visualizador de metadados do BigQuery
(roles/bigquery.metadataViewer ) |
Quando concedida numa tabela ou numa vista, esta função concede as seguintes autorizações:
|
Autorizações para tabelas e visualizações
As vistas são tratadas como recursos de tabelas no BigQuery. Todas as autorizações ao nível da tabela aplicam-se às vistas.
A maioria das autorizações que começam com bigquery.tables
aplica-se ao nível da tabela.
bigquery.tables.create
e bigquery.tables.list
não. Para criar e listar tabelas ou vistas, têm de ser concedidas autorizações bigquery.tables.create
e bigquery.tables.list
a uma função num contentor principal: o conjunto de dados ou o projeto.
A tabela seguinte apresenta todas as autorizações para tabelas e vistas, bem como o recurso de nível mais baixo ao qual podem ser concedidas.
Autorização | Recurso | Ação |
---|---|---|
bigquery.tables.create |
Conjunto de dados | Criar novas tabelas no conjunto de dados. |
bigquery.tables.createIndex |
Tabela | Crie um índice de pesquisa na tabela. |
bigquery.tables.deleteIndex |
Tabela | Elimine um índice de pesquisa na tabela. |
bigquery.tables.createSnapshot |
Tabela | Crie um instantâneo da tabela. A criação de uma imagem instantânea requer várias autorizações adicionais ao nível da tabela e do conjunto de dados. Para ver detalhes, consulte a secção Autorizações e funções para criar instantâneos de tabelas. |
bigquery.tables.deleteSnapshot |
Tabela | Eliminar um instantâneo da tabela. |
bigquery.tables.delete |
Tabela | Elimine uma tabela. |
bigquery.tables.createTagBinding |
Tabela | Crie associações de etiquetas de recursos numa tabela. |
bigquery.tables.deleteTagBinding |
Tabela | Eliminar associações de etiquetas de recursos numa tabela. |
bigquery.tables.listTagBindings |
Tabela | Liste as associações de etiquetas de recursos numa tabela. |
bigquery.tables.listEffectiveTags |
Tabela | Listar as etiquetas eficazes (aplicadas e herdadas) para a tabela. |
bigquery.tables.export |
Tabela | Exporte os dados da tabela. A execução de uma tarefa de exportação também requer autorizações de bigquery.jobs.create . |
bigquery.tables.get |
Tabela | Obtenha metadados para uma tabela. |
bigquery.tables.getData |
Tabela | Consultar os dados da tabela. A execução de uma tarefa de consulta também requer autorizações bigquery.jobs.create . |
bigquery.tables.getIamPolicy |
Tabela | Aceda aos controlos de acesso da tabela. |
bigquery.tables.list |
Conjunto de dados | Listar todas as tabelas e metadados de tabelas no conjunto de dados. |
bigquery.tables.replicateData |
Tabela | Replique os dados da tabela. Esta autorização é necessária para criar visualizações materializadas de réplica. |
bigquery.tables.restoreSnapshot |
Tabela | Restaure um instantâneo de tabela. |
bigquery.tables.setCategory |
Tabela | Defina etiquetas de políticas no esquema da tabela. |
bigquery.tables.setColumnDataPolicy |
Tabela | Defina políticas de acesso ao nível da coluna numa tabela. |
bigquery.tables.setIamPolicy |
Tabela | Defina controlos de acesso numa tabela. |
bigquery.tables.update |
Tabela | Atualize a tabela. metadata. bigquery.tables.get também é
necessário para atualizar os metadados das tabelas na consola. |
bigquery.tables.updateData |
Tabela | Atualize os dados da tabela. |
bigquery.tables.updateIndex |
Tabela | Atualize um índice de pesquisa na tabela. |
Veja os controlos de acesso de uma tabela ou uma vista
Para ver os controlos de acesso de uma tabela ou uma vista, escolha uma das seguintes opções:
Consola
Aceda à página do BigQuery.
No painel Explorador, expanda o projeto, expanda um conjunto de dados e selecione uma tabela ou uma vista.
Clique em
Partilhar.Os controlos de acesso à tabela ou à vista aparecem no painel Partilhar.
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 obter uma política de acesso existente e enviá-la para um ficheiro 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 o seguinte:
- PROJECT_ID: o ID do seu projeto
- DATASET: o nome do seu conjunto de dados
- RESOURCE: o nome da tabela ou da vista cuja política quer ver
- PATH_TO_FILE: o caminho para o ficheiro JSON no seu computador local
Na Google Cloud consola, aceda à página BigQuery.
No editor de consultas, introduza a seguinte declaração:
SELECT COLUMN_LIST FROM PROJECT_ID.`region-REGION`.INFORMATION_SCHEMA.OBJECT_PRIVILEGES WHERE object_schema = "DATASET" AND object_name = "TABLE";
Substitua o seguinte:
- COLUMN_LIST: uma lista de colunas separadas por vírgulas da vista
INFORMATION_SCHEMA.OBJECT_PRIVILEGES
- PROJECT_ID: o ID do seu projeto
- REGION: um qualificador de região
- DATASET: o nome de um conjunto de dados que contém a tabela ou a vista
- TABLE: o nome da tabela ou da vista
- COLUMN_LIST: uma lista de colunas separadas por vírgulas da vista
Clique em
Executar.
SQL
Consulte a INFORMATION_SCHEMA.OBJECT_PRIVILEGES
vista.
As consultas para obter controlos de acesso para uma tabela ou uma vista têm de especificar o object_schema
e o object_name
.
Para mais informações sobre como executar consultas, consulte o artigo Execute uma consulta interativa.
Exemplo:
SELECT object_name, privilege_type, grantee FROM my_project.`region-us`.INFORMATION_SCHEMA.OBJECT_PRIVILEGES WHERE object_schema = "mydataset" AND object_name = "mytable";
+------------------+-----------------------------+--------------------------+
| object_name | privilege_type | grantee |
+------------------+-----------------------------+--------------------------+
| mytable | roles/bigquery.dataEditor | group:[email protected]|
| mytable | roles/bigquery.dataOwner | user:[email protected]|
+------------------+-----------------------------+--------------------------+
API
Para obter a política atual, chame o método tables.getIamPolicy
.
Go
Antes de experimentar este exemplo, siga as Goinstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Go BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Chame a funçãoIAM().Policy()
do recurso. Em seguida, chame a função Roles()
para obter a política de acesso de uma tabela ou uma vista.
Java
Antes de experimentar este exemplo, siga as Javainstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Java BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Node.js
Antes de experimentar este exemplo, siga as Node.jsinstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Node.js BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Obtenha a política de IAM para uma tabela ou uma vista através da funçãoTable#getIamPolicy()
.
Os detalhes da política de acesso estão disponíveis no objeto de política devolvido.
Revogue o acesso a uma tabela ou a uma vista
Para revogar o acesso a uma tabela ou a uma vista, selecione uma das seguintes opções:
Consola
Aceda à página do BigQuery.
No painel Explorador, expanda o projeto, expanda um conjunto de dados e selecione uma tabela ou uma vista.
No painel de detalhes, clique em Partilhar.
Na caixa de diálogo Partilhar, expanda o principal cujo acesso quer revogar.
Clique em
Eliminar.Na caixa de diálogo Remover função do principal?, clique em Remover.
Para regressar à tabela ou ver detalhes, clique em Fechar.
SQL
Para remover o acesso a tabelas ou vistas de entidades, use a declaração DCL REVOKE
:
Na Google Cloud consola, aceda à página BigQuery.
No editor de consultas, introduza a seguinte declaração:
REVOKE `ROLE_LIST` ON RESOURCE_TYPE RESOURCE_NAME FROM "USER_LIST"
Substitua o seguinte:
ROLE_LIST
: uma função ou uma lista de funções separadas por vírgulas que quer revogarRESOURCE_TYPE
: o tipo de recurso do qual a função é revogadaOs valores suportados incluem
TABLE
,VIEW
,MATERIALIZED VIEW
eEXTERNAL TABLE
.RESOURCE_NAME
: o nome do recurso no qual quer revogar a autorizaçãoUSER_LIST
: uma lista de utilizadores separada por vírgulas cujas funções vão ser revogadasPara ver uma lista de formatos válidos, consulte
user_list
.
Clique em
Executar.
Para mais informações sobre como executar consultas, consulte o artigo Execute uma consulta interativa.
O exemplo seguinte revoga a função de proprietário de dados do BigQuery em myTable
:
REVOKE `roles/bigquery.dataOwner`
ON TABLE `myProject`.myDataset.myTable
FROM "group:[email protected]", "serviceAccount:[email protected]"
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 a uma vista, use o comando
bq remove-iam-policy-binding
:bq remove-iam-policy-binding --member=MEMBER_TYPE:MEMBER --role=ROLE --table=true RESOURCE
Substitua o seguinte:
- MEMBER_TYPE: o tipo de membro, como
user
,group
,serviceAccount
oudomain
- MEMBER: o endereço de email ou o nome do domínio do membro
- ROLE: a função que quer revogar ao membro
- RESOURCE: o nome da tabela ou da vista cuja política quer atualizar
- MEMBER_TYPE: o tipo de membro, como
Para obter a política atual, chame o método
tables.getIamPolicy
.Edite a política para remover membros ou associações, ou ambos. Para ver o formato exigido pela política, consulte o tópico de referência da Política.
Chame
tables.setIamPolicy
para escrever a política atualizada.
API
Go
Antes de experimentar este exemplo, siga as Goinstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Go BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Chame a funçãopolicy.Remove()
para remover o acesso.
Em seguida, chame a função IAM().SetPolicy()
para guardar as alterações à política de acesso de uma tabela ou uma vista.
Java
Antes de experimentar este exemplo, siga as Javainstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Java BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Node.js
Antes de experimentar este exemplo, siga as Node.jsinstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Node.js BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Obtenha a política de IAM atual para uma tabela ou uma vista através do métodoTable#getIamPolicy()
.
Modifique a política para remover a função ou o principal pretendido e, em seguida, aplique a política atualizada através do método
Table#setIamPolicy()
.
Trabalhe com controlos de acesso para rotinas
Para enviar feedback ou pedir apoio técnico para esta funcionalidade, envie um email para [email protected].
Pode conceder acesso a uma rotina atribuindo a um principal do IAM uma função predefinida ou personalizada que determina o que o principal pode fazer com a rotina. Isto também é conhecido como anexar uma política de autorização a um recurso. Depois de conceder acesso, pode ver os controlos de acesso da rotina e revogar o acesso à rotina.
Conceda acesso a uma rotina
Para um controlo de acesso detalhado, pode conceder uma função de IAM predefinida ou personalizada numa rotina específica. A rotina também herda os controlos de acesso especificados ao nível do conjunto de dados e superior. Por exemplo, se conceder a um principal a função de proprietário de dados do BigQuery num conjunto de dados, esse principal também tem autorizações de proprietário de dados nas rotinas do conjunto de dados.
Selecione uma das seguintes opções:
Consola
Aceda à página do BigQuery.
No painel Explorador, expanda o seu projeto, expanda o conjunto de dados, expanda Rotinas e, em seguida, selecione uma rotina.
Clique em
Partilhar.Clique em
Adicionar membros.No campo Novos membros, introduza um principal.
Na lista Selecionar uma função, selecione uma função predefinida ou uma função personalizada.
Clique em Guardar.
Para voltar às informações da rotina, clique em Concluído.
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 escrever as informações de rotina existentes (incluindo os controlos de acesso) num ficheiro JSON, use o comando
bq get-iam-policy
:bq get-iam-policy \ PROJECT_ID:DATASET.ROUTINE \ > PATH_TO_FILE
Substitua o seguinte:
- PROJECT_ID: o ID do seu projeto
- DATASET: o nome do conjunto de dados que contém a rotina que quer atualizar
- ROUTINE: o nome do recurso a atualizar
- PATH_TO_FILE: o caminho para o ficheiro JSON no seu computador local
Faça alterações à secção
bindings
do ficheiro JSON. Uma associação associa um ou mais responsáveis a um únicorole
. Os principais podem ser contas de utilizador, contas de serviço, grupos Google e domínios. Por exemplo, a secçãobindings
de um ficheiro JSON de uma rotina teria o seguinte aspeto:{ "bindings": [ { "role": "roles/bigquery.dataViewer", "members": [ "user:[email protected]", "group:[email protected]", "domain:example.com", ] }, ], "etag": "BwWWja0YfJA=", "version": 1 }
Para atualizar a política de acesso, use o comando
bq set-iam-policy
:bq set-iam-policy PROJECT_ID:DATASET.ROUTINE PATH_TO_FILE
Para validar as alterações ao controlo de acesso, use o comando
bq get-iam-policy
novamente sem escrever as informações num ficheiro:bq get-iam-policy --format=prettyjson \\ PROJECT_ID:DATASET.ROUTINE
Para obter a política atual, chame o método
routines.getIamPolicy
.Edite a política para adicionar responsáveis, associações ou ambos. Para ver o formato exigido pela política, consulte o tópico de referência da Política.
Call
routines.setIamPolicy
para escrever a política atualizada.
API
Funções predefinidas que concedem acesso a rotinas
Para um controlo de acesso detalhado, pode conceder uma função de IAM predefinida ou personalizada numa rotina específica. A rotina também herda os controlos de acesso especificados ao nível do conjunto de dados e superior. Por exemplo, se conceder a um principal a função de proprietário de dados num conjunto de dados, esse principal também tem autorizações de proprietário de dados nas rotinas no conjunto de dados através da herança.
As seguintes funções de IAM predefinidas têm autorizações em rotinas.
Função | Descrição |
---|---|
Proprietário dos dados do BigQuery
(roles/bigquery.dataOwner ) |
Quando concedida numa rotina, esta função concede as seguintes autorizações:
Não deve conceder a função de proprietário dos dados ao nível da rotina. O Editor de dados também concede todas as autorizações para a rotina e é uma função menos permissiva. |
Editor de dados do BigQuery
(roles/bigquery.dataEditor ) |
Quando concedida numa rotina, esta função concede as seguintes autorizações:
|
Visualizador de dados do BigQuery
(roles/bigquery.dataViewer ) |
Quando concedida numa rotina, esta função concede as seguintes autorizações:
|
Visualizador de metadados do BigQuery
(roles/bigquery.metadataViewer ) |
Quando concedida numa rotina, esta função concede as seguintes autorizações:
|
Autorizações para rotinas
A maioria das autorizações que começam com bigquery.routines
aplica-se ao nível da rotina.
bigquery.routines.create
e bigquery.routines.list
não. Para criar e listar rotinas, as autorizações bigquery.routines.create
e bigquery.routines.list
têm de ser concedidas a uma função no contentor principal, ou seja, o conjunto de dados.
A tabela seguinte apresenta todas as autorizações para rotinas e o recurso de nível mais baixo ao qual podem ser concedidas.
Autorização | Recurso | Descrição |
---|---|---|
bigquery.routines.create |
Conjunto de dados | Crie uma rotina no conjunto de dados. Esta autorização também requer
bigquery.jobs.create para executar uma tarefa de consulta que contenha uma declaração
CREATE FUNCTION . |
bigquery.routines.delete |
Rotina | Elimine uma rotina. |
bigquery.routines.get |
Rotina | Referenciar uma rotina criada por outra pessoa. Esta autorização também
requer bigquery.jobs.create para executar uma tarefa de consulta que
faça referência à rotina, e também precisa de autorização para aceder a quaisquer recursos
a que a rotina faça referência, como tabelas ou vistas. |
bigquery.routines.list |
Conjunto de dados | Listar rotinas no conjunto de dados e mostrar metadados para rotinas. |
bigquery.routines.update |
Rotina | Atualize as definições e os metadados das rotinas. |
bigquery.routines.getIamPolicy |
Rotina | Aceda aos controlos da rotina. |
bigquery.routines.setIamPolicy |
Rotina | Defina os controlos de acesso para a rotina. |
Veja os controlos de acesso de uma rotina
Para ver os controlos de acesso de uma rotina, escolha uma das seguintes opções:
Consola
Aceda à página do BigQuery.
No painel Explorador, expanda o projeto, expanda o conjunto de dados, expanda Rotinas e, de seguida, selecione uma rotina.
Clique em
Partilhar.Os controlos de acesso da rotina são apresentados no painel Partilhar.
bq
O comando bq get-iam-policy
não oferece suporte para a visualização dos controlos de acesso numa rotina.
SQL
A vista INFORMATION_SCHEMA.OBJECT_PRIVILEGES
não mostra os controlos de acesso para rotinas.
API
Para obter a política atual, chame o método routines.getIamPolicy
.
Revogue o acesso a uma rotina
Para revogar o acesso a uma rotina, selecione uma das seguintes opções:
Consola
Aceda à página do BigQuery.
No painel Explorador, expanda o projeto, expanda um conjunto de dados, expanda Rotinas e, de seguida, selecione uma rotina.
No painel de detalhes, clique em Partilha > Autorizações.
Na caixa de diálogo Autorizações de rotina, expanda o principal cujo acesso quer revogar.
Clique em
Remover principal.Na caixa de diálogo Remover função do principal?, clique em Remover.
Clique em Fechar.
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 escrever as informações de rotina existentes (incluindo os controlos de acesso) num ficheiro JSON, use o comando
bq get-iam-policy
:bq get-iam-policy --routine PROJECT_ID:DATASET.ROUTINE > PATH_TO_FILE
Substitua o seguinte:
- PROJECT_ID: o ID do seu projeto
- DATASET: o nome do conjunto de dados que contém a rotina que quer atualizar
- ROUTINE: o nome do recurso a atualizar
- PATH_TO_FILE: o caminho para o ficheiro JSON no seu computador local
No ficheiro de política, o valor de
version
permanece1
. Este número refere-se à versão do esquema da política de IAM e não à versão da política. O valor deetag
value é o número da versão da política.Faça alterações à secção
access
do ficheiro JSON. Pode remover qualquer uma das entradasspecialGroup
:projectOwners
,projectWriters
,projectReaders
eallAuthenticatedUsers
. Também pode remover qualquer um dos seguintes elementos:userByEmail
,groupByEmail
edomain
.Por exemplo, a secção
access
do ficheiro JSON de uma rotina teria o seguinte aspeto:{ "bindings": [ { "role": "roles/bigquery.dataViewer", "members": [ "user:[email protected]", "group:[email protected]", "domain:google.com", ] }, ], "etag": "BwWWja0YfJA=", "version": 1 }
Para atualizar a política de acesso, use o comando
bq set-iam-policy
:bq set-iam-policy --routine PROJECT_ID:DATASET.ROUTINE PATH_TO_FILE
Para validar as alterações ao controlo de acesso, use novamente o comando
get-iam-policy
sem escrever as informações num ficheiro:bq get-iam-policy --routine --format=prettyjson PROJECT_ID:DATASET.ROUTINE
Para obter a política atual, chame o método
routines.getIamPolicy
.Edite a política para adicionar principais ou associações, ou ambos. Para ver o formato exigido pela política, consulte o tópico de referência da Política.
API
Veja os controlos de acesso herdados de um recurso
Pode examinar as funções de IAM herdadas de um recurso através da IU Web do BigQuery. Precisa das autorizações adequadas para ver a herança na consola. Para examinar a herança de um conjunto de dados, uma tabela, uma vista ou uma rotina:
Na Google Cloud consola, aceda à página BigQuery.
No painel Explorador, selecione o conjunto de dados ou expanda o conjunto de dados e selecione uma tabela, uma vista ou uma rotina.
Para um conjunto de dados, clique em Partilha. Para uma tabela, uma vista ou uma rotina, clique em Partilhar.
Verifique se a opção Mostrar funções herdadas na tabela está ativada.
Expanda uma função na tabela.
Na coluna Herança, o ícone hexagonal indica se a função foi herdada de um recurso principal.
Negue o acesso a um recurso
As políticas de negação de IAM permitem-lhe definir limites de proteção no acesso aos recursos do BigQuery. Pode definir regras de negação que impedem que os responsáveis selecionados usem determinadas autorizações, independentemente das funções que lhes são concedidas.
Para obter informações sobre como criar, atualizar e eliminar políticas de recusa, consulte o artigo Recuse o acesso a recursos.
Casos especiais
Considere os seguintes cenários quando criar políticas de recusa de IAM em algumas autorizações do BigQuery:
O acesso a recursos autorizados (vistas, rotinas, conjuntos de dados ou procedimentos armazenados) permite-lhe criar, eliminar ou manipular uma tabela, juntamente com a leitura e a modificação dos dados da tabela, mesmo que não tenha autorização direta para realizar essas operações. Também pode obter dados ou metadados do modelo e invocar outros procedimentos armazenados na tabela subjacente. Esta capacidade implica que os recursos autorizados têm as seguintes autorizaçõ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 estes recursos autorizados, adicione um dos seguintes valores ao campo
deniedPrincipal
quando criar a política de recusa:Valor Exemplo de utilização 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 o seu projeto do tipoINT64
.Para isentar determinados responsáveis da política de recusa, especifique esses responsáveis no campo
exceptionPrincipals
da política de recusa. Por exemplo,exceptionPrincipals: "principalSet://bigquery.googleapis.com/projects/1234/*"
.O BigQuery coloca em cache os resultados das consultas de um proprietário da tarefa durante 24 horas, aos quais o proprietário da tarefa pode aceder sem precisar da autorização
bigquery.tables.getData
na tabela que contém os dados. Por conseguinte, a adição de uma política de negação do IAM à autorizaçãobigquery.tables.getData
não bloqueia o acesso aos resultados em cache para o proprietário da tarefa até a cache expirar. Para bloquear o acesso do proprietário da tarefa aos resultados em cache, crie uma política de recusa separada na autorizaçãobigquery.jobs.create
.Para evitar o acesso não intencional a dados quando usar políticas de negação para bloquear operações de leitura de dados, recomendamos que também reveja e revogue todas as subscrições existentes no conjunto de dados.
Para criar uma política de negação do IAM para ver os controlos de acesso do conjunto de dados, negue as seguintes autorizações:
bigquery.datasets.get
bigquery.datasets.getIamPolicy
Para criar uma política de negação do IAM para atualizar os controlos de acesso ao conjunto de dados, negue as seguintes autorizações:
bigquery.datasets.update
bigquery.datasets.setIamPolicy
O que se segue?
Saiba como usar o método
projects.testIamPermissions
para testar o acesso do utilizador a um recurso.