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.
Consulte Regras de entrada e saída e tenha uma visão geral sobre o assunto.
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 dos casos de uso relacionados a troca de dados segura
Esta seção contém exemplos de casos de uso relacionados a troca de dados com segurança entre perímetros de serviço.
- Acessar um recurso 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 do disco do Compute Engine pertencente a terceiros
- Ler um conjunto de dados do BigQuery permitindo acesso particular 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 façam isso
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 permita a assinatura e salve 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 com informações protegidas de saúde (PHI, na sigla em inglês), um segundo perímetro em torno de um segmento de dados anônimos e uma organização parceira separada. O segmento de PHI pode manipular os dados no segmento de dados anônimos, que 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 do disco do Compute Engine pertencente a terceiros
Veja no diagrama a seguir um recurso do Compute Engine em um perímetro de serviço que requer acesso a uma imagem do 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 permitindo 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: methodSelectorsem 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 que um parceiro possa gravar dados no bucket dentro do perímetro. 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 façam isso
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 sensíveis 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