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
Na Google Cloud consola, aceda à página BigQuery.
No painel Explorador, expanda o projeto e selecione o conjunto de dados que contém os dados que quer partilhar.
Clique no ícone
Ações e selecione Abrir.No painel de detalhes apresentado, clique em Partilha e selecione a opção Autorizar conjuntos de dados.
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
Clique em Adicionar autorização e, de seguida, em Fechar.
bq
Abra o Cloud Shell:
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
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" } } ]
Atualize o conjunto de dados partilhado através do comando
bq update
. Por exemplo:bq update --source FILE_PATH PROJECT:SHARED_DATASET
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
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.Adicione o conjunto de dados que quer autorizar à secção
access
dos metadados JSON devolvidos no recursoDataset
da seguinte forma:"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 do pedido.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
Na Google Cloud consola, aceda à página BigQuery.
No painel Explorador, expanda o projeto e selecione o conjunto de dados partilhado.
Clique no ícone
Ações e selecione Abrir.No painel de detalhes apresentado, clique em Partilha e selecione a opção Autorizar conjuntos de dados.
No painel Conjunto de dados autorizado apresentado, localize a entrada do conjunto de dados autorizado na secção Conjuntos de dados atualmente autorizados.
Clique no ícone de eliminação junto ao conjunto de dados autorizado que quer remover e, de seguida, clique em Fechar.
bq
Abra o Cloud Shell:
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
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" } }
Atualize o conjunto de dados partilhado através do comando
bq update
. Por exemplo:bq update --source FILE_PATH PROJECT:SHARED_DATASET
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
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.Remova o conjunto de dados autorizado da secção
access
do JSON devolvido 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 do pedido.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:
Conceda a função de
bigquery.dataViewer
ao utilizador para o conjunto de dadospublic_dataset
. Esta função inclui a autorizaçãobigquery.tables.getData
, que permite ao utilizador consultar as visualizações no conjunto de dadospublic_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 à tabelaprivate_table
emprivate_dataset
. Se o utilizador tentar consultar a tabelaprivate_table
diretamente ou tentar aceder à tabelaprivate_table
indiretamente consultando a vistaprivate_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.
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
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 dadosprivate_dataset
, o que autoriza as visualizações de propriedade no conjunto de dadospublic_dataset
a consultar os dados no conjunto de dadosprivate_dataset
.O utilizador pode agora consultar a vista
private_table_filtered
no conjunto de dadospublic_dataset
, que acede indiretamente ao conjunto de dadosprivate_dataset
, sem ter autorizações para aceder diretamente aos dados no conjunto de dadosprivate_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.