Configurar regras do VPC Service Controls para compartilhamento do BigQuery

As regras de entrada e saída permitem que editores e assinantes no BigQuery Sharing (antigo Analytics Hub) acessem dados em projetos protegidos por perímetros do VPC Service Controls. Configure essas regras entre um projeto do autor da chamada, que é a rede ou o projeto Google Cloud do cliente que inicia uma solicitação, como uma consulta SQL ou um comando da Google Cloud CLI, e os projetos que hospedam suas trocas de dados, listagens e conjuntos de dados.

Antes de configurar essas regras, é preciso conhecer os perímetros do VPC Service Controls, os conjuntos de dados compartilhados, as trocas de dados, as listagens e os conjuntos de dados vinculados.

Limitações

O BigQuery Sharing não é compatível com regras baseadas em métodos. É preciso especificar method: '*' para permitir todos os métodos nas regras de entrada e saída:

- ingressTo:
    operations:
      - methodSelectors:
          - method: '*'
        serviceName: analyticshub.googleapis.com
    resources:
      - projects/PROJECT_NUMBER

Se os perímetros de serviço também protegerem os recursos do BigQuery, você precisará permitir regras de entrada e saída para o serviço do BigQuery. Não é necessário permitir regras de entrada e saída ao criar uma troca de dados. As regras de entrada e saída do BigQuery são semelhantes às do BigQuery Sharing:

- ingressTo:
    operations:
      - methodSelectors:
          - method: '*'
        serviceName: bigquery.googleapis.com
    resources:
      - projects/PROJECT_NUMBER

Substitua PROJECT_NUMBER pelo número do projeto de destino que está protegido pelo perímetro de serviço.

Criar uma troca de dados

No diagrama a seguir, o projeto do autor da chamada e o projeto que contém a troca de dados estão em perímetros de serviço diferentes:

Regras do VPC Service Controls ao criar uma troca de dados.

Figura 1. Regras do VPC Service Controls para criar uma troca de dados.

A Figura 1 mostra os seguintes componentes:

  • Autor da chamada: um administrador de BigQuery Sharing.
  • Projeto R: o projeto do autor da chamada.
  • Projeto E: o projeto que hospeda a troca de dados e as listagens.

Como administrador do BigQuery Sharing, ao criar uma troca de dados em um projeto diferente do projeto do autor da chamada, é necessário adicionar as seguintes regras de entrada e saída:

Projeto Regra
Projeto R Regra de saída para o projeto E
Projeto E (troca de dados) Regra de entrada para o projeto R

Criar uma listagem

No diagrama a seguir, os projetos que contêm a troca de dados e o conjunto de dados de origem estão em perímetros de serviço diferentes:

Regras do VPC Service Controls ao criar uma listagem.

Figura 2. Regras do VPC Service Controls para criar uma listagem.

A Figura 2 mostra os seguintes componentes:

  • Chamador: um administrador ou editor de BigQuery Sharing.
  • Projeto R: o projeto do autor da chamada.
  • Projeto E: o projeto que hospeda a troca de dados e as listagens.
  • Projeto S: o projeto que hospeda o conjunto de dados compartilhado.

Como editor de BigQuery Sharing, ao criar uma listagem em uma troca de dados que está em um projeto diferente do conjunto de dados compartilhado, adicione as seguintes regras de entrada e saída:

Projeto Regra
Projeto R

Regra de saída para o projeto E

Regra de saída para o projeto S

Projeto E (troca de dados)

Regra de saída para o projeto S

Regra de entrada para o projeto R

Projeto S (conjunto de dados compartilhado)

Regra de saída para o projeto E

Regra de entrada para o projeto R

Assinar uma listagem

No diagrama a seguir, os projetos que contêm a listagem e o conjunto de dados vinculado a ela estão em perímetros de serviço diferentes:

Regras do VPC Service Controls ao assinar uma listagem.

Figura 3. Regras do VPC Service Controls para se inscrever em uma listagem.

A Figura 3 mostra os seguintes componentes:

  • Autor da chamada: um assinante do BigQuery Sharing.
  • Projeto R: o projeto do autor da chamada.
  • Projeto E: o projeto que hospeda a troca de dados e as listagens.
  • Projeto L: o projeto que hospeda o conjunto de dados vinculado.

Como assinante do BigQuery Sharing, ao assinar uma listagem em uma troca de dados que está em um projeto diferente do seu, você precisa adicionar as seguintes regras de entrada e saída:

Projeto Regra
Projeto R

Regra de saída para o projeto E

Regra de saída para o projeto L

Projeto E (listagem)

Regra de saída para o projeto L

Regra de entrada para o projeto R

Projeto L (conjunto de dados vinculado)

Regra de saída para o projeto E

Regra de entrada para o projeto R

Atualizar uma listagem

Quando você atualiza uma listagem, por exemplo, para modificar a política de exportação restrita, o compartilhamento do BigQuery usa um worker em segundo plano para propagar essas mudanças para os conjuntos de dados vinculados associados. Se um perímetro do VPC Service Controls com restrições baseadas em IP proteger seu projeto do Google Cloud , o perímetro poderá bloquear o worker em segundo plano originado da infraestrutura do Google e impedir a sincronização do conjunto de dados vinculado.

Para permitir que o worker em segundo plano atualize o conjunto de dados vinculado, configure as regras de entrada ou saída para que o usuário ou a conta de serviço que faz a chamada de API ignore as restrições baseadas em IP.

Para modificar a política de entrada no perímetro do projeto do assinante, adicione uma regra de entrada que permita que o principal de chamada acesse o serviço bigquery.googleapis.com de qualquer endereço IP de origem (*):

- ingressFrom:
    sources:
      - accessLevel: "*"
    identities:
      - "user:CALLING_USER_EMAIL"
      - "serviceAccount:AUTOMATION_SA_EMAIL"
  ingressTo:
    resources:
      - "projects/SUBSCRIBER_PROJECT_NUMBER"
    operations:
      - serviceName: "bigquery.googleapis.com"
        methodSelectors:
          - method: "*"

Como alternativa, para modificar a política de saída no perímetro do editor, adicione a identidade de chamada à lista identities na regra de saída do projeto do assinante:

- egressFrom:
    identities:
      - "user:CALLING_USER_EMAIL"
      - "serviceAccount:AUTOMATION_SA_EMAIL"
  egressTo:
    resources:
      - "projects/SUBSCRIBER_PROJECT_NUMBER"
    operations:
      - serviceName: "bigquery.googleapis.com"
        methodSelectors:
          - method: "*"

Substitua:

  • CALLING_USER_EMAIL: o endereço de e-mail do usuário que executa a chamada de API para atualizar a listagem. Inclua essa identidade se um usuário humano fizer a atualização.
  • AUTOMATION_SA_EMAIL: o endereço de e-mail da conta de serviço que executa a chamada de API para atualizar a listagem. Inclua essa identidade se um processo ou script automatizado fizer a atualização.
  • SUBSCRIBER_PROJECT_NUMBER: o número do projeto do assinante que contém o conjunto de dados vinculado.

Consultar tabelas em um conjunto de dados vinculado

No diagrama a seguir, o projeto do autor da chamada e o projeto que contêm o conjunto de dados vinculado estão em perímetros de serviço diferentes:

Regras do VPC Service Controls ao consultar uma tabela no conjunto de dados vinculado.

Figura 4. Regras do VPC Service Controls para consultar um conjunto de dados vinculado.

A Figura 4 mostra os seguintes componentes:

  • Autor da chamada: um assinante do BigQuery Sharing ou qualquer usuário de job do BigQuery do conjunto de dados vinculado.
  • Projeto R: o projeto do autor da chamada.
  • Projeto L: o projeto que hospeda o conjunto de dados vinculado.
  • Projeto V: o projeto que hospeda o conjunto de dados compartilhado que contém a tabela.

Como assinante do BigQuery Sharing, ao consultar uma tabela em um conjunto de dados vinculado, você precisa adicionar as seguintes regras de entrada e saída:

Projeto Regra
Projeto R Regra de saída para o projeto L
Projeto L (conjunto de dados vinculado) Regra de entrada para o projeto R

Consultar visualizações em um conjunto de dados vinculado

Nesta seção, descrevemos as regras do VPC Service Controls necessárias para consultar uma visualização em um conjunto de dados vinculado. As regras variam de acordo com o fato de a visualização e as tabelas base subjacentes estarem no mesmo projeto ou em projetos diferentes.

A visualização e as tabelas base estão em projetos diferentes

No diagrama a seguir, os projetos que contêm o conjunto de dados vinculado e as tabelas básicas associadas à visualização estão em perímetros de serviço diferentes. A visualização (Projeto S) e a tabela base associada à visualização (Projeto V) estão em projetos diferentes:

A visualização e as tabelas base estão em projetos diferentes.

Figura 5. Regras do VPC Service Controls para consultar uma visualização quando ela e as tabelas base estão em projetos diferentes.

A Figura 5 mostra os seguintes componentes:

  • Autor da chamada: um assinante do BigQuery Sharing ou qualquer usuário de job do BigQuery do conjunto de dados vinculado.
  • Projeto R: o projeto do autor da chamada.
  • Projeto L: o projeto que hospeda o conjunto de dados vinculado.
  • Projeto S: o projeto que hospeda o conjunto de dados compartilhado.
  • Projeto V: o projeto que hospeda o conjunto de dados que contém as tabelas base associadas à visualização.

Como assinante do BigQuery Sharing, ao consultar uma visualização em um conjunto de dados vinculado, você precisa adicionar as seguintes regras de entrada e saída:

Projeto Regra
Projeto R

Regra de saída para o projeto L

Regra de saída para o projeto V

Projeto L (conjunto de dados vinculado)

Regra de entrada para o projeto R

Regra de saída para o projeto V

Projeto V

Regra de saída para o projeto L

Regra de entrada para o projeto R

A visualização e as tabelas base estão no mesmo projeto

No diagrama a seguir, a visualização (projeto V) e a tabela base associada à visualização (projeto V) estão no mesmo projeto:

A visualização e as tabelas base estão no mesmo projeto.

Figura 6. Regras do VPC Service Controls para consultar uma visualização quando a visualização e as tabelas base estão no mesmo projeto.

A Figura 6 mostra os seguintes componentes:

  • Autor da chamada: um assinante do BigQuery Sharing ou qualquer usuário de job do BigQuery do conjunto de dados vinculado.
  • Projeto R: o projeto do autor da chamada.
  • Projeto L: o projeto que hospeda o conjunto de dados vinculado.
  • Projeto V: o projeto que hospeda a visualização e as tabelas base associadas a ela.

Como assinante do BigQuery Sharing, ao consultar uma visualização em um conjunto de dados vinculado, você precisa adicionar as seguintes regras de entrada e saída:

Projeto Regra
Projeto R Regra de saída para o projeto L
Projeto L (conjunto de dados vinculado) Regra de entrada para o projeto R

Consultar visualizações autorizadas em um conjunto de dados vinculado

No diagrama a seguir, a visualização autorizada e a tabela base associada à visualização autorizada (Projeto V) estão no mesmo projeto:

Visualização autorizada e tabelas base no mesmo projeto.

Figura 7. Regras do VPC Service Controls para consultar uma visualização autorizada em um conjunto de dados vinculado.

A Figura 7 mostra os seguintes componentes:

  • Autor da chamada: um assinante do BigQuery Sharing ou qualquer usuário de job do BigQuery do conjunto de dados vinculado.
  • Projeto R: o projeto do autor da chamada.
  • Projeto L: o projeto que hospeda o conjunto de dados vinculado.
  • Projeto V: o projeto que hospeda a visualização autorizada e as tabelas base associadas a ela.

Como assinante do BigQuery Sharing, ao consultar uma visualização autorizada em um conjunto de dados vinculado, você precisa adicionar as seguintes regras de entrada e saída:

Projeto Regra
Projeto R Regra de saída para o projeto L
Projeto L (conjunto de dados vinculado) Regra de entrada para o projeto R

A seguir