Compartilhar regras do VPC Service Controls

Neste documento, descrevemos as regras de entrada e saída necessárias para permitir que editores e assinantes no BigQuery Sharing (antigo Analytics Hub) acessem dados de projetos com perímetros do VPC Service Controls. Neste documento, pressupomos que você já conhece os perímetros do VPC Service Controls, os conjuntos de dados compartilhados, as trocas de dados, as fichas e os conjuntos de dados vinculados.

Um projeto do autor da chamada é a rede ou o projeto Google Cloud do cliente que inicia a solicitação, como uma consulta SQL ou um comando da Google Cloud CLI.

Criar uma troca de dados

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:

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

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

Na Figura 1, os componentes a seguir são rotulados:

  • Chamador: um administrador do BigQuery Sharing.
  • Projeto R: o projeto do autor da chamada.
  • O projeto E 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, adicione 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:

Regra do VPC Service Controls ao criar uma listagem.

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

Na Figura 2, os componentes a seguir são rotulados:

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

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 para permitir que os editores de compartilhamento do BigQuery criem uma ficha:

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:

Regra do VPC Service Controls ao assinar uma listagem.

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

Na Figura 3, os componentes a seguir são rotulados:

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

Como assinante do compartilhamento do BigQuery, 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 página de detalhes (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 aos conjuntos de dados vinculados associados. Se o projeto Google Cloud estiver protegido por um perímetro do VPC Service Controls com restrições baseadas em IP, o worker em segundo plano originado da infraestrutura do Google poderá ser bloqueado, impedindo a sincronização do conjunto de dados vinculado.

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

Para modificar a política de entrada no perímetro do projeto 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, verifique se a identidade de chamada foi adicionada explicitamente à lista identities na regra de saída direcionada ao 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 as informações do produto. Inclua essa identidade se um usuário humano estiver fazendo 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 as informações do produto. Inclua essa identidade se um processo ou script automatizado fizer a atualização.
  • SUBSCRIBER_PROJECT_NUMBER: o número do projeto 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:

Regra 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.

Na Figura 4, os componentes a seguir são rotulados:

  • O 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: hospeda o conjunto de dados vinculado.
  • O projeto V hospeda o conjunto de dados compartilhado que contém a tabela.

Como assinante do BigQuery Sharing, ao consultar uma tabela no 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

Esta seção descreve as regras necessárias do VPC Service Controls para consultar uma visualização em um conjunto de dados vinculado. As regras variam dependendo se a visualização e as tabelas de base subjacentes estão no mesmo projeto ou em projetos separados.

Cenário 1

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:

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

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

Na Figura 5, os componentes a seguir são rotulados:

  • O 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: hospeda o conjunto de dados vinculado.
  • Projeto S: hospeda o conjunto de dados compartilhado.
  • O projeto V hospeda o conjunto de dados que contém as tabelas base associadas à visualização.

Como assinante do BigQuery Sharing, quando você consulta uma visualização em um conjunto de dados vinculado, 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

Cenário 2

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

visualização e tabelas base no mesmo projeto.

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

Na Figura 6, os componentes a seguir são rotulados:

  • O 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: hospeda o conjunto de dados vinculado.
  • Projeto V: hospeda a visualização e as tabelas base associadas a ela.

Como assinante do BigQuery Sharing, quando você consulta uma visualização em um conjunto de dados vinculado, 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 a ela (Projeto V) estão no mesmo projeto:

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

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

Na Figura 6, os componentes a seguir são rotulados:

  • O 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: hospeda o conjunto de dados vinculado.
  • Projeto V: hospeda a visualização autorizada e as tabelas de base associadas a ela.

Como assinante do BigQuery Sharing, quando você consulta uma visualização em um conjunto de dados vinculado, 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

Limitações

O BigQuery Sharing não é compatível com regras baseadas em métodos. Você precisa permitir todos os métodos para ativar regras baseadas em métodos. Exemplo:

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

Se os recursos do BigQuery também estiverem protegidos por perímetros de serviço, permita as 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. Exemplo:

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

A seguir