Mengamankan pertukaran data dengan aturan traffic masuk dan keluar

Dokumen ini menjelaskan kasus penggunaan umum untuk pertukaran data yang aman dan contoh konfigurasi untuk mengizinkan akses antara klien dan resource yang dipisahkan oleh perimeter layanan.

Untuk ringkasan tentang aturan masuk dan keluar, lihat Aturan masuk dan keluar.

Untuk mengetahui petunjuk tentang cara mengonfigurasi kebijakan aturan masuk dan keluar, lihat Mengonfigurasi kebijakan masuk dan keluar.

Contoh konfigurasi kasus penggunaan pertukaran data yang aman

Bagian ini berisi contoh kasus penggunaan tentang pertukaran data dengan aman di seluruh perimeter layanan.

Mengakses resource Google Cloud di luar perimeter

Diagram berikut menunjukkan resource Compute Engine di dalam perimeter layanan yang memerlukan akses ke resource Cloud Storage, yang berada di luar perimeter:

Traffic keluar dari satu perimeter

Asumsikan bahwa Anda telah menentukan perimeter berikut:

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

Anda perlu memberikan akses baca ke bucket Cloud Storage di project 999, yang berada di organisasi lain. Selanjutnya, Anda menentukan aturan keluar berikut dalam sebuah file dan menyimpan file tersebut sebagai gcs.yaml:

echo """
- egressTo:
    operations:
      - serviceName: storage.googleapis.com
        methodSelectors:
        - method: google.storage.objects.get
    resources:
    - projects/999
  egressFrom:
    identityType: ANY_IDENTITY
""" > gcs.yaml

Terapkan aturan traffic keluar dengan menjalankan perintah berikut:

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

Untuk mengetahui informasi selengkapnya tentang perintah gcloud access-context-manager perimeters update, lihat gcloud access-context-manager perimeters update.

Berbagi data menggunakan Pub/Sub antara dua organisasi yang menggunakan Kontrol Layanan VPC

Diagram berikut menunjukkan dua organisasi, Org1 dan Org2, yang menggunakan Kontrol Layanan VPC dan berbagi data menggunakan topik Pub/Sub:

Traffic keluar dari satu perimeter dan traffic masuk ke perimeter lain

Asumsikan Anda telah menentukan perimeter berikut:

# 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

Untuk mengaktifkan pertukaran data, Org1 harus menentukan aturan keluar berikut yang mengizinkan langganan dan menyimpan file sebagai 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 harus menentukan aturan masuk terkait yang mengizinkan langganan dan menyimpan file sebagai 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

Terapkan aturan masuk dan keluar dengan menjalankan perintah berikut:

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

Membagikan data PHI anonim kepada organisasi partner

Diagram berikut menunjukkan perimeter di sekeliling segmen data Informasi Kesehatan Terlindungi (PHI), perimeter kedua di sekeliling segmen data anonim, dan organisasi partner terpisah. Segmen PHI dapat memanipulasi data dalam segmen data anonim dan data dari segmen data anonim dibagikan kepada organisasi partner.

Traffic masuk ke perimeter dan traffic keluar dari perimeter

Anda ingin menentukan aturan masuk dan keluar yang memungkinkan pembagian data anonim dengan organisasi partner dan mengizinkan segmen PHI Anda untuk memanipulasi data dalam segmen data anonim.

Asumsikan Anda telah menentukan perimeter berikut:

# 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

Anda juga dapat mengasumsikan bahwa project organisasi partner adalah 999. Anda dapat menentukan aturan masuk dan keluar berikut:

# 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

Terapkan aturan masuk dan keluar dengan menjalankan perintah berikut:

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

Memberikan akses ke disk image Compute Engine pihak ketiga

Diagram berikut menunjukkan resource Compute Engine dalam perimeter layanan yang memerlukan akses ke disk image Compute Engine dalam project gambar pihak ketiga yang berada di luar perimeter:

Traffic keluar ke project image

Asumsikan bahwa Anda telah menentukan perimeter berikut:

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

Anda kini harus memberikan akses baca ke disk image di project 999, yang berada di organisasi yang berbeda. Anda kemudian menentukan aturan keluar berikut dalam sebuah file dan menyimpan file tersebut sebagai compute.yaml:

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

Terapkan aturan traffic keluar dengan menjalankan perintah berikut:

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

Membaca set data BigQuery dengan mengizinkan akses pribadi dari jaringan VPC di luar perimeter

Diagram berikut menunjukkan beberapa jaringan VPC partner di luar perimeter yang perlu membaca dari resource BigQuery di dalam perimeter:

Traffic keluar ke project image

Anda dapat mengasumsikan bahwa Anda menggunakan perimeter yang sama seperti contoh 1:

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

Tujuan Anda adalah mengizinkan akses baca dari jaringan VPC di luar perimeter berbagai partner. Tentukan aturan masuk berikut dalam file, lalu simpan file tersebut sebagai 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

Terapkan aturan masuk dengan menjalankan perintah berikut:

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

Untuk mendapatkan fleksibilitas dan kontrol yang lebih besar, BigQuery menggunakan - permission: methodSelectors, bukan - method: methodSelectors yang digunakan oleh sebagian besar layanan. Satu metode BigQuery (RunQuery) dapat beroperasi dengan berbagai cara di beberapa resource yang berbeda, dan menyelaraskan dengan model izin akan memungkinkan fleksibilitas serta kontrol yang lebih besar.

Memuat ke bucket Cloud Storage (tulis) dengan mengizinkan akses pribadi dari jaringan VPC di luar perimeter

Anda dapat mengasumsikan bahwa Anda menggunakan perimeter yang sama seperti contoh 1:

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

Tujuan Anda adalah mengizinkan akses dari jaringan VPC di luar perimeter untuk memungkinkan partner menulis data ke bucket di dalam perimeter. Anda menentukan aturan masuk dan menyimpan file sebagai 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

Terapkan aturan masuk dengan menjalankan perintah berikut:

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

Membagikan log dalam perimeter terpisah dengan mengizinkan project dari beberapa perimeter untuk berbagi log

Dalam kasus penggunaan ini, asumsikan bahwa perusahaan memiliki project bersama untuk pengumpulan data log dari seluruh deployment Google Cloud mereka. Perusahaan harus dapat mencatat data dari berbagai perimeter Kontrol Layanan VPC yang berbeda ke dalam project log bersama, yang berada di perimeternya sendiri. Project log tidak boleh mengakses resource apa pun selain log.

Asumsikan bahwa Anda telah menentukan tiga perimeter berikut:

# 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

Untuk mengizinkan Sensitive1 dan Sensitive2 menulis log ke perimeter Log, tentukan aturan traffic keluar berikut dalam file, lalu simpan file sebagai 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

Terapkan aturan traffic keluar dengan menjalankan perintah berikut:

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

Konfigurasi serupa dapat ditentukan untuk perimeter data sensitif lainnya yang perlu menulis ke perimeter log.

Langkah selanjutnya