Este documento descreve casos de uso comuns para troca segura de dados e exemplos de configurações que permitem o acesso entre clientes e recursos separados por perímetros de serviço.
Para uma visão geral das regras de entrada e saída, consulte Regras de entrada e saída.
Para instruções sobre como configurar políticas de entrada e saída, consulte Como configurar políticas de entrada e saída.
Exemplos de configuração de casos de uso de troca de dados segura
Esta seção contém exemplos de casos de uso sobre troca de dados com segurança entre perímetros de serviço.
- Acessar um recurso do Google Cloud fora do perímetro
- Compartilhar dados usando o Pub/Sub entre duas organizações que usam o VPC Service Controls
- Compartilhar dados de PHI anonimizados com a organização parceira
- Conceder acesso a uma imagem de disco do Compute Engine de terceiros
- Ler um conjunto de dados do BigQuery permitindo acesso privado de uma rede VPC fora do perímetro
- Carregar em um bucket do Cloud Storage (gravação) permitindo acesso privado de uma rede VPC fora do perímetro
- Compartilhar registros em um perímetro separado permitindo que projetos de vários perímetros compartilhem registros.
Acessar um recurso do Google Cloud fora do perímetro
O diagrama a seguir mostra um recurso do Compute Engine dentro de um perímetro de serviço que requer acesso a um recurso do Cloud Storage, que está fora do perímetro:
Suponha que você definiu o seguinte perímetro:
name: accessPolicies/222/servicePerimeters/Example status: resources: - projects/111 restrictedServices: - bigquery.googleapis.com - containerregistry.googleapis.com - storage.googleapis.com title: Example
É necessário conceder acesso de leitura a um bucket do Cloud Storage em project 999
, que está em uma organização diferente. Em seguida, defina a seguinte regra de saída em um arquivo e salve o arquivo como gcs.yaml
:
echo """ - egressTo: operations: - serviceName: storage.googleapis.com methodSelectors: - method: google.storage.objects.get resources: - projects/999 egressFrom: identityType: ANY_IDENTITY """ > gcs.yaml
Aplique a regra de saída executando o seguinte comando:
gcloud beta access-context-manager perimeters update Example --set-egress-policies=gcs.yaml
Para mais informações sobre o comando gcloud access-context-manager perimeters update
, consulte gcloud access-context-manager perímetros update.
Compartilhar dados usando o Pub/Sub entre duas organizações que usam o VPC Service Controls
O diagrama a seguir mostra duas organizações, Org1
e Org2
, que usam o VPC Service Controls e compartilham dados usando um tópico do Pub/Sub:
Suponha que você definiu os seguintes perímetros:
# Org 1 Perimeter Definition name: accessPolicies/222/servicePerimeters/Example1 status: resources: - projects/111 restrictedServices: - pubsub.googleapis.com title: Example1
# Org 2 Perimeter Definition name: accessPolicies/333/servicePerimeters/Example2 status: resources: - projects/222 restrictedServices: - pubsub.googleapis.com title: Example2
Para ativar a troca de dados, Org1
precisa definir a seguinte regra de saída que permite
a assinatura e salvar o arquivo como org1egress.yaml
:
# Org1: Org1's perimeter must allow a Pub/Sub subscription to project 222. echo """ - egressTo: operations: - serviceName: pubsub.googleapis.com methodSelectors: - method: Subscriber.CreateSubscription resources: - projects/222 egressFrom: identityType: ANY_IDENTITY """ > org1egress.yaml
Org2
precisa definir uma regra de entrada correspondente que permita a assinatura e
salve o arquivo como org2ingress.yaml
.
# Org 2: Org2's perimeter must allow a Pub/Sub subscription from network project 111 in Org1. echo """ - ingressFrom: identityType: ANY_IDENTITY sources: - resource: projects/111 ingressTo: operations: - serviceName: pubsub.googleapis.com methodSelectors: - method: Subscriber.CreateSubscription resources: - \"*\" """ > org2ingress.yaml
Aplique as regras de entrada e saída executando os seguintes comandos:
gcloud beta access-context-manager perimeters update Example2 1--set-egress-policies=org1egress.yaml
gcloud beta access-context-manager perimeters update Example1 1--set-ingress-policies=org2ingress.yaml
Compartilhar dados anônimos de PHI com uma organização parceira
O diagrama a seguir mostra um perímetro em torno de um segmento de dados protegidos de informações de saúde (PHI), um segundo perímetro em torno de um segmento de dados anônimos e uma organização parceiro separada. O segmento de PHI pode manipular os dados no segmento de dados anônimos, e os dados do segmento de dados anônimos são compartilhados com a organização parceira.
Você quer definir regras de entrada e saída que permitam o compartilhamento de dados anônimos com a organização parceira e permitem que seu segmento de PHI manipule os dados no segmento de dados anônimos.
Suponha que você definiu os seguintes perímetros:
# PhiPerimeter name: accessPolicies/222/servicePerimeters/PhiPerimeter status: resources: - projects/111 restrictedServices: - storage.googleapis.com - bigquery.googleapis.com vpcAccessibleServices: enableRestriction: true allowedServices: - RESTRICTED_SERVICES title: PhiPerimeter
# AnonPerimeter name: accessPolicies/222/servicePerimeters/AnonPerimeter status: resources: - projects/222 restrictedServices: - storage.googleapis.com vpcAccessibleServices: enableRestriction: true allowedServices: - RESTRICTED_SERVICES title: AnonPerimeter
Você também pode presumir que o projeto da organização parceira é 999. É possível definir as seguintes regras de entrada e saída:
# Anon Perimeter echo """ - ingressFrom: identityType: ANY_IDENTITY sources: - resource: projects/111 ingressTo: operations: - serviceName: storage.googleapis.com methodSelectors: - method: google.storage.Write - method: google.storage.objects.create resources: - \"*\" """ > anoningress.yaml
echo """ - egressTo: operations: - serviceName: storage.googleapis.com methodSelectors: - method: google.storage.Write - method: google.storage.objects.create resources: - projects/999 egressFrom: identityType: ANY_IDENTITY """ > anonegress.yaml
# PHI Perimeter echo """ - egressTo: operations: - serviceName: storage.googleapis.com methodSelectors: - method: \"*\" resources: - projects/222 egressFrom: identityType: ANY_IDENTITY """ > phiegress.yaml
Aplique as regras de entrada e saída executando os seguintes comandos:
gcloud beta access-context-manager perimeters update AnonPerimeter --set-ingress-policies=anoningress.yaml --set-egress-policies=anonegress.yaml
gcloud beta access-context-manager perimeters update PhiPerimeter --set-egress-policies=phiegress.yaml
Conceder acesso a uma imagem de disco do Compute Engine de terceiros
Veja no diagrama a seguir um recurso do Compute Engine em um perímetro de serviço que requer acesso a uma imagem de disco do Compute Engine em um projeto de imagem de terceiros fora do perímetro:
Suponha que você definiu o seguinte perímetro:
name: accessPolicies/222/servicePerimeters/Example status: resources: - projects/111 - projects/222 restrictedServices: - compute.googleapis.com - containerregistry.googleapis.com title: Example
Agora você precisa conceder acesso de leitura a imagens de disco em project 999
, que está em uma organização diferente. Em seguida, defina a seguinte regra de saída em um arquivo e
salve o arquivo como compute.yaml
:
echo """ - egressTo: operations: - serviceName: compute.googleapis.com methodSelectors: - method: InstancesService.Insert resources: - projects/999 egressFrom: identityType: ANY_IDENTITY """ > compute.yaml
Aplique a regra de saída executando o seguinte comando:
gcloud beta access-context-manager perimeters update Example --set-egress-policies=compute.yaml
Ler um conjunto de dados do BigQuery ao permitir acesso particular de uma rede VPC fora do perímetro
O diagrama a seguir mostra várias redes VPC de parceiros fora do perímetro que precisam ler um recurso do BigQuery dentro de um perímetro:
Suponha que você use o mesmo perímetro do exemplo 1:
name: accessPolicies/222/servicePerimeters/Example status: resources: - projects/111 restrictedServices: - bigquery.googleapis.com - containerregistry.googleapis.com title: Example
O objetivo é permitir o acesso de leitura de uma rede VPC fora do perímetro
de vários parceiros. Defina a regra de entrada a seguir em um arquivo e salve-o como partneringress.yaml
:
echo """ - ingressFrom: identityType: ANY_IDENTITY sources: - resource: projects/888 - resource: projects/999 ingressTo: operations: - serviceName: bigquery.googleapis.com methodSelectors: - permission: bigquery.datasets.get - permission: bigquery.tables.list - permission: bigquery.tables.get - permission: bigquery.tables.getData - permission: bigquery.jobs.create resources: - \"*\" """ > partneringress.yaml
Aplique a regra de entrada executando o seguinte comando:
gcloud beta access-context-manager perimeters update Example --set-ingress-policies=partneringress.yaml
Para ter mais flexibilidade e controle, o BigQuery usa - permission:
methodSelectors
em vez de - method:
methodSelectors
, que é usado pela maioria dos serviços. Um único método do BigQuery (RunQuery) pode operar de maneiras
diferentes em vários recursos, e o alinhamento com o modelo de permissões proporciona
mais flexibilidade e controle.
Carregar em um bucket do Cloud Storage (gravação) permitindo acesso privado de uma rede VPC fora do perímetro
Suponha que você use o mesmo perímetro do exemplo 1:
name: accessPolicies/222/servicePerimeters/Example status: resources: - projects/111 restrictedServices: - storage.googleapis.com - containerregistry.googleapis.com title: Example
Seu objetivo é permitir o acesso de uma rede VPC fora do perímetro
para permitir que um parceiro grave dados no bucket dentro dele. Defina uma regra de entrada e salve o arquivo como partneringress.yaml
:
echo """ - ingressFrom: identityType: ANY_IDENTITY sources: - resource: projects/222 ingressTo: operations: - serviceName: storage.googleapis.com methodSelectors: - method: google.storage.objects.create resources: - \"*\" """ > partneringress.yaml
Aplique a regra de entrada executando o seguinte comando:
gcloud beta access-context-manager perimeters update Example --set-ingress-policies=partneringress.yaml
Compartilhar registros em um perímetro separado, permitindo que projetos de vários perímetros compartilhem registros
Neste caso de uso, suponha que uma empresa tenha um projeto compartilhado para coleta de dados de registro em toda a implantação do Google Cloud. A empresa precisa ser capaz de registrar dados de vários perímetros do VPC Service Controls nesse projeto de registros compartilhados, que está no próprio perímetro. O projeto de registros não pode acessar outros recursos além dos registros.
Suponha que você definiu os três perímetros a seguir:
# Sensitive 1 name: accessPolicies/222/servicePerimeters/Sensitive1 status: resources: - projects/111 restrictedServices: - bigquery.googleapis.com - containerregistry.googleapis.com - logging.googleapis.com vpcAccessibleServices: enableRestriction: true allowedServices: - RESTRICTED_SERVICES title: Sensitive Data 1
# Sensitive 2 name: accessPolicies/222/servicePerimeters/Sensitive2 status: resources: - projects/222 restrictedServices: - bigquery.googleapis.com - containerregistry.googleapis.com - logging.googleapis.com vpcAccessibleServices: enableRestriction: true allowedServices: - RESTRICTED_SERVICES title: Sensitive Data 2
#Logs name: accessPolicies/222/servicePerimeters/Logs status: resources: - projects/777 restrictedServices: - logging.googleapis.com vpcAccessibleServices: enableRestriction: true allowedServices: - RESTRICTED_SERVICES title: Logs Perimeter
Para permitir que Sensitive1
e Sensitive2
gravem registros no perímetro de registros, defina a seguinte regra de saída em um arquivo e salve o arquivo como logsegress.yaml
:
echo """ - egressTo: operations: - serviceName: logging.googleapis.com methodSelectors: - method: LoggingServiceV2.WriteLogEntries - method: LoggingService.WriteLogEntries resources: - projects/777 egressFrom: identityType: ANY_IDENTITY """ > logsegress.yaml
Aplique as regras de saída executando os seguintes comandos:
gcloud beta access-context-manager perimeters update Sensitive1 --set-egress-policies=logsegress.yaml
gcloud beta access-context-manager perimeters update Sensitive2 --set-egress-policies=logsegress.yaml
Uma configuração semelhante pode ser especificada para qualquer outro perímetro de dados confidenciais que precise gravar no perímetro de registros.
A seguir
- Como configurar políticas de entrada e saída
- Acesso baseado no contexto com regras de entrada
- Regras de entrada e saída