Resolva problemas com as autorizações de IAM no BigQuery
Este documento mostra como resolver problemas com as autorizações de gestão de identidade e acesso (IAM) no BigQuery. Normalmente, os problemas de autorização do IAM resultam em erros Access Denied
, como os seguintes:
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, certifique-se de que tem as autorizações de IAM necessárias.
Recolha informações sobre o problema
O primeiro passo na resolução de problemas de acesso a recursos é determinar a autorização em falta, o principal do IAM ao qual foi recusado o acesso e o recurso ao qual o principal estava a tentar aceder.
Receba informações do histórico de erros ou tarefas
Para obter informações sobre o principal, o recurso e as autorizações, examine o resultado da ferramenta de linha de comandos bq, da resposta da API ou do BigQuery na Google Cloud consola.
Por exemplo, se tentar executar uma consulta com autorizações insuficientes, é apresentado um erro semelhante ao seguinte no separador Informações da tarefa na secção Resultados da consulta da consola Google Cloud .
Examine o erro para determinar o principal, o recurso e as autorizações.
Em alguns casos, pode pedir autorizações em falta diretamente a partir da mensagem de erro. Para mais informações, consulte o artigo Resolva problemas de mensagens de erro de autorização na documentação da IAM.
Obtenha informações dos registos de auditoria do Cloud
Se a mensagem de erro for genérica, tiver informações em falta ou se a ação falhar num processo em segundo plano, use o Explorador de registos dos registos de auditoria do Google Cloud para obter informações sobre o erro.
Na Google Cloud consola, aceda à página Explorador de registos.
Aceda ao Explorador de registos
Em alternativa, no menu de navegação, escolha Monitorização > Explorador de registos.
No Explorador de registos, para o âmbito dos registos, escolha Registos do projeto.
Na janela de consulta, introduza a seguinte consulta para obter erros relacionados com autorizações dos registos de acesso aos 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 pelo ID do seu projeto.
Nos resultados da consulta, expanda a entrada de registo que corresponde à operação com falha.
Na secção
protoPayload
, expanda a matrizauthorizationInfo
e, em seguida, expanda cada nó na matrizauthorizationInfo
.A matriz
authorizationInfo
mostra todas as verificações de autorizações realizadas durante a chamada API.Para ver a causa do erro, procure a entrada
granted: false
. A entradagranted: false
mostra as seguintes informações:permission
: a string de autorização de IAM que foi verificada. Por exemplo,bigquery.tables.getData
.resource
: o nome totalmente qualificado do recurso ao qual o principal tentou aceder. Por exemplo,projects/myproject/datasets/mydataset/tables/mytable
.principalEmail
(se disponível): referenciado emprotoPayload.authenticationInfo
, este é o principal que tentou a ação.
Use o analisador de políticas para políticas de permissão
O Analisador de políticas para políticas de autorização permite-lhe saber que diretores da IAM têm que acesso a que recursos do BigQuery com base nas suas políticas de autorização da IAM.
Depois de reunir informações sobre o erro de autorizações, pode usar o analisador de políticas para compreender por que motivo o principal não tem o acesso necessário. Esta ferramenta analisa todas as políticas relevantes, as associações a grupos Google e a herança de recursos principais, como um projeto, uma pasta e a sua organização.
Para usar o Analisador de políticas para políticas de autorização, crie uma consulta de análise, especifique um âmbito para a análise e, em seguida, execute a consulta.
Na Google Cloud consola, aceda à página Policy Analyzer.
Aceder ao Analisador de políticas
Em alternativa, no menu de navegação, escolha IAM e administrador > Policy Analyzer.
Clique em Criar consulta personalizada.
Na página Configure a sua consulta, introduza as informações que recolheu anteriormente:
Na secção Selecionar o âmbito, no campo Selecionar âmbito da consulta, verifique se o seu projeto atual é apresentado ou clique em Procurar para escolher outro recurso.
Na secção Defina os parâmetros de consulta, para Parâmetro 1, escolha Principal e, no campo Principal, introduza o email do utilizador, do grupo ou da conta de serviço.
Clique em
Adicionar parâmetro.Para o Parâmetro 2, escolha Autorização e, no campo Autorização, clique em Selecionar, escolha a autorização do BigQuery e, de seguida, clique em Adicionar. Por exemplo, selecione
bigquery.tables.getData
.Clique em
Adicionar parâmetro.Para o Parâmetro 3, escolha Recurso e, no campo Recurso, introduza o nome do recurso totalmente qualificado. O nome do recurso tem de incluir o prefixo do serviço, como nos exemplos seguintes:
- 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.
Examine os resultados da consulta. O resultado pode ser um dos seguintes:
- Uma lista vazia. Nenhum resultado confirma que o principal não tem a autorização necessária. Tem de conceder ao principal uma função que forneça as autorizações corretas.
- Um ou mais resultados. Se o analisador encontrar uma política de permissão, existe alguma forma de acesso. Clique em Ver associação em cada resultado para ver as funções que concedem acesso ao recurso do qual o principal é membro. A associação de políticas mostra se o acesso é concedido através da participação num grupo ou da herança, ou se o acesso é recusado por uma condição do IAM ou uma política de recusa do IAM.
Encontre a função de IAM correta que concede as autorizações necessárias
Depois de confirmar que o principal não tem acesso suficiente, o passo seguinte é encontrar a função de IAM predefinida ou personalizada adequada que concede as autorizações necessárias. A função que escolher deve cumprir o princípio do menor privilégio.
Se a sua organização usar funções personalizadas, pode encontrar a função correta indicando todas as funções personalizadas criadas no seu projeto ou organização. Por exemplo, na Google Cloud consola, na página Funções, pode filtrar a lista por Tipo:Personalizado para ver apenas funções personalizadas.
Para encontrar a função do IAM predefinida correta, siga estes passos.
Abra a secção de autorizações do BigQuery da página de funções e autorizações do IAM do BigQuery.
Na barra de pesquisa Introduza uma autorização, introduza a autorização que obteve a partir da mensagem de erro, do histórico de tarefas ou dos registos de auditoria. Por exemplo,
bigquery.tables.getData
.Os resultados da pesquisa mostram todas as funções predefinidas do BigQuery que concedem a autorização.
Aplique o princípio do menor privilégio: na lista de funções, escolha a função menos permissiva que concede as autorizações necessárias. Por exemplo, se pesquisou
bigquery.tables.getData
para conceder a capacidade de consultar dados de tabelas, Visualizador de dados do BigQuery é a função menos permissiva que concede essa autorização.Conceda ao principal a função adequada. Para obter informações sobre como conceder uma função de IAM a um recurso do BigQuery, consulte o artigo Controle o acesso aos recursos com o IAM.
O que se segue?
- Para ver uma lista de todas as funções e autorizações de IAM do BigQuery, consulte o artigo Funções e autorizações de IAM do BigQuery.
- Para mais informações sobre a resolução de problemas relacionados com políticas de permissão e negação no IAM, consulte o artigo Resolva problemas relacionados com políticas.
- Para mais informações sobre a análise de políticas da inteligência de políticas, consulte o artigo Analisador de políticas para políticas de autorização.
- Para mais informações sobre a resolução de problemas de políticas, consulte o artigo Use a resolução de problemas de políticas.