Troca de dados segura com regras de entrada e saída

Este documento descreve exemplos de utilização comuns para a troca de dados segura e exemplos de configurações para permitir o acesso entre clientes e recursos separados por perímetros de serviço.

Para uma vista geral das regras de entrada e saída, consulte o artigo Regras de entrada e saída.

Para ver instruções sobre como configurar políticas de regras de entrada e saída, consulte o artigo Configurar políticas de entrada e saída.

Exemplos de configuração de exemplos de utilização da troca de dados segura

Esta secção contém exemplos de utilização sobre a troca de dados em segurança entre perímetros de serviço.

Aceder a um Trusted Cloud by S3NS recurso fora do perímetro

O diagrama seguinte 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:

Saída de um perímetro

Suponhamos que 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

Tem de conceder acesso de leitura a um contentor do Cloud Storage em project 999, que se encontra numa organização diferente. Em seguida, defina a seguinte regra de saída num ficheiro e guarde o ficheiro 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 o artigo gcloud access-context-manager perimeters update.

Partilhe dados através do Pub/Sub entre duas organizações que usam os VPC Service Controls

O diagrama seguinte mostra duas organizações, Org1 e Org2, que usam os VPC Service Controls e partilham dados através de um tópico do Pub/Sub:

Saída de um perímetro e entrada noutro perímetro

Suponhamos que 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 tem de definir a seguinte regra de saída que permite a subscrição e guardar o ficheiro 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 tem de definir uma regra de entrada correspondente que permita a subscrição e guardar o ficheiro 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

Partilhe dados de IPH anónimos com uma organização parceira

O diagrama seguinte mostra um perímetro em torno de um segmento de dados de informações de saúde protegidas (PHI), um segundo perímetro em torno de um segmento de dados anónimo e uma organização parceira separada. O segmento de IPH é capaz de manipular os dados no segmento de dados anonimizados e os dados do segmento de dados anonimizados são partilhados com a organização parceira.

Entrada no perímetro e saída do perímetro

Quer definir regras de entrada e saída que permitam a partilha de dados anónimos com a organização parceira e permitir que o seu segmento de IPH manipule os dados no segmento de dados anónimos.

Suponhamos que 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

Também pode assumir que o projeto da organização parceira é 999. Pode 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

Conceda acesso a uma imagem de disco do Compute Engine de terceiros

O diagrama seguinte mostra um recurso do Compute Engine num perímetro de serviço que requer acesso a uma imagem de disco do Compute Engine num projeto de imagem de terceiros que está fora do perímetro:

Saída para projeto de imagem

Suponhamos que 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, tem de conceder acesso de leitura a imagens de disco em project 999, que se encontra numa organização diferente. Em seguida, defina a seguinte regra de saída num ficheiro e guarde o ficheiro 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 o acesso privado a partir de uma rede VPC fora do perímetro

O diagrama seguinte mostra várias redes VPC de parceiros fora do perímetro que precisam de ler a partir de um recurso do BigQuery dentro de um perímetro:

Saída para projeto de imagem

Pode presumir que usa o mesmo perímetro que no exemplo 1:

name: accessPolicies/222/servicePerimeters/Example
status:
  resources:
  - projects/111
  restrictedServices:
  - bigquery.googleapis.com
  - containerregistry.googleapis.com
title: Example

O seu objetivo é permitir o acesso de leitura a partir de uma rede VPC fora do perímetro de vários parceiros. Defina a seguinte regra de entrada num ficheiro e guarde o ficheiro 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 maior flexibilidade e controlo, o BigQuery usa o - permission: methodSelectors em vez do - method: methodSelectors usado pela maioria dos serviços. Um único método do BigQuery (RunQuery) pode funcionar de diferentes formas em vários recursos diferentes, e o alinhamento com o modelo de autorizações permite maior flexibilidade e controlo.

Carregar para um contentor do Cloud Storage (escrita) permitindo o acesso privado a partir de uma rede VPC fora do perímetro

Pode presumir que usa o mesmo perímetro que no exemplo 1:

name: accessPolicies/222/servicePerimeters/Example
status:
  resources:
  - projects/111
  restrictedServices:
  - storage.googleapis.com
  - containerregistry.googleapis.com
title: Example

O seu objetivo é permitir o acesso a partir de uma rede VPC fora do perímetro para permitir que um parceiro escreva dados no contentor dentro do perímetro. Defina uma regra de entrada e guarde o ficheiro 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

Partilhe registos num perímetro separado permitindo que projetos de vários perímetros partilhem registos

Neste exemplo de utilização, vamos assumir que uma empresa tem um projeto partilhado para a recolha de dados de registo de toda a sua Trusted Cloud implementação. A empresa tem de poder registar dados de vários perímetros diferentes do VPC Service Controls no projeto de registos partilhados, que está no seu próprio perímetro. O projeto de registos não deve aceder a recursos que não sejam os registos.

Suponhamos que definiu os seguintes três perímetros:

# 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 escrevam registos no perímetro de registos, defina a seguinte regra de saída num ficheiro e guarde-o 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

Pode especificar uma configuração semelhante para qualquer outro perímetro de dados sensíveis que precise de escrever no perímetro de registos.

O que se segue?