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

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 .

Um erro de acesso negado no separador Informações da tarefa na secção Resultados da consulta.

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.

  1. 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.

  2. No Explorador de registos, para o âmbito dos registos, escolha Registos do projeto.

  3. 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.

  4. Nos resultados da consulta, expanda a entrada de registo que corresponde à operação com falha.

  5. Na secção protoPayload, expanda a matriz authorizationInfo e, em seguida, expanda cada nó na matriz authorizationInfo.

    A matriz authorizationInfo mostra todas as verificações de autorizações realizadas durante a chamada API.

  6. Para ver a causa do erro, procure a entrada granted: false. A entrada granted: 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 em protoPayload.authenticationInfo, este é o principal que tentou a ação.

    A secção authorizationInfo do protoPayload que mostra a autorização, o recurso e o principalEmail.

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.

  1. 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.

  2. Clique em Criar consulta personalizada.

  3. Na página Configure a sua consulta, introduza as informações que recolheu anteriormente:

    1. 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.

    2. 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.

    3. Clique em Adicionar parâmetro.

    4. 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.

    5. Clique em Adicionar parâmetro.

    6. 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
  4. No painel Consulta personalizada, clique em Analisar > Executar consulta.

  5. 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.

  1. Abra a secção de autorizações do BigQuery da página de funções e autorizações do IAM do BigQuery.

  2. 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.

  3. 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.

  4. 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?