Intercambio seguro de datos con reglas de entrada y salida

Las configuraciones seguras de entrada o salida del intercambio de datos permiten el acceso desde y hacia los clientes y los recursos separados por perímetros de servicio. Puedes definir el acceso mediante reglas de entrada y salida.

Para obtener una descripción general de las reglas de entrada y salida, consulta Reglas de entrada y salida.

A fin de obtener instrucciones para configurar las políticas de reglas de entrada y salida, consulta Configura las políticas de entrada y salida.

Ejemplos de configuración de casos prácticos de intercambio de datos seguros

En esta sección, se muestran los siguientes ejemplos de casos de uso de intercambio de datos seguros:

  1. Permite el acceso a un recurso de Google Cloud fuera del perímetro
  2. Comparte a través de Pub/Sub entre dos organizaciones en las que ambas usan los Controles del servicio de VPC
  3. PHI, segmento de datos anonimizado y organización de socios
  4. Imagen de disco de Compute Engine de terceros
  5. Permite el acceso privado desde una red de VPC fuera del perímetro a un conjunto de datos de BigQuery
  6. Permite el acceso privado desde una red de VPC fuera del perímetro a fin de cargarse en un bucket de Cloud Storage (escritura)
  7. Permite que los proyectos de varios perímetros compartan registros en un perímetro independiente

Permite el acceso a un recurso de Google Cloud fuera del perímetro

Salida desde un perímetro

Supongamos que definiste el siguiente perímetro, que se encuentra en la lista de perímetros con gcloud:

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

Ahora debes otorgar acceso de lectura a un bucket de Cloud Storage en el proyecto 999, que se encuentra en una organización diferente. Luego deberás definir la siguiente regla de salida y guardarla 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

Ejecuta el siguiente comando para aplicar la regla de entrada:

gcloud beta access-context-manager perimeters update Example --set-egress-policies=gcs.yaml

Comparte datos mediante Pub/Sub entre dos organizaciones en las que ambas usan los Controles del servicio de VPC

Salida desde un perímetro y entrada en otro perímetro

En este ejemplo, dos organizaciones, Org1 y Org2, con los Controles del servicio de VPC desean compartir datos a través de un tema de Pub/Sub.

Supongamos que definiste los siguientes perímetros, que se encuentran enumerando los perímetros con gcloud:

# 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 habilitar este intercambio, la Org1 debe definir una regla de salida que permita la suscripción.

# 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 debe definir una regla de entrada correspondiente que permita la suscripción.

# 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
""" > org2ingress.yaml

Ejecuta los siguientes comandos para aplicar las reglas de entrada y salida:

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

PHI, segmento de datos anonimizado y organización de socios

Entrada del perímetro y salida del perímetro

En este ejemplo, quieres definir un perímetro en torno a un segmento de datos de la información de salud protegida (PHI) y un segundo perímetro en torno a un segmento de datos anonimizados. Deseas habilitar el uso compartido de datos anonimizados con una organización asociada y, a la vez, permitir que tu segmento de la PHI manipule los datos del segmento de datos anonimizados.

Supongamos que definiste los siguientes dos perímetros, que se encuentran enumerando el perímetro con gcloud:

# 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

También suponemos que el proyecto de la organización asociada es el 999. Deberás definir las siguientes reglas de política direccional:

# 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
""" > 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

Aplica las reglas de salida mediante la ejecución de los siguientes 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

Imagen de disco de Compute Engine de terceros

Salida al proyecto de imagen

En este ejemplo, quieres autorizar el uso de una imagen de disco de Compute Engine en un proyecto de imagen de terceros que se encuentra fuera de todos los perímetros.

Supongamos que definiste el siguiente perímetro, que se encuentra en la lista de perímetros con gcloud:

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

Ahora debes otorgar acceso de lectura a imágenes de disco en el proyecto 999, que se encuentra en una organización diferente. Luego deberás definir la siguiente regla de salida:

echo """
- egressTo:
    operations:
    - serviceName: compute.googleapis.com
      methodSelectors:
      - method: InstancesService.Insert
    resources:
    - projects/999
  egressFrom:
    identityType: ANY_IDENTITY
""" > compute.yaml

Ejecuta el siguiente comando para aplicar la regla de entrada:

gcloud beta access-context-manager perimeters update Example --set-egress-policies=compute.yaml

Permite el acceso privado desde una red de VPC fuera del perímetro a un conjunto de datos de BigQuery

Salida al proyecto de imagen

En este ejemplo, asumimos que el mismo perímetro que se usa ejemplo 1 tiene las mismas características:

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

Ahora tu objetivo es permitir el acceso de lectura desde una red de VPC fuera del perímetro de varios socios, puedes lograrlo mediante la definición de una regla de entrada:

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

""" > partneringress.yaml

Ejecuta el siguiente comando para aplicar la regla de entrada:

gcloud beta access-context-manager perimeters update Example --set-ingress-policies=partneringress.yaml

Para obtener más flexibilidad y control, BigQuery usa - permission: methodSelectors en lugar del - method: methodSelectors que usan la mayoría de los servicios. Esto se debe a que un solo método de BigQuery (RunQuery) puede operar de distintas maneras en varios recursos diferentes, y alinearse con el modelo de permisos proporciona más flexibilidad y control.

Permite que el acceso privado desde una red de VPC fuera del perímetro se cargue en un bucket de Cloud Storage (escritura)

En este ejemplo, asumimos que el mismo perímetro que se usa ejemplo 1 tiene las mismas características:

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

Ahora tu objetivo es permitir el acceso desde una red de VPC fuera del perímetro para permitir que un socio cargue datos en el perímetro. Para ello, define una regla de entrada:

echo """
- ingressFrom:
    identityType: ANY_IDENTITY
    sources:
    - resource: projects/222
  ingressTo:
    operations:
    - serviceName: storage.googleapis.com
      methodSelectors:
      - method: google.storage.objects.create
""" > partneringress.yaml

Ejecuta el siguiente comando para aplicar la regla de entrada:

gcloud beta access-context-manager perimeters update Example --set-ingress-policies=partneringress.yaml

Permite que los proyectos de varios perímetros compartan registros en un perímetro independiente

En este caso de uso, una empresa tiene un proyecto compartido para recopilar datos de registros de toda su implementación de Google Cloud. La empresa debe poder registrar datos de diferentes perímetros de los Controles del servicio de VPC en este proyecto de registros compartidos, que se encuentra en su propio perímetro. No quieren que el proyecto de registros pueda acceder a otros recursos que no sean los registros en sí.

Supongamos que definiste los siguientes tres perímetros, que se encuentran en la lista de perímetros con gcloud:

# 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 y Sensitive2 escriban registros en el perímetro de registros, usa las siguientes reglas de salida:

echo """
- egressTo:
    operations:
    - serviceName: logging.googleapis.com
      methodsSelectors:
      - method: LoggingServiceV2.WriteLogEntries
      - method: LoggingService.WriteLogEntries
    resources:
    - projects/777
  egressFrom:
    identityType: ANY_IDENTITY
""" > logsegress.yaml

Aplica las reglas de salida mediante la ejecución de los siguientes 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

Se puede especificar una configuración similar para cualquier otro perímetro de datos sensibles que deba escribir en el perímetro de registro.