Visualizações autorizadas

Neste documento, descrevemos como criar visualizações autorizadas e visualizações materializadas autorizadas no BigQuery.

Visão geral

Como administrador de dados, você pode criar uma visualização autorizada para compartilhar um subconjunto de dados em um conjunto de dados com usuários e grupos específicos (principais). Os principais podem ver os dados compartilhados e executar consultas neles, mas não podem acessar o conjunto de dados de origem diretamente.

Tipos de visualização

Uma visualização lógica é o tipo de visualização padrão do BigQuery, e uma visualização materializada é uma visualização pré-calculada que armazena em cache periodicamente os resultados de uma consulta para aumentar o desempenho e a eficiência.

Uma visualização autorizada para uma visualização lógica é chamada de visualização autorizada, mas uma visualização autorizada para uma visualização materializada é chamada de visualização materializada autorizada.

Se uma visualização lógica depender de uma consulta grande ou computacionalmente cara, crie uma visualização materializada. No entanto, consultar apenas um subconjunto dos seus dados ou usar outras técnicas pode melhorar o desempenho sem a necessidade de criar uma visualização materializada.

Para saber mais, acesse os recursos a seguir:

Etapas gerais para criar visualizações autorizadas

Para criar e compartilhar uma visualização, confira estas etapas gerais, que são as mesmas para visualizações lógicas e materializadas autorizadas.

  • Crie um conjunto de dados para conter os dados de origem.
  • Execute uma consulta para carregar dados em uma tabela de destino no conjunto de dados de origem.
  • Crie um conjunto de dados para conter sua visualização autorizada.
  • Crie uma visualização autorizada com uma consulta SQL que restrinja as colunas que os analistas de dados podem ver nos resultados da consulta.
  • Conceda aos analistas de dados permissão para executar jobs de consulta.
  • Conceda aos analistas de dados acesso ao conjunto de dados que contém a visualização autorizada.
  • Conceda à visualização autorizada acesso ao conjunto de dados de origem.

Alternativas

Embora as visualizações autorizadas sejam flexíveis e escalonáveis, um dos seguintes métodos pode ser mais adequado ao seu caso de uso:

  • Defina políticas no nível da linha em uma tabela.
  • Defina políticas no nível da coluna em uma tabela.
  • Armazene os dados em uma tabela separada.
  • Compartilhar todas as visualizações em um conjunto de dados (conjuntos de dados autorizados).

Usar segurança no nível da linha ou da coluna ou tabelas separadas

Ao definir políticas de acesso no nível da linha em uma tabela ou criar uma tabela separada para armazenar dados sensíveis, um administrador de dados pode restringir a capacidade de um usuário de visualizar esses dados. Armazenar dados em uma tabela separada isola os dados e remove a capacidade de ver quantas linhas existem na tabela.

Além disso, ao criar e aplicar tags de política, um administrador de dados pode restringir a capacidade do usuário de visualizar colunas em uma tabela.

Armazenar dados em uma tabela separada é o método mais seguro, mas menos flexível. Definir políticas no nível da linha é flexível e seguro, enquanto compartilhar visualizações autorizadas é flexível e oferece o melhor desempenho.

Para comparar esses métodos em detalhes, consulte os seguintes recursos:

Compartilhar todas as visualizações em um conjunto de dados

Para conceder a uma coleção de visualizações 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 que contém 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.

Para mais informações, consulte Conjuntos de dados autorizados e Autorizar um conjunto de dados.

Limitações

  • Ao criar uma visualização autorizada ou materializada autorizada em outro conjunto de dados, o conjunto de dados de origem e o conjunto de dados de visualização autorizada precisam estar no mesmo local regional.
  • Quando você exclui uma visualização autorizada, pode levar até 24 horas para removê-la da lista. Durante esse período, não é possível acessar a visualização autorizada, mas a visualização autorizada excluída pode aparecer na lista de visualizações e será contabilizada no limite de visualizações autorizadas. Esse limite poderá impedir a criação de outras visualizações autorizadas se a nova visualização autorizada exceder esse limite.

Antes de começar

Conceda papéis do Identity and Access Management (IAM) que dão aos usuários as permissões necessárias para consultar as visualizações autorizadas ou as visualizações materializadas autorizadas que você compartilha.

Funções exigidas

Para criar ou atualizar uma visualização autorizada, você precisa de permissões no conjunto de dados que contém a visualização e no que fornece acesso a ela.

Também é necessário conceder acesso ao projeto e ao conjunto de dados que contêm a visualização.

Permissões de administrador no conjunto de dados que contém a visualização

As visualizações são tratadas como recursos de tabela no BigQuery. Portanto, para criá-las, são necessárias as mesmas permissões usadas para criar uma tabela. Você também precisa ter permissões para consultar as tabelas referenciadas pela consulta SQL da visualização.

Para criar uma visualização, você precisa ter a permissão bigquery.tables.create do IAM. O papel predefinido roles/bigquery.dataEditor do IAM inclui as permissões necessárias para criar uma visualização.

Além disso, se você tiver a permissão bigquery.datasets.create, será possível criar visualizações nos conjuntos de dados que forem criados. Para criar uma visualização para dados que não pertencem a você, é necessário ter a permissão bigquery.tables.getData para essa tabela.

Para mais informações sobre papéis e permissões do IAM no BigQuery, consulte Papéis e permissões predefinidos.

Permissões de administrador no segundo conjunto de dados que dá acesso à visualização

Para atualizar as propriedades do conjunto de dados, você precisa das seguintes permissões do IAM:

  • bigquery.datasets.update
  • bigquery.datasets.setIamPolicy (obrigatório apenas ao atualizar os controles de acesso do conjunto de dados no console Trusted Cloud )

O papel predefinido do IAM roles/bigquery.dataOwner inclui as permissões necessárias para atualizar as propriedades do conjunto de dados.

Além disso, se você tiver a permissão bigquery.datasets.create, será possível atualizar as propriedades dos conjuntos de dados que criar.

Para mais informações sobre papéis e permissões do IAM no BigQuery, consulte Papéis e permissões predefinidos.

Permissões de usuário no projeto e no conjunto de dados da visualização

Para compartilhar uma visualização autorizada com usuários ou grupos, conceda a eles as seguintes permissões do IAM:

  • O papel roles/bigquery.user do IAM no projeto que contém a visualização autorizada.
  • O papel roles/bigquery.dataViewer do IAM no conjunto de dados que contém a visualização autorizada.

Trabalhar com visualizações autorizadas

As seções a seguir descrevem como trabalhar com visualizações autorizadas e visualizações materializadas autorizadas.

Criar uma visualização autorizada

Para criar uma visualização autorizada, escolha uma das seguintes opções. Para conferir as etapas completas de autorização, compartilhamento e exclusão de uma visualização autorizada, consulte o tutorial Criar uma visualização autorizada.

Console

  1. Acessar a página do BigQuery.

    Acessar o BigQuery

  2. No editor de consultas, digite a consulta em que você quer basear a visualização autorizada.

  3. Clique em Salvar > Salvar visualização.

  4. Na caixa de diálogo Salvar visualização, faça o seguinte:

    1. Em Projeto, digite o projeto em que a visualização será salva.

    2. Em Conjunto de dados, digite o conjunto de dados em que a visualização será salva. Ele precisa ser diferente do conjunto de dados usado na consulta de origem.

    3. Em Tabela, digite o nome da visualização.

    4. Clique em Salvar.

  5. Conceda as permissões necessárias aos usuários que podem usar a visualização autorizada.

  6. No painel Explorador, selecione o conjunto de dados usado na consulta de origem.

  7. No painel Detalhes, clique em Compartilhamento > Autorizar visualizações.

  8. No painel Visualizações autorizadas, em Visualização autorizada, digite o nome totalmente qualificado da visualização no formato PROJECT_ID.DATASET_ID.VIEW_NAME.

  9. Clique em Adicionar autorização.

Terraform

Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

# Creates an authorized view.

# Create a dataset to contain the view.
resource "google_bigquery_dataset" "view_dataset" {
  dataset_id  = "view_dataset"
  description = "Dataset that contains the view"
  location    = "us-west1"
}

# Create the view to authorize.
resource "google_bigquery_table" "movie_view" {
  project     = google_bigquery_dataset.view_dataset.project
  dataset_id  = google_bigquery_dataset.view_dataset.dataset_id
  table_id    = "movie_view"
  description = "View to authorize"

  view {
    query          = "SELECT item_id, avg(rating) FROM `movie_project.movie_dataset.movie_ratings` GROUP BY item_id ORDER BY item_id;"
    use_legacy_sql = false
  }
}


# Authorize the view to access the dataset
# that the query data originates from.
resource "google_bigquery_dataset_access" "view_authorization" {
  project    = "movie_project"
  dataset_id = "movie_dataset"

  view {
    project_id = google_bigquery_table.movie_view.project
    dataset_id = google_bigquery_table.movie_view.dataset_id
    table_id   = google_bigquery_table.movie_view.table_id
  }
}

# Specify the IAM policy for principals that can access
# the authorized view. These users should already
# have the roles/bigqueryUser role at the project level.
data "google_iam_policy" "principals_policy" {
  binding {
    role = "roles/bigquery.dataViewer"
    members = [
      "group:example-group@example.com",
    ]
  }
}

# Set the IAM policy on the authorized  view.
resource "google_bigquery_table_iam_policy" "authorized_view_policy" {
  project     = google_bigquery_table.movie_view.project
  dataset_id  = google_bigquery_table.movie_view.dataset_id
  table_id    = google_bigquery_table.movie_view.table_id
  policy_data = data.google_iam_policy.principals_policy.policy_data
}

Para aplicar a configuração do Terraform em um projeto Trusted Cloud , siga as etapas nas seções a seguir.

Preparar o Cloud Shell

  1. Inicie o Cloud Shell.
  2. Defina o projeto Trusted Cloud padrão em que você quer aplicar as configurações do Terraform.

    Você só precisa executar esse comando uma vez por projeto, e ele pode ser executado em qualquer diretório.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    As variáveis de ambiente serão substituídas se você definir valores explícitos no arquivo de configuração do Terraform.

Preparar o diretório

Cada arquivo de configuração do Terraform precisa ter o próprio diretório, também chamado de módulo raiz.

  1. No Cloud Shell, crie um diretório e um novo arquivo dentro dele. O nome do arquivo precisa ter a extensão .tf, por exemplo, main.tf. Neste tutorial, o arquivo é chamado de main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Se você estiver seguindo um tutorial, poderá copiar o exemplo de código em cada seção ou etapa.

    Copie o exemplo de código no main.tf recém-criado.

    Se preferir, copie o código do GitHub. Isso é recomendado quando o snippet do Terraform faz parte de uma solução de ponta a ponta.

  3. Revise e modifique os parâmetros de amostra para aplicar ao seu ambiente.
  4. Salve as alterações.
  5. Inicialize o Terraform. Você só precisa fazer isso uma vez por diretório.
    terraform init

    Opcionalmente, para usar a versão mais recente do provedor do Google, inclua a opção -upgrade:

    terraform init -upgrade

Aplique as alterações

  1. Revise a configuração e verifique se os recursos que o Terraform vai criar ou atualizar correspondem às suas expectativas:
    terraform plan

    Faça as correções necessárias na configuração.

  2. Para aplicar a configuração do Terraform, execute o comando a seguir e digite yes no prompt:
    terraform apply

    Aguarde até que o Terraform exiba a mensagem "Apply complete!".

  3. Abra seu Trusted Cloud projeto para ver os resultados. No console Trusted Cloud , navegue até seus recursos na UI para verificar se foram criados ou atualizados pelo Terraform.

Gerenciar usuários ou grupos para vistas autorizadas

Depois de autorizar uma visualização, você pode manter o acesso a ela concluindo as seguintes tarefas para um conjunto de dados, uma tabela ou uma visualização:

  • Confira a política de acesso.
  • Conceda acesso.
  • Revogue o acesso.
  • Negar acesso.

Para mais informações, consulte Controlar o acesso a recursos usando o IAM.

Remover a autorização de uma visualização

Para remover a autorização de uma visualização, selecione uma das seguintes opções:

Console

  1. Acesse a página do BigQuery no console Trusted Cloud .

    Acessar o BigQuery

  2. No painel Explorer, expanda o projeto e selecione um conjunto de dados.

  3. Clique em Compartilhamento > Autorizar visualizações.

  4. Clique em para Remover autorização.

  5. Clique em Fechar.

bq

Para remover a autorização de uma visualização, use o comando bq rm. Insira o table_id da visualização de que você quer remover a autorização.

    bq rm \
    project_id:dataset:table_id
    

API

Chame o método tables.delete e use as propriedades projectID, datasetID e tableID para remover a visualização autorizada do seu conjunto de dados. Para mais informações, consulte Tabelas.

Cotas e limites

  • As visualizações autorizadas estão sujeitas aos limites de conjuntos de dados. Consulte mais informações em Limites do conjunto de dados.
  • Quando você remove uma visualização autorizada, pode levar até 24 horas para que todas as referências a ela sejam removidas do sistema. Para evitar erros, aguarde 24 horas antes de reutilizar o nome de uma visualização removida ou crie um nome exclusivo para ela.

Tópicos avançados

As seções a seguir descrevem métodos avançados de uso de visualizações autorizadas.

Combinar segurança no nível da linha com visualizações autorizadas

Os dados exibidos em uma visualização lógica ou materializada são filtrados de acordo com as políticas de acesso no nível da linha da tabela de origem subjacente.

Para detalhes sobre como a segurança no nível da linha interage com as visualizações materializadas, consulte Usar a segurança no nível da linha com outros recursos do BigQuery.

Combinar segurança no nível da coluna com visualizações autorizadas

O impacto da segurança no nível da coluna nas visualizações não depende de a visualização ser ou não autorizada.

Para uma descrição detalhada de como as permissões são aplicadas, consulte Visualizações de consulta para segurança no nível da coluna.

Usar o compartilhamento do BigQuery com visualizações autorizadas

O BigQuery Sharing (antigo Analytics Hub) é uma plataforma de troca de dados com os seguintes recursos:

  • Permite compartilhar dados e insights em escala além dos limites organizacionais.
  • Usa uma estrutura robusta de segurança e privacidade.
  • Permite publicar um conjunto de dados do BigQuery, chamado de conjunto de dados compartilhado, e as visualizações e conjuntos de dados autorizados associados a um grupo de assinantes.

Um conjunto de dados vinculado é um conjunto de dados somente leitura do BigQuery que serve como ponteiro ou referência a um conjunto de dados compartilhado. A assinatura de uma listagem do Sharing cria um conjunto de dados vinculado no seu projeto, e não uma cópia do conjunto de dados. Assim, os assinantes podem ler os dados, mas não podem adicionar ou atualizar objetos nele.

Não há suporte a visualizações materializadas que se referem a tabelas no conjunto de dados vinculado.

Para mais informações, consulte Introdução ao compartilhamento.

A seguir