1. Pengantar
Private Service Connect
Private Service Connect adalah kemampuan jaringan Google Cloud yang memungkinkan konsumen mengakses layanan terkelola secara pribadi dari dalam jaringan VPC mereka. Demikian pula, hal ini memungkinkan produsen layanan terkelola untuk menghosting layanan ini di jaringan VPC masing-masing yang terpisah dan menawarkan koneksi pribadi kepada konsumen mereka.

Kontrol Akses Produsen Private Service Connect
Alih-alih menerima semua koneksi dari konsumen mana pun secara otomatis, produsen hanya dapat menerima permintaan koneksi masuk jika konsumen tercantum dalam daftar penerimaan konsumen. Anda dapat menentukan konsumen menurut project, jaringan VPC, atau endpoint PSC individual. Anda tidak dapat menyertakan berbagai jenis konsumen dalam daftar penerimaan atau penolakan konsumen yang sama.
Untuk preferensi koneksi apa pun, koneksi yang diterima dapat diganti dan ditolak oleh kebijakan organisasi (compute.restrictPrivateServiceConnectConsumer) yang memblokir koneksi masuk.
Perhatikan bahwa kebijakan organisasi (compute.restrictPrivateServiceConnectConsumer) berlaku untuk organisasi, folder, atau project. Jika Anda menginginkan kontrol akses terperinci ke endpoint PSC, Anda dapat menggunakan daftar penerimaan konsumen dari setiap endpoint PSC.
Kontrol akses berbasis endpoint
Kontrol akses berbasis endpoint PSC adalah kemampuan produsen untuk memberikan otorisasi kepada konsumen melalui setiap endpoint PSC dalam kebijakan lampiran layanan.
Pendekatan ini, yang direkomendasikan untuk layanan multi-tenant, memberikan kontrol paling terperinci untuk mengelola koneksi.
Codelab ini berfokus pada pembelajaran cara mengonfigurasi fitur ini.
Perhatikan bahwa metode ini tidak berlaku untuk backend Private Service Connect.
2. Yang akan Anda pelajari
- Sebagai produsen, cara memublikasikan layanan menggunakan PSC.
- Sebagai produsen, cara membuat kontrol akses berbasis endpoint PSC.
- Sebagai konsumen, cara mengakses layanan PSC.
3. Arsitektur Lab Secara Keseluruhan

4. Langkah-langkah persiapan
Peran IAM yang diperlukan untuk mengerjakan lab
Anda mulai dengan menetapkan peran IAM yang diperlukan ke akun GCP di tingkat project.
- Admin Jaringan Compute (
roles/compute.networkAdmin) Peran ini memberi Anda kontrol penuh atas resource jaringan Compute Engine. - Admin Logging (
roles/logging.admin) Peran ini memberi Anda akses ke semua izin logging dan izin dependen. - Admin Penggunaan Layanan (
roles/serviceusage.serviceUsageAdmin) Peran ini memberi Anda kemampuan untuk mengaktifkan, menonaktifkan, dan memeriksa status layanan, memeriksa operasi, serta menggunakan kuota dan penagihan untuk project konsumen. - Admin Instance Compute (
roles/compute.instanceAdmin.v1) Peran ini memberi Anda kontrol penuh atas instance Compute Engine, grup instance, disk, snapshot, dan image. Akses baca ke semua resource jaringan Compute Engine. - Compute Security Admin (
roles/compute.securityAdmin) Peran ini memberi Anda izin untuk membuat, mengubah, dan menghapus aturan firewall serta sertifikat SSL, dan juga untuk mengonfigurasi setelan Shielded VM.
Mengaktifkan API
Di dalam Cloud Shell, pastikan project Anda dikonfigurasi dengan benar dan tetapkan variabel lingkungan Anda.
Di dalam Cloud Shell, lakukan hal berikut:
gcloud auth login
gcloud config set project <your project id>
export project_id=$(gcloud config get-value project)
export region=us-central1
export zone=$region-a
echo $project_id
echo $region
echo $zone
Aktifkan semua Google API yang diperlukan di project. Di dalam Cloud Shell, lakukan hal berikut:
gcloud services enable \
compute.googleapis.com
Buat VPC produsen
Di project, buat jaringan VPC dengan mode subnet kustom. Lakukan hal berikut di dalam Cloud Shell:
gcloud compute networks create producer-net \
--subnet-mode=custom
Membuat subnet di VPC produsen
Anda akan memerlukan tiga subnet: producer-subnet untuk layanan Anda; proxy-only-subnet untuk load balancer guna memublikasikan layanan Anda; psc-subnet untuk PSC guna memublikasikan layanan.
Di dalam Cloud Shell, lakukan hal berikut untuk membuat subnet IPV4:
gcloud compute networks subnets create producer-subnet \
--network=producer-net \
--range=10.10.0.0/24 \
--region=$region
gcloud compute networks subnets create proxy-only-subnet \
--purpose=REGIONAL_MANAGED_PROXY \
--role=ACTIVE \
--region=$region \
--network=producer-net \
--range=10.30.0.0/24
gcloud compute networks subnets create psc-subnet \
--network=producer-net \
--region=$region \
--range=192.168.0.0/16 \
--purpose=PRIVATE_SERVICE_CONNECT
Membuat Cloud NAT dan Cloud Router untuk VPC produsen
Cloud NAT digunakan untuk mengizinkan VM mendownload dan menginstal aplikasi.
gcloud compute routers create $region-cr \
--network=producer-net \
--region=$region
gcloud compute routers nats create $region-nat \
--router=$region-cr \
--region=$region \
--nat-all-subnet-ip-ranges \
--auto-allocate-nat-external-ips
Buat VPC konsumen
Di project, buat jaringan VPC dengan mode subnet kustom. Lakukan hal berikut di dalam Cloud Shell:
gcloud compute networks create consumer-net \
--subnet-mode=custom
Membuat subnet di VPC konsumen
Di dalam Cloud Shell, lakukan hal berikut untuk membuat subnet IPV4:
gcloud compute networks subnets create consumer-subnet \
--network=consumer-net \
--range=10.20.0.0/24 \
--region=$region
Buat kebijakan firewall global untuk VPC produsen dan VPC konsumen
Anda akan membuat kebijakan firewall jaringan global dan mengaitkannya dengan VPC produsen dan VPC konsumen.
gcloud compute network-firewall-policies create global-fw-policy \
--global
gcloud compute network-firewall-policies associations create \
--firewall-policy=global-fw-policy \
--name=producer-fw-policy \
--network=producer-net \
--global-firewall-policy
gcloud compute network-firewall-policies associations create \
--firewall-policy=global-fw-policy \
--name=consumer-fw-policy \
--network=consumer-net \
--global-firewall-policy
Mengizinkan SSH
Untuk mengizinkan Identity-Aware Proxy (IAP) terhubung ke instance VM Anda, buat aturan firewall yang:
- Berlaku untuk semua instance VM yang ingin Anda akses menggunakan IAP.
- Mengizinkan traffic masuk dari rentang IP 35.235.240.0/20. Rentang ini berisi semua alamat IP yang digunakan IAP untuk penerusan TCP.
gcloud compute network-firewall-policies rules create 100 \
--action=ALLOW \
--firewall-policy=global-fw-policy \
--description="producer-allow-iap" \
--direction=INGRESS \
--src-ip-ranges=35.235.240.0/20 \
--layer4-configs=tcp:22 \
--global-firewall-policy
Menambahkan aturan firewall Ingress ke layanan Anda
Anda akan menggunakan Load Balancer Aplikasi Internal Regional untuk memublikasikan layanan.Aturan firewall ingress y harus mengizinkan subnet khusus proxy untuk mengakses layanan. Untuk mengetahui informasi mendetail, tinjau dokumen ini.
gcloud compute network-firewall-policies rules create 200 \
--action=ALLOW \
--firewall-policy=global-fw-policy \
--description="producer-allow-access-service" \
--direction=INGRESS \
--src-ip-ranges=10.30.0.0/24 \
--layer4-configs=tcp:80 \
--global-firewall-policy
Mengizinkan health check load balancer ke layanan Anda
Pemeriksaan health check Load Balancer Aplikasi Internal Regional menggunakan rentang 35.191.0.0/16 dan 130.211.0.0/22. Anda akan membuat aturan firewall ingress untuk mengizinkan health check dari pemeriksaan. Untuk mengetahui detail selengkapnya, tinjau dokumen ini.
gcloud compute network-firewall-policies rules create 300 \
--action=ALLOW \
--firewall-policy=global-fw-policy \
--description="producer-allow-health-check" \
--direction=INGRESS \
--src-ip-ranges=35.191.0.0/16,130.211.0.0/22\
--layer4-configs=tcp:80 \
--global-firewall-policy
Buat VM sebagai klien http di VPC konsumen
Di dalam Cloud Shell, lakukan langkah-langkah berikut untuk membuat instance VM sebagai klien pengujian:
gcloud compute instances create myclient \
--zone=$zone \
--subnet=consumer-subnet \
--shielded-secure-boot \
--no-address
Buat VM sebagai server http di VPC produsen
Di dalam Cloud Shell, lakukan langkah-langkah berikut untuk membuat instance VM sebagai server http:
gcloud compute instances create myserver \
--subnet=producer-subnet \
--zone=$zone \
--no-address \
--shielded-secure-boot \
--metadata startup-script='#! /bin/bash
sudo apt-get update
sudo apt-get install apache2 -y
a2enmod ssl
sudo a2ensite default-ssl
echo "I am a Http Server." | \
tee /var/www/html/index.html
systemctl restart apache2'
5. Produsen memublikasikan layanan PSC
Membuat Load Balancer Aplikasi Internal Regional
Anda akan membuat Load Balancer Aplikasi Internal regional sebagai frontend layanan dan backend-nya adalah grup instance tidak terkelola yang endpoint-nya adalah server http yang kita buat sebelumnya.
Mencadangkan alamat IP load balancer
gcloud compute addresses create l7-ilb-ip-address \
--region=$region \
--subnet=producer-subnet
Membuat grup instance
Anda akan membuat grup instance tidak terkelola dan menambahkan instance VM, myserver, ke grup instance tersebut.
gcloud compute instance-groups unmanaged create my-service-ig \
--zone=$zone
gcloud compute instance-groups unmanaged add-instances my-service-ig \
--zone=$zone \
--instances=myserver
Buat health check HTTP
gcloud compute health-checks create http l7-ilb-basic-check \
--region=$region \
--use-serving-port
Buat layanan backend
gcloud compute backend-services create l7-ilb-backend-service \
--load-balancing-scheme=INTERNAL_MANAGED \
--protocol=HTTP \
--health-checks=l7-ilb-basic-check \
--health-checks-region=$region \
--region=$region
Menambahkan backend ke layanan backend
gcloud compute backend-services add-backend l7-ilb-backend-service \
--balancing-mode=UTILIZATION \
--instance-group=my-service-ig \
--instance-group-zone=$zone \
--region=$region
Buat peta URL
gcloud compute url-maps create l7-ilb-map \
--default-service=l7-ilb-backend-service \
--region=$region
Buat proxy target
gcloud compute target-http-proxies create l7-ilb-proxy \
--url-map=l7-ilb-map \
--url-map-region=$region \
--region=$region
Membuat aturan penerusan
gcloud compute forwarding-rules create l7-ilb-forwarding-rule \
--load-balancing-scheme=INTERNAL_MANAGED \
--network=producer-net \
--subnet=producer-subnet \
--address=l7-ilb-ip-address \
--ports=80 \
--region=$region \
--target-http-proxy=l7-ilb-proxy \
--target-http-proxy-region=$region
Produsen PSC memublikasikan layanan
Anda akan menggunakan PSC untuk memublikasikan layanan dengan connection-preference=ACCEPT_MANUAL dan daftar konsumen yang kosong.
gcloud compute service-attachments create my-psc-service \
--region=$region \
--target-service=projects/$project_id/regions/$region/forwardingRules/l7-ilb-forwarding-rule \
--connection-preference=ACCEPT_MANUAL \
--nat-subnets=psc-subnet
export myserver_service_attachment=$(gcloud compute service-attachments describe my-psc-service --region=$region --format="value(selfLink.scope(v1))")
echo $myserver_service_attachment
6. Konsumen membuat endpoint PSC
Mencadangkan IP untuk endpoint PSC
gcloud compute addresses create myserver-psc-endpoint-ip \
--region=$region \
--subnet=consumer-subnet \
--ip-version=IPV4
Membuat endpoint PSC
Buat endpoint PSC dan dapatkan IP endpoint PSC untuk pengujian pada langkah berikutnya.
gcloud compute forwarding-rules create myserver-psc-endpoint \
--region=$region \
--network=consumer-net \
--address=myserver-psc-endpoint-ip \
--target-service-attachment=$myserver_service_attachment
psc_endpoint_ip=$(gcloud compute forwarding-rules describe myserver-psc-endpoint \
--region=$region --format="value(IPAddress)")
echo $psc_endpoint_ip
Konsumen memeriksa status endpoint PSC
Sebelum produsen menambahkan endpoint PSC dalam daftar konsumen, koneksi akan terlihat di Endpoint yang terhubung di sisi konsumen dengan status Menunggu Keputusan.
gcloud compute forwarding-rules describe myserver-psc-endpoint \
--region=$region
Anda akan melihat hasil yang serupa seperti di bawah ini.
IPAddress: 10.20.0.3
allowPscGlobalAccess: false
creationTimestamp: '2026-02-23T16:27:27.920-08:00'
fingerprint: yh_UiYqjHCc=
id: '934193159895862912'
kind: compute#forwardingRule
labelFingerprint: 42WmSpB8rSM=
name: myserver-psc-endpoint
network: https://www.googleapis.com/compute/v1/projects/<project_id>/global/networks/consumer-net
networkTier: PREMIUM
pscConnectionId: '160443618817212419'
pscConnectionStatus: PENDING
region: https://www.googleapis.com/compute/v1/projects/<project_id>/regions/us-central1
selfLink: https://www.googleapis.com/compute/v1/projects/<project_id>/regions/us-central1/forwardingRules/myserver-psc-endpoint
selfLinkWithId: https://www.googleapis.com/compute/v1/projects/<project_id>/regions/us-central1/forwardingRules/934193159895862912
serviceDirectoryRegistrations:
- namespace: goog-psc-default
target: https://www.googleapis.com/compute/v1/projects/<project_id>/regions/us-central1/serviceAttachments/my-psc-service
7. Menguji akses dari VM konsumen ke VM produsen
Periksa IP endpoint PSC.
echo $psc_endpoint_ip
SSH ke VM bernama myclient dan uji apakah VM tersebut dapat mengakses myserver di port 80 http.
Di dalam Cloud Shell, lakukan hal berikut:
gcloud compute ssh \
--zone=$zone "myclient" \
--tunnel-through-iap
Gunakan curl untuk mengakses endpoint PSC yang Anda buat.
curl -m 10 <psc_endpoint_ip>
Anda akan melihat perintah curl kehabisan waktu. Klien pengujian dari VPC konsumen tidak dapat mengakses server http di VPC produsen.
curl: (28) Connection timed out after 10001 milliseconds
Kembali ke Cloud Shell dengan keluar dari sesi SSH.
exit
8. Produsen menyetujui endpoint PSC
Produsen memeriksa status endpoint PSC
Sebelum produsen menambahkan endpoint PSC dalam daftar konsumen, koneksi akan terlihat di lampiran layanan dengan status Menunggu Keputusan.
gcloud compute service-attachments describe my-psc-service --region=$region
Anda akan melihat hasil yang serupa seperti di bawah ini.
connectedEndpoints:
- consumerNetwork: https://www.googleapis.com/compute/projects/<project_id>/global/networks/consumer-net
endpoint: https://www.googleapis.com/compute/projects/<project_id>/regions/us-central1/forwardingRules/myserver-psc-endpoint
endpointWithId: https://www.googleapis.com/compute/projects/<project_id>/regions/us-central1/forwardingRules/934193159895862912
pscConnectionId: '160443618817212419'
status: PENDING
connectionPreference: ACCEPT_MANUAL
creationTimestamp: '2026-02-23T13:27:33.886-08:00'
description: ''
enableProxyProtocol: false
fingerprint: -9EI8FCALrA=
id: '2578692595155826858'
kind: compute#serviceAttachment
name: my-psc-service
natSubnets:
- https://www.googleapis.com/compute/projects/<project_id>/regions/us-central1/subnetworks/psc-subnet
pscServiceAttachmentId:
high: '149466704441770984'
low: '2578692595155826858'
reconcileConnections: false
region: https://www.googleapis.com/compute/projects/<project_id>/regions/us-central1
selfLink: https://www.googleapis.com/compute/projects/<project_id>/regions/us-central1/serviceAttachments/my-psc-service
targetService: https://www.googleapis.com/compute/projects/<project_id>/regions/us-central1/forwardingRules/l7-ilb-forwarding-rule
Mendapatkan URI berbasis ID endpoint PSC
URI berbasis ID endpoint PSC adalah ID aturan penerusan yang baru saja dibuat konsumen. Dalam contoh di atas, 'endpointWithId' adalah URI endpoint PSC yang dibuat oleh konsumen. Anda akan memerlukan URI ini agar produsen dapat membuat kontrol akses berbasis endpoint.
( Perhatikan bahwa ID koneksi PSC bukanlah ID yang kami cari. )
export psc_endpoint_uri=$(gcloud compute service-attachments describe my-psc-service --region=$region --format="value(connectedEndpoints.endpointWithId)")
echo $psc_endpoint_uri
Menambahkan URI berbasis ID endpoint PSC dalam daftar penerimaan konsumen
gcloud compute service-attachments update my-psc-service \
--region=$region \
--consumer-accept-list=$psc_endpoint_uri
Produsen memeriksa status endpoint PSC
gcloud compute service-attachments describe my-psc-service --region=$region --format="value(connectedEndpoints)"
Anda akan melihat hasil yang serupa seperti di bawah ini. Statusnya telah berubah menjadi 'DITERIMA'.
{'consumerNetwork': 'https://www.googleapis.com/compute/projects/<project_id>/global/networks/consumer-net', 'endpoint': 'https://www.googleapis.com/compute/projects/<project_id>/regions/us-central1/forwardingRules/myserver-psc-endpoint', 'endpointWithId': 'https://www.googleapis.com/compute/projects/<project_id>/regions/us-central1/forwardingRules/47564871796017232', 'pscConnectionId': '54547416268144643', 'status': 'ACCEPTED'}
9. Menguji akses dari VM konsumen ke VM produsen
Periksa IP endpoint PSC.
echo $psc_endpoint_ip
SSH ke VM bernama myclient dan uji apakah VM tersebut dapat mengakses myserver di port 80 http.
Di dalam Cloud Shell, lakukan hal berikut:
gcloud compute ssh \
--zone=$zone "myclient" \
--tunnel-through-iap
Gunakan curl untuk mengakses endpoint PSC yang Anda buat.
curl <psc_endpoint_ip>
Anda akan melihat perintah curl berhasil menampilkan respons dari myserver. Klien pengujian dari VPC konsumen telah mengakses server http di VPC produsen.
I am a Http Server.
Kembali ke Cloud Shell dengan keluar dari sesi SSH.
exit
10. Pembersihan
Membersihkan VM
Di dalam Cloud Shell, lakukan hal berikut:
gcloud compute instances delete myserver --zone $zone --quiet
gcloud compute instances delete myclient --zone $zone --quiet
Membersihkan komponen konsumen PSC
gcloud compute forwarding-rules delete myserver-psc-endpoint \
--region=$region --quiet
gcloud compute addresses delete myserver-psc-endpoint-ip \
--region=$region --quiet
Membersihkan komponen produser PSC
gcloud compute service-attachments delete my-psc-service \
--region=$region --quiet
gcloud compute forwarding-rules delete l7-ilb-forwarding-rule \
--region=$region --quiet
gcloud compute target-http-proxies delete l7-ilb-proxy \
--region=$region --quiet
gcloud compute url-maps delete l7-ilb-map \
--region=$region --quiet
gcloud compute backend-services remove-backend l7-ilb-backend-service \
--instance-group=my-service-ig \
--instance-group-zone=$zone \
--region=$region --quiet
gcloud compute backend-services delete l7-ilb-backend-service \
--region=$region --quiet
gcloud compute health-checks delete l7-ilb-basic-check \
--region=$region --quiet
gcloud compute instance-groups unmanaged delete my-service-ig \
--zone=$zone --quiet
gcloud compute addresses delete l7-ilb-ip-address \
--region=$region --quiet
Membersihkan Firewall, Cloud NAT, Cloud Router, dan VPC
gcloud compute network-firewall-policies rules delete 100 \
--firewall-policy=global-fw-policy \
--global-firewall-policy --quiet
gcloud compute network-firewall-policies rules delete 200 \
--firewall-policy=global-fw-policy \
--global-firewall-policy --quiet
gcloud compute network-firewall-policies rules delete 300 \
--firewall-policy=global-fw-policy \
--global-firewall-policy --quiet
gcloud compute network-firewall-policies associations delete \
--firewall-policy=global-fw-policy \
--name=producer-fw-policy \
--global-firewall-policy --quiet
gcloud compute network-firewall-policies associations delete \
--firewall-policy=global-fw-policy \
--name=consumer-fw-policy \
--global-firewall-policy --quiet
gcloud compute network-firewall-policies delete global-fw-policy \
--global --quiet
gcloud compute routers nats delete $region-nat \
--router=$region-cr \
--region=$region --quiet
gcloud compute routers delete $region-cr \
--region=$region --quiet
gcloud compute networks subnets delete producer-subnet \
--region=$region --quiet
gcloud compute networks subnets delete proxy-only-subnet \
--region=$region --quiet
gcloud compute networks subnets delete psc-subnet \
--region=$region --quiet
gcloud compute networks delete producer-net --quiet
gcloud compute networks subnets delete consumer-subnet \
--region=$region --quiet
gcloud compute networks delete consumer-net --quiet
11. Selamat
Anda telah berhasil menguji kontrol akses berbasis endpoint produsen Private Service Connect.