Resolver problemas com permissões do IAM no BigQuery
Neste documento, mostramos como resolver problemas com permissões do Identity and Access Management (IAM) no BigQuery. Problemas de permissão do IAM geralmente resultam em erros Access Denied
, como estes:
Access Denied: Project PROJECT_ID: User does not have bigquery.jobs.create permission in project PROJECT_ID.
Access Denied: Project PROJECT_ID: User does not have bigquery.datasets.get permission on dataset DATASET.
User does not have permission to query table PROJECT_ID:DATASET.TABLE.
Access Denied: Table PROJECT_ID:DATASET.TABLE: User does not have permission to query table PROJECT_ID:DATASET.TABLE, or perhaps it does not exist.
Access Denied: User PRINCIPAL does not have permission to perform bigquery.tables.getData on resource 'projects/PROJECT_ID/datasets/DATASET/tables/TABLE'.
Antes de começar
- Para resolver problemas de acesso de um principal a um recurso do BigQuery, verifique se você tem as permissões necessárias do IAM.
Reúna informações sobre o problema
A primeira etapa para resolver um problema de acesso a recursos é determinar a permissão ausente, o principal do IAM que teve o acesso negado e o recurso que o principal estava tentando acessar.
Receber informações do histórico de erros ou jobs
Para informações sobre o principal, o recurso e as permissões, examine a saída da ferramenta de linha de comando bq, a resposta da API ou o BigQuery no console Google Cloud .
Por exemplo, se você tentar executar uma consulta com permissões insuficientes, um erro como o seguinte vai aparecer na guia Informações do job da seção Resultados da consulta do console Google Cloud .
Examine o erro para determinar o principal, o recurso e as permissões.
Em alguns casos, é possível solicitar as permissões ausentes diretamente na mensagem de erro. Para mais informações, consulte Resolver problemas de mensagens de erro de permissão na documentação do IAM.
Receber informações dos registros de auditoria do Cloud
Se a mensagem de erro for genérica, estiver faltando informações ou se a ação falhar em um processo em segundo plano, use o Explorador de registros dos Registros de auditoria do Cloud para receber informações sobre o erro.
No console do Google Cloud , acesse a página Análise de registros.
Acessar o Explorador de registros
Ou, no menu de navegação, escolha Monitoring > Análise de registros.
No Explorador de registros, escolha Registros do projeto como o escopo dos registros.
Na janela de consulta, insira o seguinte comando para receber erros relacionados a permissões dos registros de acesso a dados do BigQuery:
resource.type="bigquery_resource" AND logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_access" AND protoPayload.status.message:"Access Denied" OR protoPayload.status.message:"Permission denied" OR protoPayload.status.code=7
Substitua PROJECT_ID pela ID do seu projeto.
Nos resultados da consulta, expanda a entrada de registro que corresponde à operação com falha.
Na seção
protoPayload
, expanda a matrizauthorizationInfo
e cada nó dela.authorizationInfo
A matriz
authorizationInfo
mostra todas as verificações de permissão realizadas durante a chamada de API.Para saber a causa do erro, procure a entrada
granted: false
. A entradagranted: false
mostra as seguintes informações:permission
: a string de permissão do IAM que foi verificada. Por exemplo,bigquery.tables.getData
.resource
: o nome totalmente qualificado do recurso que o principal tentou acessar. Por exemplo,projects/myproject/datasets/mydataset/tables/mytable
.principalEmail
(se disponível): referenciado emprotoPayload.authenticationInfo
, esse é o principal que tentou a ação.
Usar o Policy Analyzer para políticas de permissão
Com a Análise de políticas para políticas de permissão, você descobre quais principais do IAM têm qual acesso a quais recursos do BigQuery com base nas políticas de permissão do IAM.
Depois de reunir informações sobre o erro de permissões, use a Análise de políticas para entender por que o principal não tem o acesso necessário. Essa ferramenta analisa todas as políticas relevantes, as associações em grupos do Google e a herança de recursos principais, como um projeto, uma pasta e sua organização.
Para usar a Análise de políticas em políticas de permissão, crie uma consulta de análise, especifique um escopo para a análise e execute a consulta.
No console Google Cloud , acesse a página Policy Analyzer.
Acessar a Análise de políticas
Ou, no menu de navegação, escolha IAM e administrador > Analisador de políticas.
Clique em Criar consulta personalizada.
Na página Configurar sua consulta, insira as informações coletadas anteriormente:
Na seção Selecionar o escopo, no campo Selecionar escopo da consulta, verifique se o projeto atual aparece ou clique em Procurar para escolher outro recurso.
Na seção Definir os parâmetros de consulta, em Parâmetro 1, escolha Principal e, no campo Principal, insira o e-mail do usuário, grupo ou conta de serviço.
Clique em
Adicionar parâmetro.Para Parâmetro 2, escolha Permissão. No campo Permissão, clique em Selecionar, escolha a permissão do BigQuery e clique em Adicionar. Por exemplo, selecione
bigquery.tables.getData
.Clique em
Adicionar parâmetro.Em Parâmetro 3, escolha Recurso e, no campo Recurso, insira o nome totalmente qualificado do recurso. O nome do recurso precisa incluir o prefixo do serviço, como nos exemplos a seguir:
- Projeto do BigQuery:
//cloudresourcemanager.googleapis.com/projects/PROJECT_ID
- Conjunto de dados do BigQuery:
//bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET
- Tabela do BigQuery:
//bigquery.googleapis.com/projects/PROJECT/datasets/DATASET/tables/TABLE
- Projeto do BigQuery:
No painel Consulta personalizada, clique em Analisar > Executar consulta.
Analise os resultados da consulta. O resultado pode ser um dos seguintes:
- Uma lista vazia. Nenhum resultado confirma que o principal não tem a permissão necessária. Você precisa conceder ao principal uma função que forneça as permissões corretas.
- Um ou mais resultados. Se o analisador encontrar uma política de permissão, algum tipo de acesso vai existir. Clique em Ver vinculação em cada resultado para conferir os papéis que dão acesso ao recurso de que o principal é membro. A vinculação de política mostra se o acesso é concedido por associação ou herança de grupo ou se é negado por uma condição do IAM ou uma política de negação do IAM.
Encontrar o papel do IAM correto que concede as permissões necessárias
Depois de confirmar que o principal não tem acesso suficiente, a próxima etapa é encontrar o papel predefinido ou personalizado do IAM adequado que concede as permissões necessárias. O papel escolhido precisa seguir o princípio de privilégio mínimo.
Se a organização usa papéis personalizados, é possível encontrar o papel correto listando todos os papéis personalizados criados no projeto ou na organização. Por exemplo, no console Google Cloud , na página Papéis, é possível filtrar a lista por Tipo:Personalizado para ver apenas papéis personalizados.
Para encontrar o papel predefinido correto do IAM, siga estas etapas.
Abra a seção de permissões do BigQuery na página de papéis e permissões do IAM do BigQuery.
Na barra de pesquisa Inserir uma permissão, digite a permissão que você recuperou da mensagem de erro, do histórico de jobs ou dos registros de auditoria. Por exemplo,
bigquery.tables.getData
.Os resultados da pesquisa mostram todos os papéis predefinidos do BigQuery que concedem a permissão.
Aplique o princípio de privilégio mínimo: na lista de papéis, escolha o menos permissivo que concede as permissões necessárias. Por exemplo, se você pesquisou
bigquery.tables.getData
para conceder a capacidade de consultar dados de tabelas, o Leitor de dados do BigQuery é o papel menos permissivo que concede essa permissão.Conceda ao principal o papel adequado. Para informações sobre como conceder um papel do IAM a um recurso do BigQuery, consulte Controlar o acesso aos recursos com o IAM.
A seguir
- Para uma lista de todos os papéis e permissões do IAM do BigQuery, consulte Papéis e permissões do IAM do BigQuery.
- Para mais informações sobre como resolver problemas de políticas de permissão e negação no IAM, consulte Resolver problemas de políticas.
- Para mais informações sobre o Policy Analyzer da Política de IA, consulte Policy Analyzer para políticas de permissão.
- Para mais informações sobre o solucionador de problemas de políticas, consulte Usar o solucionador de problemas de políticas.