Permissões e papéis do IAM do BigQuery
Nesta página, você encontra informações sobre papéis e permissões do gerenciamento de identidade e acesso (IAM, na sigla em inglês) do BigQuery. O IAM permite conceder acesso granular a recursos específicos do BigQuery e ajuda a impedir o acesso a outros recursos. O IAM permite aplicar o princípio de privilégio mínimo de segurança, que indica que ninguém precisa ter mais permissões do que o realmente necessário.
Quando um principal (um usuário, grupo ou uma conta de serviço) chama uma API do Google Cloud, ele precisa ter as permissões apropriadas do IAM para usar o recurso. Para conceder as permissões necessárias a um principal, atribua um papel do IAM a ele.
Neste documento, você vai aprender a usar papéis predefinidos e personalizados do IAM que permitem que os principais acessem recursos do BigQuery.
Para se familiarizar com o gerenciamento do acesso no Google Cloud em geral, consulte a visão geral do IAM.
Tipos de papéis do IAM
Um papel é um conjunto de permissões. É possível usar os seguintes tipos de papéis no IAM para fornecer acesso a recursos do BigQuery:
- Papéis predefinidos são gerenciados pelo Google Cloud e permitem padrões de controle de acesso e casos de uso comuns.
- Papéis personalizados dão acesso de acordo com uma lista de permissões especificada pelo usuário.
Para determinar se uma ou mais permissões estão incluídas em um papel, use um dos seguintes métodos:
- A referência de pesquisa de permissões do IAM
- O comando
gcloud iam roles describe
- O método
roles.get()
na API IAM
Quando você atribui vários tipos de papel a um usuário, as permissões concedidas são uma combinação das permissões de cada papel.
Para mais informações sobre como usar o IAM para acessar recursos, consulte Como conceder, alterar e revogar acesso a recursos na documentação do IAM.
Para informações sobre como criar papéis personalizados, consulte Como criar e gerenciar papéis personalizados na documentação do IAM
Papéis do IAM no BigQuery
As permissões não são atribuídas diretamente a usuários, grupos ou contas de serviço. Em vez disso, usuários, grupos ou contas de serviço recebem acesso a um ou mais papéis predefinidos ou personalizados para conceder a eles permissões para executar ações em recursos.
É possível conceder acesso nos seguintes níveis de recursos do BigQuery:
- Organizações, pastas ou projetos
- Conexões
- Conjuntos de dados
- Tabelas ou visualizações
- Tags de política, políticas de acesso a linhas ou políticas de dados do BigQuery
Papéis aplicados no nível da organização ou do projeto do Google Cloud
Ao atribuir papéis no nível da organização e do projeto, você concede permissão para executar jobs do BigQuery ou acessar todos os recursos do BigQuery de um projeto.
Papéis aplicados no nível do conjunto de dados
É possível atribuir papéis no nível do conjunto de dados para fornecer acesso a um conjunto de dados específico, sem dar acesso total aos recursos do projeto. Na hierarquia de recursos do Cloud IAM, os conjuntos de dados do BigQuery são recursos filhos de projetos. Para mais informações sobre como atribuir papéis no nível do conjunto de dados, consulte Como controlar o acesso a conjuntos de dados.
Papéis aplicados a recursos individuais dentro de conjuntos de dados
É possível atribuir papéis individualmente a determinados tipos de recursos dentro de conjuntos de dados, sem fornecer acesso total aos recursos do conjunto de dados.
Os papéis podem ser aplicados a recursos individuais dos seguintes tipos:
- tabelas
- visualizações
Os papéis não podem ser aplicados a recursos individuais dos seguintes tipos:
- routines
- models
Para mais informações sobre como atribuir papéis no nível da tabela ou da visualização, consulte Como controlar o acesso a tabelas ou visualizações.
Papéis predefinidos do IAM do BigQuery
A tabela abaixo mostra os papéis do IAM no BigQuery com uma lista correspondente de todas as permissões que cada papel inclui. Lembre-se que cada permissão se aplica a um tipo de recurso específico.
Role | Permissions |
---|---|
BigQuery Admin( Provides permissions to manage all resources within the project. Can manage all data within the project, and can cancel jobs from other users running within the project. Lowest-level resources where you can grant this role:
|
|
BigQuery Connection Admin(
|
|
BigQuery Connection User(
|
|
BigQuery Data Editor( When applied to a table or view, this role provides permissions to:
This role cannot be applied to individual models or routines. When applied to a dataset, this role provides permissions to:
When applied at the project or organization level, this role can also create new datasets. Lowest-level resources where you can grant this role:
|
|
BigQuery Data Owner( When applied to a table or view, this role provides permissions to:
This role cannot be applied to individual models or routines. When applied to a dataset, this role provides permissions to:
When applied at the project or organization level, this role can also create new datasets. Lowest-level resources where you can grant this role:
|
|
BigQuery Data Viewer( When applied to a table or view, this role provides permissions to:
This role cannot be applied to individual models or routines. When applied to a dataset, this role provides permissions to list all of the resources in the dataset (such as tables, views, snapshots, models, and routines) and to read their data and metadata with applicable APIs and in queries. When applied at the project or organization level, this role can also enumerate all datasets in the project. Additional roles, however, are necessary to allow the running of jobs. Lowest-level resources where you can grant this role:
|
|
BigQuery Filtered Data Viewer( Access to view filtered table data defined by a row access policy |
|
BigQuery Job User( Provides permissions to run jobs, including queries, within the project. Lowest-level resources where you can grant this role:
|
|
BigQuery Metadata Viewer( When applied to a table or view, this role provides permissions to:
This role cannot be applied to individual models or routines. When applied to a dataset, this role provides permissions to:
When applied at the project or organization level, this role provides permissions to:
Additional roles are necessary to allow the running of jobs. Lowest-level resources where you can grant this role:
|
|
BigQuery Read Session User( Provides the ability to create and use read sessions. Lowest-level resources where you can grant this role:
|
|
BigQuery Resource Admin( Administers BigQuery workloads, including slot assignments, commitments, and reservations. |
|
BigQuery Resource Editor( Manages BigQuery workloads, but is unable to create or modify slot commitments. |
|
BigQuery Resource Viewer( Can view BigQuery workloads, but cannot create or modify slot reservations or commitments. |
|
BigQuery Studio Admin( Combination role of BigQuery Admin, Dataform Admin, and Notebook Runtime Admin. |
|
BigQuery Studio User( Combination role of BigQuery Job User, BigQuery Read Session User, Dataform Code Creator, and Notebook Runtime User. |
|
BigQuery User( When applied to a dataset, this role provides the ability to read the dataset's metadata and list tables in the dataset. When applied to a project, this role also provides the ability to run jobs, including queries,
within the project. A principal with this role can enumerate their own jobs, cancel their own jobs, and
enumerate datasets within a project. Additionally, allows the creation of new datasets within the
project; the creator is granted the BigQuery Data Owner role ( Lowest-level resources where you can grant this role:
|
|
Masked Reader( Masked read access to sub-resources tagged by the policy tag associated with a data policy, for example, BigQuery columns |
|
Raw Data Reader Beta( Raw read access to sub-resources associated with a data policy, for example, BigQuery columns |
|
Papéis do IAM personalizados para o BigQuery
Para criar um papel personalizado do IAM para o BigQuery, siga as etapas descritas para papéis personalizados do IAM usando as permissões do BigQuery.
Papéis básicos do BigQuery
Para informações sobre os papéis básicos do BigQuery, consulte Papéis básicos e permissões do BigQuery.
Permissões do BigQuery
A tabela a seguir descreve as permissões disponíveis no BigQuery. Elas estão incluídas em papéis predefinidos e podem ser usadas em definições de papéis personalizados.
Permissão | Descrição |
---|---|
bigquery.bireservations.get |
Lê as reservas do mecanismo de BI. |
bigquery.bireservations.update |
Atualiza as reservas do BI Engine. |
bigquery.capacityCommitments.create |
Cria compromissos de capacidade no projeto. |
bigquery.capacityCommitments.delete |
Exclui um compromisso de capacidade. |
bigquery.capacityCommitments.get |
Recupera detalhes sobre um compromisso de capacidade. |
bigquery.capacityCommitments.list |
Lista todos os compromissos de capacidade em um projeto. |
bigquery.capacityCommitments.update |
Atualiza todos os compromissos de capacidade em um projeto. |
bigquery.config.update |
Criar uma configuração. |
bigquery.config.get |
Conseguir detalhes sobre uma configuração. |
bigquery.connections.create |
Cria novas conexões em um projeto. |
bigquery.connections.delete |
Exclui uma conexão. |
bigquery.connections.get |
Recebe metadados de conexão. As credenciais são excluídas. |
bigquery.connections.list |
Lista conexões em um projeto. |
bigquery.connections.update |
Atualiza uma conexão e as credenciais dela. |
bigquery.connections.updateTag |
Atualiza tags para uma conexão. |
bigquery.connections.use |
Usa uma configuração de conexão para se conectar a uma fonte de dados remota. |
bigquery.connections.delegate |
Delega conexão para criar tabelas externas autorizadas e funções remotas. |
bigquery.dataPolicies.create |
Crie novas políticas de dados. |
bigquery.dataPolicies.delete |
Exclua políticas de dados. |
bigquery.dataPolicies.get |
Receba metadados sobre políticas de dados. |
bigquery.dataPolicies.getIamPolicy |
Leia as permissões do IAM de uma política de dados. |
bigquery.dataPolicies.list |
Liste as políticas de dados em um projeto. |
bigquery.dataPolicies.maskedGet |
Confira os dados mascarados de uma coluna com uma tag de política associada a uma política de dados. |
bigquery.dataPolicies.setIamPolicy |
Defina as permissões do IAM de uma política de dados. |
bigquery.dataPolicies.update |
Atualizar metadados para uma política de dados. |
bigquery.datasets.create |
Cria novos conjuntos de dados vazios. |
bigquery.datasets.createTagBinding |
Cria vinculações de tags de recursos em um conjunto de dados. |
bigquery.datasets.delete |
Excluir um conjunto de dados. |
bigquery.datasets.deleteTagBinding |
Exclui vinculações de tags de recurso em um conjunto de dados |
bigquery.datasets.get |
Recebe metadados e permissões sobre um conjunto de dados.
A visualização de permissões no console do Google Cloud também requer a permissão bigquery.datasets.getIamPolicy . |
bigquery.datasets.getIamPolicy |
Necessário no console do Google Cloud para dar ao usuário a opção de receber as permissões do IAM de um conjunto de dados. Falha ao abrir. A capacidade de realizar a operação de acesso às permissões é controlada pela permissão bigquery.datasets.get . |
bigquery.datasets.link |
Criar um conjunto de dados vinculado. |
bigquery.datasets.listTagBindings |
Lista as vinculações de tags de recurso em um conjunto de dados. |
bigquery.datasets.setIamPolicy |
Necessário no console do Google Cloud para dar ao usuário a opção de definir as permissões do IAM de um conjunto de dados. Falha ao abrir. A capacidade de realizar a operação de definição das permissões é controlada pela permissão bigquery.datasets.update . |
bigquery.datasets.update |
Atualiza metadados e permissões para um conjunto de dados.
A atribuição de permissões no console do Google Cloud também requer a permissão bigquery.datasets.setIamPolicy . |
bigquery.datasets.updateTag |
Atualiza as tags do Data Catalog de um conjunto de dados. |
bigquery.jobs.create |
Executa jobs (incluindo consultas) no projeto. |
bigquery.jobs.get |
Recebe dados e metadados em qualquer job.1 |
bigquery.jobs.list |
Listar todos os jobs e recuperar metadados em qualquer job enviado por qualquer usuário. Em jobs enviados por outros usuários, detalhes e metadados são editados. |
bigquery.jobs.listAll |
Lista todos os jobs e recupera metadados em qualquer job enviado por qualquer usuário. |
bigquery.jobs.listExecutionMetadata |
Lista todos os metadados de execução de job (sem informações sensíveis) em qualquer job enviado por qualquer usuário. Aplicada apenas no nível da organização e usada pela interface do administrador. |
bigquery.jobs.delete |
Exclui metadados de um job. |
bigquery.jobs.update |
Cancela qualquer job.1 |
bigquery.models.create |
Criar novos modelos de machine learning. |
bigquery.models.delete |
Exclua modelos de machine learning. |
bigquery.models.getData |
Receba dados do modelo de machine learning. Para conferir os metadados do modelo, você precisa de bigquery.models.getMetadata . |
bigquery.models.getMetadata |
Recebe metadados do modelo de machine learning. Para conferir os dados do modelo, você precisa de bigquery.models.getData . |
bigquery.models.list |
Lista modelos de machine learning e metadados nos modelos. |
bigquery.models.updateData |
Atualizar os dados do modelo de machine learning. Para atualizar os metadados do modelo, você precisa de bigquery.models.updateMetadata . |
bigquery.models.updateMetadata |
Atualiza os metadados do modelo de machine learning. Para atualizar os dados do modelo, você precisa de
bigquery.models.updateData . |
bigquery.models.export |
Exporte modelos de machine learning. |
bigquery.models.updateTag |
Atualize as tags do Data Catalog de um modelo. |
bigquery.readsessions.create |
Cria uma nova sessão de leitura usando a API Storage Read. |
bigquery.readsessions.getData |
Lê dados de uma sessão de leitura usando a API Storage Read. |
bigquery.readsessions.update |
Atualiza uma sessão de leitura usando a API Storage Read. |
bigquery.reservations.create |
Crie uma reserva de slot em um projeto de administração. |
bigquery.reservations.delete |
Exclua uma reserva de slot. |
bigquery.reservations.get |
Recuperar detalhes sobre uma reserva de slot. |
bigquery.reservations.list |
Liste todas as reservas de slot em um projeto de administração. |
bigquery.reservations.update |
Atualize as propriedades de uma reserva de slot. |
bigquery.reservationAssignments.create |
Cria uma atribuição de reserva.
Essa permissão é obrigatória no projeto do proprietário e no recurso de transferência. |
bigquery.reservationAssignments.delete |
Exclui uma atribuição de reserva.
Essa permissão é necessária no projeto proprietário e no recurso atribuído. |
bigquery.reservationAssignments.list |
Lista todas as atribuições de reserva em um projeto. |
bigquery.reservationAssignments.search |
Encontra uma atribuição de reserva para um determinado projeto, pasta ou organização. |
bigquery.rowAccessPolicies.create |
Cria uma nova política de acesso no nível da linha em uma tabela. |
bigquery.rowAccessPolicies.delete |
Exclui uma política de acesso no nível da linha de uma tabela. |
bigquery.rowAccessPolicies.getFilteredData |
Recebe dados em uma tabela que você quer que fiquem visíveis apenas aos principais da lista de beneficiários de uma política de acesso no nível da linha. Recomendamos que essa permissão seja concedida apenas em um recurso de política de acesso no nível da linha. |
bigquery.rowAccessPolicies.list |
Lista todas as políticas de acesso no nível da linha em uma tabela. |
bigquery.rowAccessPolicies.overrideTimeTravelRestrictions |
Acesse dados históricos em uma tabela que tenha, ou já tenha sido, políticas de acesso no nível da linha. |
bigquery.rowAccessPolicies.getIamPolicy |
Recebe as permissões do IAM de uma política de acesso da linha. |
bigquery.rowAccessPolicies.setIamPolicy |
Define as permissões de IAM da política de acesso da linha. |
bigquery.rowAccessPolicies.update |
Recria uma política de acesso no nível da linha. |
bigquery.routines.create |
Cria novas rotinas (funções e procedimentos armazenados). |
bigquery.routines.delete |
Exclui rotinas. |
bigquery.routines.get |
Recebe definições e metadados de rotina. |
bigquery.routines.list |
Lista rotinas e metadados em rotinas. |
bigquery.routines.update |
Atualiza definições e metadados de rotina. |
bigquery.routines.updateTag |
Atualize as tags do Data Catalog para uma rotina. |
bigquery.savedqueries.create |
Cria consultas salvas. |
bigquery.savedqueries.delete |
Exclui consultas salvas. |
bigquery.savedqueries.get |
Recebe metadados em consultas salvas. |
bigquery.savedqueries.list |
Listar de consultas salvas. |
bigquery.savedqueries.update |
Atualiza consultas salvas. |
bigquery.tables.create |
Cria novas tabelas. |
bigquery.tables.createIndex |
Cria índices de pesquisa em tabelas. |
bigquery.tables.createSnapshot
|
Cria novos snapshots da tabela. |
bigquery.tables.createTagBinding
|
Cria vinculações de tags de recursos em um tabela. |
bigquery.tables.delete |
Exclui tabelas. |
bigquery.tables.deleteIndex |
Solta índices de pesquisa em tabelas. |
bigquery.tables.deleteSnapshot
|
Exclui snapshots da tabela. |
bigquery.tables.deleteTagBinding
|
Exclui vinculações de tags de recursos em um tabela. |
bigquery.tables.export |
Exporta dados de tabela do BigQuery. |
bigquery.tables.get |
Recebe metadados de tabela. Para conferir os dados da tabela, você precisa de bigquery.tables.getData . |
bigquery.tables.getData |
Recebe dados da tabela. Essa permissão é obrigatória para consultar dados da tabela. Para conferir os metadados da tabela, você precisa bigquery.tables.get . |
bigquery.tables.getIamPolicy |
Faz a leitura da política do Cloud IAM de uma tabela. |
bigquery.tables.list |
Lista tabelas e metadados em tabelas. |
bigquery.tables.listEffectiveTags |
Listar vinculações de tags eficazes
com a API Cloud Resource Manager. É marcada quando a flag --effective
é usada. |
bigquery.tables.listTagBindings |
Listar vinculações de tags com a API Cloud Resource Manager. |
bigquery.tables.replicateData |
Replicar os dados da tabela. Essa permissão é necessária para criar visualizações materializadas de réplicas. |
bigquery.tables.restoreSnapshot
|
Restaura snapshots da tabela. |
bigquery.tables.setCategory |
Define as tags de política no esquema da tabela. |
bigquery.tables.setIamPolicy |
Altera a política do Cloud IAM de uma tabela. |
bigquery.tables.update |
Atualiza os metadados da tabela. |
bigquery.tables.updateData |
Atualiza os dados da tabela. |
bigquery.tables.updateTag |
Atualize as tags do Data Catalog de uma tabela. |
bigquery.transfers.get |
Recebe metadados de transferência. |
bigquery.transfers.update |
Cria, atualiza e exclui transferências. |
1Para qualquer job criado, você tem automaticamente o
equivalente às permissões
bigquery.jobs.get
e bigquery.jobs.update
.
Permissões para tarefas do BigQuery ML
A tabela a seguir descreve as permissões necessárias para tarefas comuns do BigQuery ML.
Permissão | Descrição |
---|---|
bigquery.jobs.create bigquery.models.create bigquery.models.getData bigquery.models.updateData |
Criar um novo modelo usando a instrução CREATE MODEL |
bigquery.jobs.create bigquery.models.create bigquery.models.getData bigquery.models.updateData bigquery.models.updateMetadata |
Substituir um modelo atual usando a instrução CREATE OR REPLACE MODEL |
bigquery.models.delete |
Excluir modelo usando a API models.delete |
bigquery.jobs.create bigquery.models.delete |
Excluir modelo usando a instrução DROP MODEL |
bigquery.models.getMetadata |
Receber metadados do modelo usando a API models.get |
bigquery.models.list |
Listar modelos e metadados em modelos usando a API models.list |
bigquery.models.updateMetadata |
Atualize os metadados do modelo usando a API models.delete. Se você definir ou atualizar um prazo de validade diferente de zero para o modelo, a permissão bigquery.models.delete também será necessária. |
bigquery.jobs.create bigquery.models.getData
|
Execute avaliação, previsão e inspeções de modelos e recursos usando funções como ML.EVALUATE , ML.PREDICT , ML.TRAINING_INFO e ML.WEIGHTS . |
bigquery.jobs.create bigquery.models.export
|
Exportar um modelo |
bigquery.models.updateTag |
Atualize as tags do Data Catalog de um modelo. |
A seguir
- Para mais informações sobre como atribuir papéis no nível do conjunto de dados, consulte Como controlar o acesso a conjuntos de dados.
- Para mais informações sobre como atribuir papéis no nível de tabela ou visualização, consulte Como controlar o acesso a tabelas e visualizações.