Visualizações autorizadas

Neste documento, descrevemos como criar visualizações autorizadas e visualizações materializadas autorizadas no BigQuery. 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 visualizar 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é-computada 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, você poderá criar uma visualização materializada em vez disso. Para entender os casos de uso da visualização lógica e materializada, consulte Visão geral das visualizações lógicas e materializadas.

Etapas gerais para criar visualizações autorizadas

Para criar e compartilhar uma visualização, revise estas etapas gerais, que são as mesmas para visualizações lógicas autorizadas e visualizações 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 a visualização autorizada.
  • Crie uma visualização autorizada de uma consulta SQL que restrinja as colunas que os analistas de dados podem ver nos resultados da consulta.
  • Conceda permissão aos analistas de dados para executar jobs de consulta.
  • Conceda aos analistas de dados acesso ao conjunto de dados que contém a visualização autorizada.
  • Conceda acesso de visualização autorizada ao conjunto de dados de origem.

Alternativas

Embora as visualizações autorizadas sejam flexíveis e escalonáveis, um dos métodos a seguir 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 dados em uma tabela separada.
  • Compartilhe 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. A definição de políticas no nível da linha é flexível e segura, enquanto o compartilhamento de 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 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.

A lista de controle de acesso de um conjunto de dados pode ter até 2.500 recursos autorizados, incluindo visualizações autorizadas, conjuntos de dados autorizados e funções autorizadas. Se você exceder esse limite devido a um grande número de visualizações autorizadas, considere agrupar as visualizações em conjuntos de dados autorizados. Como prática recomendada, agrupe visualizações relacionadas em conjuntos de dados autorizados ao projetar novas BigQuery architectures, especialmente arquiteturas multitenant.

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

Limitações

  • Ao criar uma visualização autorizada ou uma visualização 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 .
  • Ao excluir uma visualização autorizada, pode levar até 24 horas para remover a visualização autorizada da lista de visualizações. 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 contar no limite de visualização autorizada. 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 fornecem aos usuários as permissões necessárias para consultar as visualizações autorizadas ou as visualizações materializadas autorizadas que você compartilha.

Visualizações autorizadas e VPC Service Controls

Ao usar visualizações autorizadas em um perímetro do VPC Service Controls, as regras de entrada que permitem que os principais acessem o projeto que contém a visualização também precisam incluir acesso a todos os projetos que contêm os dados de origem de que a visualização está acessando dados. O principal não precisa de permissões do Identity and Access Management nos projetos de dados de origem, mas a regra de entrada precisa permitir o acesso ao BigQuery no projeto de origem de dados, além do projeto que contém a visualização.

Funções exigidas

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

Você também precisa conceder acesso de usuários ou grupos 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 noconsole) Google 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 do usuário no projeto e no conjunto de dados para a visualização

Para compartilhar uma visualização autorizada com usuários ou grupos, é necessário conceder aos usuários ou grupos as seguintes permissões do IAM:

  • O papel do IAM roles/bigquery.jobUser para o projeto que contém a visualização autorizada. Esse papel concede a permissão bigquery.jobs.create, que é necessária para executar jobs de consulta na visualização.
  • O papel do IAM roles/bigquery.dataViewer para o conjunto de dados que contém a visualização autorizada. Esse papel concede o bigquery.tables.getData, que é necessário para consultar a visualização.

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 para autorizar, compartilhar e excluir 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 você quer salvar a visualização.

    2. Em Conjunto de dados, digite o conjunto de dados em que você quer salvar a visualização. Esse precisa ser um conjunto de dados diferente do 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 Explorer, 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 Google Cloud projeto, conclua as etapas nas seções a seguir.

Preparar o Cloud Shell

  1. Inicie o Cloud Shell.
  2. Defina o Google Cloud projeto 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 Google Cloud projeto para conferir os resultados. No Google Cloud console, navegue até seus recursos na UI para verificar se foram criados ou atualizados pelo Terraform.

Gerenciar usuários ou grupos para visualizações autorizadas

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

  • Ver a política de acesso.
  • Conceder acesso.
  • Revogar 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 Google Cloud console.

    Acessar o BigQuery

  2. No painel à esquerda, clique em Explorer:

    Botão destacado para o painel "Explorer".

    Se o painel esquerdo não aparecer, clique em Expandir painel esquerdo para abrir.

  3. No painel Explorer , expanda seu projeto, clique em Conjuntos de dados e selecione um conjunto de dados.

  4. Clique em Visão geral > Tabelas e selecione uma tabela.

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

  6. Clique em para Remover autorização.

  7. 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 tables.delete método e use as propriedades projectID,datasetID e tableID para remover a visualização autorizada do 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 visualização 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 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 Consultar visualizações para segurança no nível da coluna.

Usar o BigQuery Sharing 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.
  • Oferece suporte à publicação de um conjunto de dados do BigQuery, chamado de conjunto de dados compartilhado, e das visualizações autorizadas e conjuntos de dados autorizados associados, a um conjunto de assinantes.

Um conjunto de dados vinculado é um conjunto de dados somente leitura do BigQuery que serve como um ponteiro ou referência a um conjunto de dados compartilhado. A assinatura de uma listagem de compartilhamento cria um conjunto de dados vinculado no seu projeto, mas não uma cópia do conjunto de dados, para que os assinantes possam ler os dados, mas não possam 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