Conjuntos de dados autorizados
Neste documento, você verá como usar conjuntos de dados autorizados no BigQuery. Com um conjunto de dados autorizado, você pode autorizar todas as visualizações em um conjunto de dados especificado a acessar os dados em um segundo conjunto de dados. Com um conjunto de dados autorizado, você não precisa configurar visualizações autorizadas individuais.
É possível criar um conjunto de dados autorizado no BigQuery usando o seguinte:
- Console do Google Cloud
- O comando
bq update
- O método da API
datasets.update
Visão geral
Uma visualização no BigQuery é uma tabela virtual definida por uma consulta SQL. Por exemplo, a consulta de uma visualização pode retornar somente um subconjunto das colunas de uma tabela, excluindo colunas com informações de identificação pessoal (PII). Para consultar uma visualização, o usuário precisa ter acesso aos recursos acessados pela consulta da visualização.
Se você quiser permitir que os usuários consultem uma visualização sem conceder acesso direto aos recursos referenciados por ela, use uma visualização autorizada. Uma visualização autorizada permite, por exemplo, compartilhar dados mais limitados em uma visualização com grupos ou usuários especificados (principais), sem conceder ao principal acesso a todos os dados subjacentes. Para isso, conceda aos principais acesso à visualização e à visualização ao conjunto de dados que contém os dados subjacentes.
Para conceder a uma coleção de acesso a um conjunto de dados, sem precisar autorizar cada visualização individual, é possível agrupar as visualizações em um conjunto de dados e fornecer o conjunto de dados a seguir. que contém o acesso de visualizações ao conjunto de dados que contém os dados. É possível conceder acesso aos principais 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 é chamado de conjunto de dados autorizado. O conjunto de dados que autoriza outro conjunto de dados a acessar os dados é chamado de conjunto de dados compartilhado.
Permissões e papéis obrigatórios
Para autorizar um conjunto de dados ou revogar a autorização de um conjunto de dados, são necessárias as seguintes permissões do Identity and Access Management (IAM), que permitem atualizar a lista de controle de acesso no conjunto de dados que você está compartilhando.
Depois que um conjunto de dados é autorizado, você precisa dessas mesmas permissões caso queira criar ou atualizar visualizações nesse conjunto. Para mais informações, consulte Criar ou atualizar uma visualização em um conjunto de dados autorizado.
Permissão | Recurso |
---|---|
bigquery.datasets.get
|
O conjunto de dados que você está compartilhando. |
bigquery.datasets.update
|
O conjunto de dados que você está compartilhando. |
Os papéis de IAM predefinidos a seguir fornecem as permissões necessárias.
Papel | Descrição |
---|---|
bigquery.dataOwner
|
Proprietário de dados do BigQuery |
bigquery.admin
|
Administrador do BigQuery |
Cotas e limites
Os conjuntos de dados autorizados estão sujeitos aos limites de conjuntos de dados. Para mais informações, consulte Limites do conjunto de dados.
Autorizar um conjunto de dados
Para autorizar as visualizações atuais e futuras de um conjunto de dados a acessar outro conjunto de dados, adicione o conjunto de dados que você quer autorizar à lista de acesso do conjunto de dados que você quer compartilhar da seguinte maneira:
Console
No Console do Google Cloud, acesse a página BigQuery.
No painel Explorer, expanda seu projeto e selecione o conjunto de dados que contém os dados que você quer compartilhar.
Clique no ícone
Ações e selecione Abrir.No painel de detalhes exibido, clique em Compartilhamento e selecione a opção Autorizar conjuntos de dados.
No painel Conjunto de dados autorizado exibido, insira o ID do conjunto de dados que você quer autorizar no seguinte formato:
PROJECT.AUTHORIZED_DATASET
Por exemplo:
myProject.myDataset
Clique em Add Authorization e depois em Close.
bq
Abra o Cloud Shell:
Use o comando
bq show
para gravar os metadados existentes, incluindo a lista de controle de acesso, do conjunto de dados que você quer compartilhar em um arquivo JSON.bq show --format=prettyjson PROJECT:SHARED_DATASET > FILE_PATH
Use um editor de texto para adicionar o conjunto de dados que você quer autorizar na seção
access
existente do arquivo JSON criado em FILE_PATH.Por exemplo:
"access": [ ... { "dataset": { "dataset": { "project_id": "PROJECT", "dataset_id": "AUTHORIZED_DATASET" }, "target_types": "VIEWS" } } ]
Atualize o conjunto de dados compartilhado usando o comando
bq update
. Por exemplo:bq update --source FILE_PATH PROJECT:SHARED_DATASET
Para verificar se o conjunto de dados autorizado foi adicionado, insira o comando
bq show
novamente. Por exemplo:bq show --format=prettyjson PROJECT:SHARED_DATASET
API
Consiga os metadados atuais para o conjunto de dados que você quer compartilhar chamando o método
datasets.get
da seguinte maneira:GET https://bigquery.googleapis.com/bigquery/v2/projects/PROJECT/datasets/SHARED_DATASET
O corpo da resposta retorna um recurso
Dataset
que contém metadados JSON para o conjunto de dados.Adicione o conjunto de dados que você quer autorizar à seção
access
dos metadados JSON retornados no recursoDataset
da seguinte maneira:"access": [ ... { "dataset": { "dataset": { "project_id": "PROJECT", "dataset_id": "AUTHORIZED_DATASET" }, "target_types": "VIEWS" } } ]
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 da solicitação.Verifique se o conjunto de dados autorizado foi adicionado chamando o método
datasets.get
novamente.
Revogar a autorização de um conjunto de dados
Quando você exclui um conjunto de dados autorizado a acessar outro conjunto de dados de origem, pode levar até 24 horas para que a alteração seja totalmente refletida nas listas de controle de acesso (ACLs) do conjunto de dados de origem. Durante esse período:
- Não será possível acessar os dados de origem por meio do conjunto de dados excluído.
- O conjunto de dados excluído ainda pode aparecer na ACL do conjunto de dados de origem e ser contabilizado nos limites autorizados. Isso pode impedir a criação de novos conjuntos de dados autorizados até que a ACL seja atualizada.
Para revogar o acesso concedido às visualizações em um conjunto de dados autorizado, remova o conjunto de dados autorizado da lista de acesso do conjunto de dados compartilhado da seguinte maneira:
Console
No Console do Google Cloud, acesse a página BigQuery.
No painel Explorer, expanda seu projeto e selecione o conjunto de dados compartilhado.
Clique no ícone
Ações e selecione Abrir.No painel de detalhes exibido, clique em Compartilhamento e selecione a opção Autorizar conjuntos de dados.
No painel Conjunto de dados autorizado, localize a entrada para o conjunto de dados autorizado na seção Conjuntos de dados autorizados.
Clique no ícone de exclusão ao lado do conjunto de dados autorizado que você quer remover e, em seguida, clique em Fechar.
bq
Abra o Cloud Shell:
Use o comando
bq show
para gravar os metadados existentes (incluindo a lista de controle de acesso) do conjunto de dados compartilhado em um arquivo JSON.bq show --format=prettyjson PROJECT:SHARED_DATASET > FILE_PATH
Use um editor de texto para remover o conjunto de dados autorizado da seção
access
do arquivo JSON criado em FILE_PATH da seguinte maneira:{ "dataset": { "dataset": { "project_id": "PROJECT", "dataset_id": "AUTHORIZED_DATASET" }, "target_types": "VIEWS" } }
Atualize o conjunto de dados compartilhado usando o comando
bq update
. Por exemplo:bq update --source FILE_PATH PROJECT:SHARED_DATASET
Para verificar se o conjunto de dados autorizado foi removido, insira o comando
bq show
novamente. Por exemplo:bq show --format=prettyjson PROJECT:SHARED_DATASET
API
Para ver os metadados atuais do conjunto de dados compartilhado, chame o método
datasets.get
da seguinte maneira:GET https://bigquery.googleapis.com/bigquery/v2/projects/PROJECT/datasets/SHARED_DATASET
O corpo da resposta retorna um recurso
Dataset
que contém metadados JSON para o conjunto de dados.Remova o conjunto de dados autorizado da seção
access
do JSON retornado no recursoDataset
. Por exemplo:{ "dataset": { "dataset": { "project_id": "PROJECT", "dataset_id": "AUTHORIZED_DATASET" }, "target_types": "VIEWS" } }
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 da solicitação.É possível verificar se o conjunto de dados autorizado foi removido chamando o método
datasets.get
novamente.
Criar ou atualizar uma visualização em um conjunto de dados autorizado
Para criar ou atualizar uma visualização que está em um conjunto de dados autorizado, você precisa ter as permissões do conjunto de dados compartilhado listadas em Permissões e papéis necessários, além das permissões necessárias para criar ou atualizar uma visualização em um conjunto de dados padrão.
Veja na tabela a seguir um resumo das permissões do Identity and Access Management (IAM) necessárias para criar ou atualizar uma visualização que está em um conjunto de dados autorizado:
Permissão | Recurso |
---|---|
bigquery.datasets.get
|
O conjunto de dados que você está compartilhando. |
bigquery.tables.getData
|
Todas as tabelas ou visualizações do conjunto de dados compartilhado que são referenciadas na nova visualização que você está criando ou atualizando. |
bigquery.tables.create
|
O conjunto de dados autorizado em que você está criando uma visualização. |
bigquery.tables.update
|
O conjunto de dados autorizado em que você está atualizando uma visualização. |
Você não precisa de nenhuma outra permissão para excluir uma visualização de um conjunto de dados autorizado.
Consultar uma visualização em um conjunto de dados autorizado
Para consultar uma visualização em um conjunto de dados autorizado, o usuário precisa ter acesso à visualização, mas não ao conjunto de dados compartilhado.
Para mais informações, consulte Visualizações autorizadas.
Exemplo de conjunto de dados autorizado
O exemplo a seguir descreve como criar e usar um conjunto de dados autorizado.
Suponha que você tenha dois conjuntos de dados, denominados private_dataset
e public_dataset
.
O conjunto de dados private_dataset
contém uma tabela chamada private_table
. O conjunto de dados public_dataset
contém uma visualização chamada private_table_filtered
. A visualização private_table_filtered
é baseada em uma consulta que retorna alguns dos campos na tabela private_table
, mas não todos.
É possível conceder ao usuário acesso aos dados retornados pela visualização private_table_filtered
, mas não a todos os dados na tabela private_table
, da seguinte maneira:
Conceda ao usuário o papel
bigquery.dataViewer
para o conjunto de dadospublic_dataset
. Esse papel inclui a permissãobigquery.tables.getData
, que permite ao usuário consultar as visualizações no conjunto de dadospublic_dataset
. Para informações sobre como conceder um papel a um usuário para um conjunto de dados, consulte Como controlar o acesso a conjuntos de dados.O usuário agora tem permissão para consultar visualizações no
public_dataset
, mas ainda não pode acessar a tabelaprivate_table
noprivate_dataset
. Se o usuário tentar consultar a tabelaprivate_table
diretamente ou acessar a tabelaprivate_table
indiretamente por meio da consulta da visualizaçãoprivate_table_filtered
, ele receberá uma mensagem de erro semelhantes a:Access Denied: Table PROJECT:private_dataset.private_table: User does not have permission to query table PROJECT:private_dataset.private_table.
Na página do BigQuery do console do Google Cloud, abra o conjunto de dados
private_dataset
, clique em Compartilhado e selecioneAutorizar conjuntos de dados.No painel Conjunto de dados autorizado exibido, insira
PROJECT.public_dataset
no campo ID do conjunto de dados e clique em Adicionar autorização.O conjunto de dados
public_dataset
é adicionado à lista de controle de acesso do conjunto de dadosprivate_dataset
, autorizando as visualizações no conjunto de dadospublic_dataset
a consultar os dados no conjunto de dadosprivate_dataset
.O usuário agora pode consultar a visualização
private_table_filtered
no conjunto de dadospublic_dataset
, que acessa indiretamente o conjunto de dadosprivate_dataset
, sem ter nenhuma permissão para acessar diretamente os dados no conjunto de dadosprivate_dataset
.
Limitações
- É possível criar conjuntos de dados autorizados em diferentes regiões, mas o BigQuery não aceita consultas entre regiões. Por isso, recomendamos que você crie conjuntos de dados na mesma região.
A seguir
Para informações sobre como autorizar uma visualização individual para acessar dados em um conjunto de dados, consulte Visualizações autorizadas.
Para informações sobre como autorizar uma função de tabela ou uma função definida pelo usuário a acessar dados em um conjunto de dados, consulte Funções autorizadas.