Conjuntos de dados autorizados

Este documento descreve como usar conjuntos de dados autorizados no BigQuery. Um conjunto de dados autorizado permite-lhe autorizar todas as visualizações de propriedade num conjunto de dados especificado a aceder aos dados num segundo conjunto de dados. Com um conjunto de dados autorizado, não precisa de configurar visualizações autorizadas individuais.

Vista geral

Uma vista no BigQuery é uma tabela virtual definida por uma consulta SQL. Por exemplo, a consulta de uma vista pode devolver apenas um subconjunto das colunas de uma tabela, excluindo colunas que contenham informações de identificação pessoal (PII). Para consultar uma visualização, um utilizador tem de ter acesso aos recursos acedidos pela consulta da visualização.

Vistas autorizadas

Se quiser permitir que os utilizadores consultem uma visualização de propriedade sem lhes conceder acesso direto aos recursos referenciados pela visualização de propriedade, pode usar uma visualização de propriedade autorizada. Quando cria uma vista autorizada, pode partilhar uma vista lógica ou uma vista materializada. Quando autoriza uma vista materializada, esta é denominada vista materializada autorizada.

Por exemplo, uma vista autorizada permite-lhe partilhar dados mais limitados numa vista com grupos ou utilizadores (diretores) especificados, sem dar aos diretores acesso a todos os dados subjacentes. Os principais podem ver os dados que partilha e executar consultas sobre os mesmos, mas não podem aceder diretamente ao conjunto de dados de origem. Em alternativa, a vista autorizada tem acesso aos dados de origem.

Conjuntos de dados autorizados

Se quiser conceder a uma coleção de visualizações de propriedades acesso a um conjunto de dados, sem ter de autorizar cada visualização de propriedade individualmente, pode agrupar as visualizações de propriedades num conjunto de dados e, em seguida, conceder ao conjunto de dados que contém as visualizações de propriedades acesso ao conjunto de dados que contém os dados. Em seguida, pode conceder aos principais acesso ao conjunto de dados com o grupo de visualizações ou a visualizações individuais no conjunto de dados, conforme necessário.

Um conjunto de dados que tem acesso a outro conjunto de dados é denominado conjunto de dados autorizado. O conjunto de dados que autoriza outro conjunto de dados a aceder aos respetivos dados é denominado conjunto de dados partilhado.

Autorizações e funções necessárias

Para autorizar um conjunto de dados ou revogar a autorização de um conjunto de dados, tem de ter as seguintes autorizações de gestão de identidade e de acesso (IAM), que lhe permitem atualizar a lista de controlo de acesso do conjunto de dados que está a partilhar.

Depois de autorizar um conjunto de dados, pode criar ou atualizar visualizações no conjunto de dados autorizado. Para mais informações e autorizações necessárias, consulte o artigo Crie ou atualize uma vista num conjunto de dados autorizado.

Autorização Recurso
bigquery.datasets.get O conjunto de dados que está a partilhar.
bigquery.datasets.update O conjunto de dados que está a partilhar.

As seguintes funções do IAM predefinidas concedem as autorizações necessárias.

Role Descrição
bigquery.dataOwner Proprietário de dados do BigQuery
bigquery.admin Administrador do BigQuery

Quotas e limites

Os conjuntos de dados autorizados estão sujeitos a limites de conjuntos de dados. Para mais informações, consulte o artigo Limites do conjunto de dados.

Autorize um conjunto de dados

Pode autorizar as visualizações atuais e futuras de um conjunto de dados a aceder a outro conjunto de dados adicionando o conjunto de dados que quer autorizar à lista de acesso do conjunto de dados que quer partilhar, da seguinte forma:

Consola

  1. Na Google Cloud consola, aceda à página BigQuery.

    Aceda ao BigQuery

  2. No painel Explorador, expanda o projeto e selecione o conjunto de dados que contém os dados que quer partilhar.

  3. Clique no ícone Ações e selecione Abrir.

  4. No painel de detalhes apresentado, clique em Partilha e selecione a opção Autorizar conjuntos de dados.

    Autorize um conjunto de dados na consola Google Cloud

  5. No painel Conjunto de dados autorizado apresentado, introduza o ID do conjunto de dados do conjunto de dados que quer autorizar, no seguinte formato:

    PROJECT.AUTHORIZED_DATASET

    Por exemplo:

    myProject.myDataset

  6. Clique em Adicionar autorização e, de seguida, em Fechar.

bq

  1. Abra o Cloud Shell:

    Aceda ao Cloud Shell

  2. Escreva os metadados existentes (incluindo a lista de controlo de acesso) para o conjunto de dados que quer partilhar num ficheiro JSON através do comando bq show.

    bq show --format=prettyjson PROJECT:SHARED_DATASET > FILE_PATH
  3. Use um editor de texto para adicionar o conjunto de dados que quer autorizar à secção access existente do ficheiro JSON que foi criado em FILE_PATH.

    Por exemplo:

    "access": [
     ...
     {
       "dataset": {
         "dataset": {
           "project_id": "PROJECT",
           "dataset_id": "AUTHORIZED_DATASET"
         },
         "target_types": "VIEWS"
       }
     }
    ]

  4. Atualize o conjunto de dados partilhado através do comando bq update. Por exemplo:

    bq update --source FILE_PATH PROJECT:SHARED_DATASET
  5. Para verificar se o conjunto de dados autorizado foi adicionado, introduza novamente o comando bq show. Por exemplo:

    bq show --format=prettyjson PROJECT:SHARED_DATASET

API

  1. Obtenha os metadados atuais do conjunto de dados que quer partilhar chamando o método datasets.get, da seguinte forma:

    GET https://bigquery.googleapis.com/bigquery/v2/projects/PROJECT/datasets/SHARED_DATASET

    O corpo da resposta devolve um recurso Dataset que contém metadados JSON para o conjunto de dados.

  2. Adicione o conjunto de dados que quer autorizar à secção access dos metadados JSON devolvidos no recurso Dataset da seguinte forma:

    "access": [
     ...
     {
       "dataset": {
         "dataset": {
           "project_id": "PROJECT",
           "dataset_id": "AUTHORIZED_DATASET"
         },
         "target_types": "VIEWS"
       }
     }
    ]
  3. Use o método datasets.update para atualizar o conjunto de dados com a autorização adicionada:

    PUT https://bigquery.googleapis.com/bigquery/v2/projects/PROJECT/datasets/SHARED_DATASET

    Inclua o recurso Dataset atualizado no corpo do pedido.

  4. Pode verificar se o conjunto de dados autorizado foi adicionado chamando novamente o método datasets.get.

Revogue a autorização de um conjunto de dados

Quando elimina um conjunto de dados autorizado a aceder a outro conjunto de dados de origem, a alteração pode demorar até 24 horas a refletir-se totalmente nas listas de controlo de acesso (LCAs) do conjunto de dados de origem. Durante este período:

  • Não vai poder aceder aos dados de origem através do conjunto de dados eliminado.
  • O conjunto de dados eliminado pode continuar a aparecer na ACL do conjunto de dados de origem e a ser contabilizado para quaisquer limites de conjuntos de dados autorizados. Isto pode impedir a criação de novos conjuntos de dados autorizados até que a LCA seja atualizada.

Para revogar o acesso concedido às vistas num conjunto de dados autorizado, remova o conjunto de dados autorizado da lista de acesso do conjunto de dados partilhado, da seguinte forma:

Consola

  1. Na Google Cloud consola, aceda à página BigQuery.

    Aceda ao BigQuery

  2. No painel Explorador, expanda o projeto e selecione o conjunto de dados partilhado.

  3. Clique no ícone Ações e selecione Abrir.

  4. No painel de detalhes apresentado, clique em Partilha e selecione a opção Autorizar conjuntos de dados.

    Autorize um conjunto de dados na consola Google Cloud

  5. No painel Conjunto de dados autorizado apresentado, localize a entrada do conjunto de dados autorizado na secção Conjuntos de dados atualmente autorizados.

  6. Clique no ícone de eliminação junto ao conjunto de dados autorizado que quer remover e, de seguida, clique em Fechar.

bq

  1. Abra o Cloud Shell:

    Aceda ao Cloud Shell

  2. Escreva os metadados existentes (incluindo a lista de controlo de acesso) para o conjunto de dados partilhado num ficheiro JSON através do comando bq show.

    bq show --format=prettyjson PROJECT:SHARED_DATASET > FILE_PATH
  3. Use um editor de texto para remover o conjunto de dados autorizado da secção access do ficheiro JSON criado em FILE_PATH, da seguinte forma:

      {
        "dataset": {
          "dataset": {
            "project_id": "PROJECT",
            "dataset_id": "AUTHORIZED_DATASET"
          },
          "target_types": "VIEWS"
        }
      }
  4. Atualize o conjunto de dados partilhado através do comando bq update. Por exemplo:

    bq update --source FILE_PATH PROJECT:SHARED_DATASET
  5. Para verificar se o conjunto de dados autorizado foi removido, introduza novamente o comando bq show. Por exemplo:

    bq show --format=prettyjson PROJECT:SHARED_DATASET

API

  1. Obtenha os metadados atuais do conjunto de dados partilhado chamando o método datasets.get da seguinte forma:

    GET https://bigquery.googleapis.com/bigquery/v2/projects/PROJECT/datasets/SHARED_DATASET

    O corpo da resposta devolve um recurso Dataset que contém metadados JSON para o conjunto de dados.

  2. Remova o conjunto de dados autorizado da secção access do JSON devolvido no recurso Dataset, por exemplo:

     {
       "dataset": {
         "dataset": {
           "project_id": "PROJECT",
           "dataset_id": "AUTHORIZED_DATASET"
         },
         "target_types": "VIEWS"
       }
     }
  3. Use o método datasets.update para atualizar o conjunto de dados com a autorização removida:

    PUT https://bigquery.googleapis.com/bigquery/v2/projects/PROJECT/datasets/SHARED_DATASET

    Inclua o recurso Dataset atualizado no corpo do pedido.

  4. Pode verificar se o conjunto de dados autorizado foi removido chamando novamente o método datasets.get.

Crie ou atualize uma vista num conjunto de dados autorizado

Para criar ou atualizar uma vista que se encontra num conjunto de dados autorizado, tem de ter as autorizações para o conjunto de dados partilhado que estão listadas em Autorizações e funções necessárias, além das autorizações necessárias para criar ou atualizar uma vista num conjunto de dados padrão.

A tabela seguinte resume as autorizações de gestão de identidade e de acesso (IAM) necessárias para criar ou atualizar uma vista que se encontra num conjunto de dados autorizado:

Autorização Recurso
bigquery.datasets.get O conjunto de dados que está a partilhar.
bigquery.tables.getData Quaisquer tabelas ou vistas do conjunto de dados partilhado que sejam referenciadas na nova vista que está a criar ou a atualizar.
bigquery.tables.create O conjunto de dados autorizado no qual está a criar uma vista.
bigquery.tables.update O conjunto de dados autorizado no qual está a atualizar uma vista.

Não precisa de autorizações adicionais para eliminar uma vista de um conjunto de dados autorizado.

Consulte uma vista num conjunto de dados autorizado

Para consultar uma vista num conjunto de dados autorizado, um utilizador tem de ter acesso à vista, mas não é necessário ter acesso ao conjunto de dados partilhado.

Para mais informações, consulte o artigo Vistas autorizadas.

Exemplo de conjunto de dados autorizado

O exemplo seguinte descreve como criar e usar um conjunto de dados autorizado.

Suponha que tem dois conjuntos de dados com os nomes private_dataset e public_dataset. O conjunto de dados private_dataset contém uma tabela denominada private_table. O conjunto de dados public_dataset contém uma visualização de propriedade denominada private_table_filtered. A vista private_table_filtered baseia-se numa consulta que devolve alguns, mas não todos, os campos na tabela private_table.

Pode conceder a um utilizador acesso aos dados devolvidos pela visualização de propriedade private_table_filtered, mas não a todos os dados na tabela private_table, da seguinte forma:

  1. Conceda a função de bigquery.dataViewer ao utilizador para o conjunto de dados public_dataset. Esta função inclui a autorização bigquery.tables.getData, que permite ao utilizador consultar as visualizações no conjunto de dados public_dataset. Para obter informações sobre como conceder uma função a um utilizador para um conjunto de dados, consulte o artigo Controlar o acesso a conjuntos de dados.

    O utilizador tem agora autorização para consultar vistas em public_dataset, mas continua sem poder aceder à tabela private_table em private_dataset. Se o utilizador tentar consultar a tabela private_table diretamente ou tentar aceder à tabela private_table indiretamente consultando a vista private_table_filtered, recebe uma mensagem de erro semelhante à seguinte:

    Access Denied: Table PROJECT:private_dataset.private_table: User does not have permission to query table PROJECT:private_dataset.private_table.

  2. Na página BigQuery da consola, abra o conjunto de dados, clique em Partilha e, de seguida, selecione Autorizar conjuntos de dados. Google Cloud private_dataset

  3. No painel Conjunto de dados autorizado apresentado, introduza PROJECT.public_dataset no campo ID do conjunto de dados e, de seguida, clique em Adicionar autorização.

    O conjunto de dados public_dataset é adicionado à lista de controlo de acesso do conjunto de dados private_dataset, o que autoriza as visualizações de propriedade no conjunto de dados public_dataset a consultar os dados no conjunto de dados private_dataset.

    O utilizador pode agora consultar a vista private_table_filtered no conjunto de dados public_dataset, que acede indiretamente ao conjunto de dados private_dataset, sem ter autorizações para aceder diretamente aos dados no conjunto de dados private_dataset.

Limitações

  • Pode criar conjuntos de dados autorizados em regiões diferentes, mas o BigQuery não suporta consultas entre regiões. Por isso, recomendamos que crie conjuntos de dados na mesma região.

O que se segue?

  • Para obter informações sobre como autorizar uma vista individual a aceder a dados num conjunto de dados, consulte o artigo Vistas autorizadas.

  • Para obter informações sobre como autorizar uma função de tabela ou uma função definida pelo utilizador para aceder a dados num conjunto de dados, consulte Funções autorizadas.