Menggunakan Private Service Connect untuk memublikasikan dan menggunakan layanan

1. Pengantar

Private Service Connect memungkinkan produsen layanan menawarkan layanan secara pribadi kepada konsumen layanan. Private Service Connect menawarkan manfaat berikut:

  • Jaringan VPC produsen layanan dapat mendukung lebih dari satu konsumen layanan.
  • Setiap konsumen terhubung ke alamat IP internal yang mereka tentukan. Private Service Connect melakukan penafsiran alamat jaringan (NAT) untuk mengarahkan permintaan ke produsen layanan.

45b90d50690dd111.pngS

Gambar 2. Private Service Connect menggunakan endpoint dan lampiran layanan agar konsumen layanan dapat mengirim traffic dari jaringan VPC konsumen ke layanan di jaringan VPC produsen layanan (klik untuk memperbesar).

Yang akan Anda pelajari

  • Manfaat koneksi layanan pribadi
  • Konsep utama untuk konsumen layanan
  • Konsep utama untuk produsen layanan
  • Membuat lingkungan produser
  • Mengekspos layanan (lingkungan produsen) melalui lampiran layanan
  • Menciptakan lingkungan konsumen
  • Membuat aturan penerusan di jaringan konsumen
  • Memvalidasi akses konsumen TCP
  • Aktifkan & validasi protokol proxy
  • Aktifkan kontrol akses kebijakan

Yang Anda butuhkan

  • Pengetahuan tentang load balancer Internal
  • Kemampuan untuk membuat VPC dalam dua project

2. Manfaat koneksi layanan pribadi

Dengan PSC, Anda memiliki beberapa manfaat dibandingkan dengan Peering VPC:

Kontrol yang lebih baik atas ruang IP pribadi

  • Sebagai konsumen layanan, Anda dapat mengontrol alamat IP pribadi yang digunakan untuk terhubung ke layanan terkelola yang ingin Anda akses.
  • Sebagai konsumen layanan, Anda tidak perlu khawatir menyimpan rentang alamat IP pribadi untuk layanan backend yang digunakan di VPC Anda. Anda hanya perlu memilih alamat IP dari subnet Anda sendiri untuk terhubung ke layanan produsen.
  • Sebagai produsen layanan, Anda dapat memilih untuk men-deploy model multi-tenant, dengan VPC Anda berisi layanan yang menyalurkan beberapa VPC konsumen. Konsumen yang memiliki rentang subnet yang tumpang-tindih bukan lagi masalah.
  • Sebagai penyedia layanan, Anda dapat menskalakan layanan Anda ke instance VM sebanyak yang diperlukan, tanpa perlu menghubungi konsumen untuk mendapatkan lebih banyak alamat IP.

Keamanan dan isolasi yang ditingkatkan

  • Sebagai konsumen layanan, hanya Anda yang dapat memulai komunikasi ke produsen layanan. Konektivitas searah ini secara drastis menyederhanakan konfigurasi firewall tetapi juga mengurangi risiko dari traffic besar yang berasal dari produsen layanan.
  • Sebagai produsen layanan, Anda tidak perlu mengubah aturan firewall berdasarkan rentang subnet di VPC konsumen. Anda cukup membuat aturan firewall untuk rentang alamat IP NAT yang telah dikonfigurasi untuk layanan Anda.

Skalabilitas yang Lebih Baik

  • PSC memungkinkan desain yang sangat skalabel dengan mendukung ribuan Konsumen, serta memungkinkan Produsen Layanan menawarkan layanan multi-tenant atau tenant tunggal yang sangat skalabel.
  • Sebagai konsumen layanan yang menggunakan layanan pribadi terhubung, Anda dapat membuat resource sesuai kebutuhan di VPC Anda. Skalanya tidak terpengaruh oleh jumlah resource yang dibuat di VPC produsen.

3. Konsep utama untuk konsumen layanan

Anda dapat menggunakan endpoint Private Service Connect untuk menggunakan layanan yang berada di luar jaringan VPC Anda. Konsumen layanan membuat endpoint Private Service Connect yang terhubung ke layanan target.

Endpoint

Anda menggunakan endpoint Private Service Connect untuk terhubung ke layanan target. Endpoint memiliki alamat IP internal di jaringan VPC Anda dan didasarkan pada resource aturan penerusan.

Anda mengirim traffic ke endpoint, yang akan meneruskannya ke target di luar jaringan VPC Anda.

Target

Endpoint Private Service Connect memiliki target, yang merupakan layanan yang ingin Anda hubungkan:

  • Paket API:
  • Semua API: sebagian besar Google API
  • VPC-SC: API yang didukung oleh Kontrol Layanan VPC
  • Layanan yang dipublikasikan di jaringan VPC lain. Layanan ini dapat dikelola oleh organisasi Anda sendiri atau pihak ketiga.

Layanan yang dipublikasikan

Untuk menghubungkan endpoint ke layanan produsen layanan, Anda memerlukan lampiran layanan untuk layanan tersebut. URI lampiran layanan memiliki format ini: projects/SERVICE_PROJECT/regions/REGION/serviceLampirans/SERVICE_NAME

4. Konsep utama untuk produsen layanan

Agar layanan tersedia bagi konsumen, Anda harus membuat satu atau beberapa subnet khusus untuk digunakan dalam penafsiran alamat jaringan (NAT) alamat IP konsumen. Kemudian, Anda membuat lampiran layanan yang mengacu ke subnet tersebut.

Subnet Private Service Connect

Untuk mengekspos layanan, produsen layanan terlebih dahulu membuat satu atau beberapa subnet dengan Private Service Connect tujuan.

Saat permintaan dikirim dari jaringan VPC konsumen, alamat IP sumber konsumen akan diterjemahkan menggunakan NAT sumber (SNAT) sumber ke alamat IP yang dipilih dari salah satu subnet Private Service Connect.

Jika Anda ingin menyimpan informasi alamat IP koneksi konsumen, lihat Melihat informasi koneksi konsumen.

Subnet ini tidak dapat digunakan untuk resource seperti instance VM atau aturan penerusan. Subnet digunakan hanya untuk menyediakan alamat IP untuk SNAT koneksi konsumen yang masuk.

Subnet Private Service Connect harus berisi minimal satu alamat IP untuk setiap 63 VM konsumen sehingga setiap VM konsumen dialokasikan 1.024 tuple sumber untuk penafsiran alamat jaringan.

Ukuran minimum untuk subnet Private Service Connect adalah /24.

Lampiran layanan

Produsen layanan mengekspos layanan mereka melalui lampiran layanan.

  • Untuk mengekspos layanan, produsen layanan membuat lampiran layanan yang merujuk ke aturan penerusan load balancer layanan tersebut.
  • Untuk mengakses layanan, konsumen layanan membuat endpoint yang mengacu pada lampiran layanan.

Preferensi koneksi

Saat membuat layanan, Anda dapat memilih cara menyediakannya. Ada 2 opsi:

  • Terima koneksi untuk semua project secara otomatis - setiap konsumen layanan dapat mengonfigurasi endpoint dan terhubung ke layanan secara otomatis.
  • Menerima koneksi untuk project yang dipilih - konsumen layanan mengonfigurasi endpoint untuk terhubung ke layanan dan produsen layanan menerima atau menolak permintaan koneksi.

5. Lingkungan Pengujian

Jaringan konsumen terdiri atas alamat IP statis TCP yang digunakan untuk memulai permintaan ke produsen layanan, selain lampiran layanan target yang dipetakan ke lampiran layanan produsen (layanan yang dipublikasikan).

Sekarang, mari kita lihat jaringan produsen. Perhatikan bagaimana jaringan produsen tidak memiliki pemetaan ke jaringan konsumen, melainkan, jaringan produsen berisi lampiran layanan (layanan yang dipublikasikan) yang digunakan oleh konsumen untuk layanan. Lampiran layanan produsen di lab kami adalah Load Balancer Internal Lapisan 4 (aturan penerusan produsen) yang dipetakan ke layanan backend yang mendukung aplikasi TCP.

Subnet NAT dan aturan firewall terkait memungkinkan komunikasi ke aplikasi produsen.

28b09284a99eb60b.pngS

Penyiapan lingkungan mandiri

  1. Login ke Cloud Console lalu buat project baru atau gunakan kembali project yang sudah ada. Jika belum memiliki akun Gmail atau Google Workspace, Anda harus membuatnya.

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

Ingat project ID, nama unik di semua project Google Cloud (maaf, nama di atas telah digunakan dan tidak akan berfungsi untuk Anda!) Project ID tersebut selanjutnya akan dirujuk di codelab ini sebagai PROJECT_ID.

  1. Selanjutnya, Anda harus mengaktifkan penagihan di Cloud Console untuk menggunakan resource Google Cloud.

Menjalankan operasi dalam codelab ini seharusnya tidak memerlukan banyak biaya, bahkan mungkin tidak sama sekali. Pastikan untuk mengikuti petunjuk yang ada di bagian "Membersihkan" yang memberi tahu Anda cara menonaktifkan resource sehingga tidak menimbulkan penagihan di luar tutorial ini. Pengguna baru Google Cloud memenuhi syarat untuk mengikuti program Uji Coba Gratis senilai$300 USD.

Mulai Cloud Shell

Meskipun Google Cloud dapat dioperasikan dari jarak jauh menggunakan laptop Anda, dalam codelab ini, Anda akan menggunakan Google Cloud Shell, lingkungan command line yang berjalan di Cloud.

Dari GCP Console, klik ikon Cloud Shell di toolbar kanan atas:

bce75f34b2c53987.png

Hanya perlu waktu beberapa saat untuk penyediaan dan terhubung ke lingkungan. Jika sudah selesai, Anda akan melihat tampilan seperti ini:

f6ef2b5f13479f3a.png

Mesin virtual ini berisi semua alat pengembangan yang Anda perlukan. Layanan ini menawarkan direktori beranda tetap sebesar 5 GB dan beroperasi di Google Cloud, sehingga sangat meningkatkan performa dan autentikasi jaringan. Semua pekerjaan Anda di lab ini dapat dilakukan hanya dengan browser.

6. Sebelum memulai

Codelab memerlukan dua project, meskipun bukan persyaratan untuk PSC. Perhatikan referensi untuk mendukung satu atau beberapa project.

Project Tunggal - Memperbarui project untuk mendukung jaringan produsen dan konsumen

Di dalam Cloud Shell, pastikan project ID Anda sudah disiapkan

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
prodproject=YOUR-PROJECT-NAME
consumerproject=YOUR-PROJECT-NAME
echo $prodproject
echo $consumerproject

Beberapa project - Memperbarui project untuk mendukung jaringan produser

Di dalam Cloud Shell, pastikan project ID Anda sudah disiapkan

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
prodproject=YOUR-PROJECT-NAME
echo $prodproject

7. Membuat jaringan VPC Produser

Catatan: Di bagian berikut, jalankan pembaruan konfigurasi dalam project yang berisi Producer Service Anda

Jaringan VPC

Dari Cloud Shell

gcloud compute networks create vpc-demo-producer --project=$prodproject --subnet-mode=custom

Buat Subnet

Dari Cloud Shell

gcloud compute networks subnets create vpc-demo-us-west2 --project=$prodproject --range=10.0.2.0/24 --network=vpc-demo-producer --region=us-west2

Membuat instance Cloud NAT

Cloud NAT tidak sama dengan NAT yang digunakan untuk PSC. Cloud NAT digunakan secara eksplisit untuk akses internet guna mendownload paket aplikasi.

Membuat Cloud Router

Dari Cloud Shell

gcloud compute routers create crnatprod --network vpc-demo-producer --region us-west2

Membuat Cloud NAT

Dari Cloud Shell

gcloud compute routers nats create cloudnatprod --router=crnatprod --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --enable-logging --region us-west2

8. Membuat instance komputasi

Dari Cloud Shell, buat instance www-01

gcloud compute instances create www-01 \
    --zone=us-west2-a \
    --image-family=debian-9 \
    --image-project=debian-cloud \
    --subnet=vpc-demo-us-west2 --no-address \
    --metadata=startup-script='#! /bin/bash
apt-get update
apt-get install tcpdump -y
apt-get install apache2 -y
a2ensite default-ssl
apt-get install iperf3 -y
a2enmod ssl
vm_hostname="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/name)"
filter="{print \$NF}"
vm_zone="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/zone \
| awk -F/ "${filter}")"
echo "Page on $vm_hostname in $vm_zone" | \
tee /var/www/html/index.html
systemctl restart apache2
iperf3 -s -p 5050'

Dari Cloud Shell, buat instance www-02

gcloud compute instances create www-02 \
    --zone=us-west2-a \
    --image-family=debian-9 \
    --image-project=debian-cloud \
    --subnet=vpc-demo-us-west2 --no-address \
    --metadata=startup-script='#! /bin/bash
apt-get update
apt-get install tcpdump -y
apt-get install apache2 -y
a2ensite default-ssl
apt-get install iperf3 -y
a2enmod ssl
vm_hostname="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/name)"
filter="{print \$NF}"
vm_zone="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/zone \
| awk -F/ "${filter}")"
echo "Page on $vm_hostname in $vm_zone" | \
tee /var/www/html/index.html
systemctl restart apache2
iperf3 -s -p 5050'

9. Membuat grup instance yang tidak dikelola

Membuat grup instance tidak terkelola yang terdiri dari www-01 & www-02

Dari Cloud Shell

gcloud compute instance-groups unmanaged create vpc-demo-ig-www --zone=us-west2-a

gcloud compute instance-groups unmanaged add-instances vpc-demo-ig-www --zone=us-west2-a --instances=www-01,www-02

gcloud compute health-checks create http hc-http-80 --port=80

10. Membuat layanan backend TCP, aturan penerusan & {i>Firewall<i}

Dari Cloud Shell, buat layanan backend

gcloud compute backend-services create vpc-demo-www-be-tcp --load-balancing-scheme=internal --protocol=tcp --region=us-west2 --health-checks=hc-http-80

gcloud compute backend-services add-backend vpc-demo-www-be-tcp --region=us-west2 --instance-group=vpc-demo-ig-www --instance-group-zone=us-west2-a

Dari Cloud Shell, buat aturan penerusan

gcloud compute forwarding-rules create vpc-demo-www-ilb-tcp --region=us-west2 --load-balancing-scheme=internal --network=vpc-demo-producer --subnet=vpc-demo-us-west2 --address=10.0.2.10 --ip-protocol=TCP --ports=all --backend-service=vpc-demo-www-be-tcp --backend-service-region=us-west2

Dari Cloud Shell, buat aturan firewall untuk mengaktifkan health check backend

gcloud compute firewall-rules create vpc-demo-health-checks --allow tcp:80,tcp:443 --network vpc-demo-producer --source-ranges 130.211.0.0/22,35.191.0.0/16 --enable-logging

Agar IAP dapat terhubung ke instance VM Anda, buat aturan firewall yang:

  • Berlaku untuk semua instance VM yang Anda inginkan agar dapat diakses dengan 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.

Dari Cloud Shell

gcloud compute firewall-rules create psclab-iap-prod --network vpc-demo-producer --allow tcp:22 --source-ranges=35.235.240.0/20 --enable-logging

11. Membuat subnet TCP NAT

Dari Cloud Shell

gcloud compute networks subnets create vpc-demo-us-west2-psc-tcp --network=vpc-demo-producer --region=us-west2 --range=192.168.0.0/24 --purpose=private-service-connect

12. Membuat lampiran layanan TCP dan aturan firewall

Dari Cloud Shell, buat lampiran layanan TCP

gcloud compute service-attachments create vpc-demo-psc-west2-tcp --region=us-west2 --producer-forwarding-rule=vpc-demo-www-ilb-tcp --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=vpc-demo-us-west2-psc-tcp

Validasi lampiran layanan TCP

gcloud compute service-attachments describe vpc-demo-psc-west2-tcp --region us-west2

Dari Cloud Shell, buat aturan firewall yang mengizinkan akses subnet TCP NAT ke backend ILB

gcloud compute --project=$prodproject firewall-rules create vpc-demo-allowpsc-tcp --direction=INGRESS --priority=1000 --network=vpc-demo-producer --action=ALLOW --rules=all --source-ranges=192.168.0.0/24 --enable-logging

13. Membuat jaringan VPC Konsumen

Catatan: Di bagian berikut, jalankan pembaruan konfigurasi di project yang berisi Layanan Konsumen Anda

Di bagian berikut, VPC konsumen dikonfigurasi dalam project terpisah. Komunikasi antara jaringan konsumen dan produsen dilakukan melalui lampiran layanan yang didefinisikan dalam jaringan konsumen.

Jaringan VPC

Codelab memerlukan dua project, meskipun bukan persyaratan untuk PSC. Perhatikan referensi untuk mendukung satu atau beberapa project.

Project Tunggal - Memperbarui project untuk mendukung jaringan produsen dan konsumen

Di dalam Cloud Shell, pastikan project ID Anda sudah disiapkan

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
consumerproject=YOUR-PROJECT-NAME
prodproject=YOUR-PROJECT-NAME
echo $prodproject
echo $consumerproject

Beberapa project - Memperbarui project untuk mendukung jaringan konsumen

Di dalam Cloud Shell, pastikan project ID Anda sudah disiapkan

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
consumerproject=YOUR-PROJECT-NAME
echo $consumerproject

Dari Cloud Shell

gcloud compute networks create vpc-demo-consumer --project=$consumerproject --subnet-mode=custom

Buat Subnet untuk PSC

Dari Cloud Shell

gcloud compute networks subnets create consumer-subnet --project=$consumerproject  --range=10.0.60.0/24 --network=vpc-demo-consumer --region=us-west2

Membuat alamat IP statis untuk aplikasi TCP

Dari Cloud Shell

gcloud compute addresses create vpc-consumer-psc-tcp --region=us-west2 --subnet=consumer-subnet --addresses 10.0.60.100

Buat Aturan Firewall

Agar IAP dapat terhubung ke instance VM Anda, buat aturan firewall yang:

  • Berlaku untuk semua instance VM yang Anda inginkan agar dapat diakses dengan 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.

Dari Cloud Shell

gcloud compute firewall-rules create psclab-iap-consumer --network vpc-demo-consumer --allow tcp:22 --source-ranges=35.235.240.0/20 --enable-logging

Meskipun tidak diperlukan bagi PSC, buat aturan firewall keluar untuk memantau traffic PSC konsumen ke lampiran layanan produsen

gcloud compute --project=$consumerproject firewall-rules create vpc-consumer-psc --direction=EGRESS --priority=1000 --network=vpc-demo-consumer --action=ALLOW --rules=all --destination-ranges=10.0.60.0/24 --enable-logging

Membuat instance Cloud NAT

Cloud NAT tidak sama dengan NAT yang digunakan untuk PSC. Cloud NAT digunakan secara eksplisit untuk akses internet guna mendownload paket aplikasi

Membuat Cloud Router

Dari Cloud Shell

gcloud compute routers create crnatconsumer --network vpc-demo-consumer --region us-west2

Membuat Cloud NAT

Dari Cloud Shell

gcloud compute routers nats create cloudnatconsumer --router=crnatconsumer --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --enable-logging --region us-west2

14. Membuat VM instance pengujian

Dari Cloud Shell

gcloud compute instances create test-instance-1 \
    --zone=us-west2-a \
    --image-family=debian-9 \
    --image-project=debian-cloud \
    --subnet=consumer-subnet --no-address \
    --metadata=startup-script='#! /bin/bash
apt-get update
apt-get install iperf3 -y
apt-get install tcpdump -y'

15. Membuat lampiran layanan TCP

Dari Cloud Shell

gcloud compute forwarding-rules create vpc-consumer-psc-fr-tcp --region=us-west2 --network=vpc-demo-consumer --address=vpc-consumer-psc-tcp --target-service-attachment=projects/$prodproject/regions/us-west2/serviceAttachments/vpc-demo-psc-west2-tcp

16. Validasi

Kita akan menggunakan CURL, TCPDUMP & log {i>firewall<i} untuk memvalidasi komunikasi konsumen dan produsen.

Dalam project Konsumen, alamat IP statis digunakan untuk memulai komunikasi ke Produsen. Pemetaan alamat IP statis ke Aturan Penerusan konsumen ini divalidasi dengan melakukan sintaks berikut.

Catatan: Di bagian berikut, jalankan pembaruan konfigurasi di project yang berisi Layanan Konsumen Anda

Dari Cloud Shell VPC Konsumen, identifikasi aturan penerusan TCP dan IP statis

gcloud compute forwarding-rules describe vpc-consumer-psc-fr-tcp --region us-west2

Output:

IPAddress: 10.0.60.100
IPProtocol: TCP
creationTimestamp: '2021-07-14T13:34:23.359-07:00'
id: '2768158450402915488'
kind: compute#forwardingRule
labelFingerprint: 42WmSpB8rSM=
name: vpc-consumer-psc-fr-tcp
<snip>

17. Validasi TCP

Catatan: Di bagian berikut, jalankan pembaruan konfigurasi dalam project yang berisi Producer Service Anda

Dari Project Producer,identifikasi "www-01" &amp; "www-02" dan meluncurkan satu sesi SSH per instance.

6d0bb8c5cb115876.pngS

Dari "www-01" melakukan TCPDUMP untuk memantau NAT

sudo tcpdump -i any net 192.168.0.0/16 -n

Dari "www-02" melakukan TCPDUMP untuk memantau NAT

sudo tcpdump -i any net 192.168.0.0/16 -n

Catatan: Di bagian berikut, jalankan pembaruan konfigurasi di project yang berisi Layanan Konsumen Anda

Dari Consumer Project,identifikasi "test-instance-1" dan meluncurkan dua sesi.

Dari "test-instance-1" sesi satu melakukan TCPDUMP untuk memantau

sudo tcpdump -i any host 10.0.60.100 -n

Dari "test-instance-1" sesi dua melakukan validasi TCP

curl -v 10.0.60.100 

18. Pengamatan - Konsumen

Dari "test-instance-1" sesi dua CURL berhasil dan menghasilkan 200 OK.

@test-instance-1:~$ curl -v 10.0.60.100 
* Rebuilt URL to: 10.0.60.100/
*   Trying 10.0.60.100...
* TCP_NODELAY set
* Connected to 10.0.60.100 (10.0.60.100) port 80 (#0)
> GET / HTTP/1.1
> Host: 10.0.60.100
> User-Agent: curl/7.52.1
> Accept: */*
> 
< HTTP/1.1 200 OK
< Date: Wed, 14 Jul 2021 21:20:22 GMT
< Server: Apache/2.4.25 (Debian)
< Last-Modified: Wed, 14 Jul 2021 20:09:09 GMT
< ETag: "1d-5c71aed5edabd"
< Accept-Ranges: bytes
< Content-Length: 29
< Content-Type: text/html
< 
Page on www-01 in us-west2-a
* Curl_http_done: called premature == 0
* Connection #0 to host 10.0.60.100 left intact

Dari "test-instance-1" sesi satu TCPDUMP mengidentifikasi Instance VM → komunikasi dan respons IP Statis TCP

21:20:22.572052 IP 10.0.60.2.59432 > 10.0.60.100.80: Flags [P.], seq 1:76, ack 1, win 222, options [nop,nop,TS val 634554 ecr 998739], length 75: HTTP: GET / HTTP/1.1

21:20:22.572688 IP 10.0.60.100.80 > 10.0.60.2.59432: Flags [P.], seq 1:257, ack 76, win 220, options [nop,nop,TS val 998739 ecr 634554], length 256: HTTP: HTTP/1.1 200 OK

Logging firewall

Menggunakan Logs Explorer memvalidasi aturan firewall "vpc-consumner-psc" adalah merekam alur antara instance VM dan IP statis

  1. Dari Cloud Console, Identify Operations Logging → Log Explorer
  2. Pada kolom Query, perbarui entri di bawah dengan yourconsumerproject, lalu pilih "Run Query"

logName:(projects/yourconsumerproject/logs/compute.googleapis.com%2Ffirewall) DAN jsonPayload.rule_details.reference:("network:vpc-demo-consumer/firewall:vpc-consumer-psc")

  1. Hasil kueri memberikan hal berikut per screenshot yang diberikan

b573c878a8d6d01f.png

  1. Luaskan log dan identifikasi output yang disediakan di bawah. Perhatikan dest_ip: 10.0.60.100 adalah STATIC TCP IP dan src_ip: 10.0.60.2 adalah alamat IP instance VM

1b4f46b3e61f6f12.pngS

19. Observasi - Produsen

Dari backend instance "www-01" atau "www-02" telah diamati komunikasi antara subnet TCP NAT dan TCP ILB.

21:20:22.572186 IP 192.168.0.2.1024 > 10.0.2.10.80: Flags [P.], seq 1:76, ack 1, win 222, options [nop,nop,TS val 634554 ecr 998739], length 75: HTTP: GET / HTTP/1.1

21:20:22.572679 IP 10.0.2.10.80 > 192.168.0.2.1024: Flags [P.], seq 1:257, ack 76, win 220, options [nop,nop,TS val 998739 ecr 634554], length 256: HTTP: HTTP/1.1 200 OK

20. Logging firewall

Menggunakan Logs Explorer, validasi aturan firewall "vpc-demo-allowpsc-tcp" adalah menangkap TCP NAT & alur TCP ILB dengan melakukan langkah-langkah berikut:

  1. Dari Cloud Console, Identify Operations Logging → Log Explorer
  2. Pada kolom Query, perbarui entri di bawah ini dengan yourprodproject, lalu pilih "Run Query"

logName:(projects/yourprodproject/logs/compute.googleapis.com%2Ffirewall) DAN jsonPayload.rule_details.reference:("network:vpc-demo-prod/firewall:vpc-demo-allowpsc-tcp")

  1. Hasil kueri memberikan hal berikut per screenshot yang diberikan

8ce6b0d17d76ad6d.pngS

  1. Luaskan log dan identifikasi output yang disediakan di bawah. Catat TCP ILB dest_ip: 10.0.2.10 dan NAT TCP source_range (192.168.0.0/24) & IP: 192.168.0.2.

e157a7af8cb667e.png

21. Aktifkan Protokol Proxy

Secara default, Private Service Connect menerjemahkan alamat IP sumber konsumen ke alamat di salah satu subnet Private Service Connect pada jaringan VPC produsen layanan. Jika ingin melihat alamat IP sumber asli konsumen, Anda dapat mengaktifkan protokol PROXY. Jika protokol PROXY diaktifkan, Anda bisa mendapatkan alamat IP sumber dan ID koneksi PSC konsumen dari header protokol PROXY

e9d1c49971b10ed0.png

Referensi ke dokumentasi

Hapus Layanan yang Dipublikasikan Produsen

Catatan: Di bagian berikut, jalankan pembaruan konfigurasi dalam project yang berisi Producer Service Anda

Dari Cloud Shell, hapus lampiran layanan TCP

gcloud compute service-attachments delete vpc-demo-psc-west2-tcp --region=us-west2 --quiet

Dari cloud shell validasi layanan, lampiran layanan dihapus (tercantum 0 item)

gcloud compute service-attachments list

Buat lampiran layanan TCP dengan protokol proxy diaktifkan

gcloud compute service-attachments create vpc-demo-psc-west2-tcp --region=us-west2 \
--producer-forwarding-rule=vpc-demo-www-ilb-tcp \
--connection-preference=ACCEPT_AUTOMATIC \
--nat-subnets=vpc-demo-us-west2-psc-tcp \
--enable-proxy-protocol

Dari cloud shell validasi layanan, lampiran layanan dibuat dengan protokol proxy diaktifkan (benar)

gcloud compute service-attachments describe vpc-demo-psc-west2-tcp --region=us-west2 | grep -i enableProxyProtocol:

Catatan: Di bagian berikut, jalankan pembaruan konfigurasi di project yang berisi Layanan Konsumen Anda

Dari cloud shell, hapus aturan penerusan TCP

gcloud compute forwarding-rules delete vpc-consumer-psc-fr-tcp --region=us-west2 --quiet

Membuat ulang aturan penerusan TCP untuk dikaitkan dengan lampiran layanan (produsen) yang dibuat sebelumnya

Dari Cloud Shell, buat aturan penerusan TCP

gcloud compute forwarding-rules create vpc-consumer-psc-fr-tcp \
--region=us-west2 --network=vpc-demo-consumer \
--address=vpc-consumer-psc-tcp \
--target-service-attachment=projects/$prodproject/regions/us-west2/serviceAttachments/vpc-demo-psc-west2-tcp

Validasi Protokol Proxy

Catatan: Di bagian berikut, jalankan pembaruan konfigurasi dalam project yang berisi Producer Service Anda

Dari Project Producer,identifikasi "www-01" &amp; "www-02" dan meluncurkan satu sesi per instance.

6d0bb8c5cb115876.pngS

Dari "www-01" melakukan TCPDUMP untuk memantau NAT

sudo tcpdump -nnvvXSs 1514 net 192.168.0.0/16

Dari "www-02" melakukan TCPDUMP untuk memantau NAT

sudo tcpdump -nnvvXSs 1514 net 192.168.0.0/16

Catatan: Di bagian berikut, jalankan pembaruan konfigurasi di project yang berisi Layanan Konsumen Anda

Dari Consumer Project,identifikasi "test-instance-1" dan meluncurkan satu sesi

Dari "test-instance-1" sesi melakukan curl

curl 10.0.60.100 

Pengamatan - Konsumen

Perhatikan bahwa jika PROXY Protocol v2 diaktifkan tetapi aplikasi tidak dikonfigurasi untuk mendukungnya, pesan error akan ditampilkan jika terhubung dari klien sesuai dengan contoh di bawah ini. Pembaruan Apache diperlukan untuk mengakomodasi header proxy v2 tambahan & tidak dibahas dalam codelab.

Dari "test-instance-1" CURL sesi akan menghasilkan 400 Permintaan tidak valid yang diharapkan, meskipun kueri backend berhasil.

@test-instance-1:~$ curl 10.0.60.100 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
<hr>
<address>Apache/2.4.25 (Debian) Server at www-02.c.deepakmichaelprod.internal Port 80</address>

Pengamatan - Konsumen

Dari backend instance "www-01" atau "www-02" komunikasi antara subnet TCP NAT dan TCP ILB berikut diamati dengan protokol proxy yang disematkan dalam penangkapan.

Pada umumnya, paket ke-3 dalam {i>tcpdump<i} berisi elemen informasi protokol {i>proxy<i} yang relevan (IE). Secara opsional, identifikasi paket dengan 39 byte yang berisi protokol proxy IE.

192.168.0.3.1025 > 10.0.2.10.80: Flags [P.], cksum 0xb617 (correct), seq 2729454396:2729454435, ack 1311105819, win 28160, length 39: HTTP
        0x0000:  4500 004f 0000 4000 4006 6df4 c0a8 0003  E..O..@.@.m.....
        0x0010:  0a00 020a 0401 0050 a2b0 2b3c 4e25 e31b  .......P..+<N%..
        0x0020:  5018 6e00 b617 0000 0d0a 0d0a 000d 0a51  P.n............Q
        0x0030:  5549 540a 2111 0017 0a00 3c02 0a00 3c64  UIT.!.....<...<d
        0x0040:  8138 0050 e000 0800 9b34 d70a 003c 64    .8.P.....4...<d

Identifikasi Tanda Tangan Protokol PROXY: 0d0a0d0a000d0a515549540a dalam penangkapan paket

Dengan mengidentifikasi Tanda Tangan Protokol PROXY, Anda dapat menguraikannya dan mendekode bidang seperti di bawah ini:

Tanda Tangan Protokol PROXY: 0d0a0d0a000d0a515549540a

Bidang Protokol PROXY Lainnya: 21 11 00 17

IP dan Port: 0a003c02 0a003c64 8138 0050

Jenis TLV: e0

Panjang TLV: 00 08

ID Koneksi psc: 009b34d70a003c64

Hex

Desimal / IP

Tanda Tangan Protokol PROXY

0d0a0d0a000d0a515549540a

Versi, Protokol, Panjang

21 11 0017

IP Src

0a003c02

10.0.60.2

IP Dst

0a003c64

10.0.60.100

Port Src

8138

33080

Port Dst

0050

80

Jenis TLV (PP2_TYPE_GCP)

e0

Panjang TLV

0008

pscConnectionId

00004dde290a003c64

43686719580552292

pscConnectionId juga dapat divalidasi dengan menjelaskan aturan penerusan konsumen seperti di bawah ini, dan memastikannya cocok:

Catatan: Di bagian berikut, jalankan pembaruan konfigurasi di project yang berisi Layanan Konsumen Anda

Dari Cloud Shell, menjelaskan aturan penerusan TCP

gcloud compute forwarding-rules describe vpc-consumer-psc-fr-tcp --region=us-west2

Output yang menjelaskan pscConnectionID

$ gcloud compute forwarding-rules describe vpc-consumer-psc-fr-tcp --region=us-west2
IPAddress: 10.0.60.100
IPProtocol: TCP
creationTimestamp: '2021-07-14T16:50:31.766-07:00'
id: '4443494505307621032'
kind: compute#forwardingRule
labelFingerprint: 42WmSpB8rSM=
name: vpc-consumer-psc-fr-tcp
network: https://www.googleapis.com/compute/v1/projects/deepakmichaeldev/global/networks/vpc-demo-consumer
networkTier: PREMIUM
pscConnectionId: '43686719580552292'
pscConnectionStatus: ACCEPTED

22. Kebijakan Koneksi

Anda dapat beralih antara penerimaan project secara otomatis dan eksplisit untuk layanan yang dipublikasikan.

Mengubah dari penerimaan otomatis menjadi persetujuan eksplisit tidak memengaruhi endpoint konsumen yang telah terhubung ke layanan sebelum perubahan ini. Endpoint konsumen yang ada dapat terhubung ke layanan yang dipublikasikan hingga lampiran layanan dihapus. Endpoint konsumen baru harus disetujui sebelum dapat terhubung ke layanan. Lihat Mengelola permintaan akses ke layanan yang dipublikasikan untuk informasi selengkapnya.

Di bagian lab ini, Anda akan mengubah kebijakan koneksi produsen untuk menyetujui lampiran layanan konsumen secara eksplisit.

Catatan: Di bagian berikut, jalankan pembaruan konfigurasi dalam project yang berisi Producer Service Anda

Dari Cloud Shell layanan produsen, perbarui kebijakan connection-preferensi dari setuju secara otomatis menjadi setuju secara manual

gcloud compute service-attachments update vpc-demo-psc-west2-tcp --region=us-west2 --connection-preference ACCEPT_MANUAL

Identifikasi status endpoint dengan membuka Layanan Jaringan → Private Service Connect → Layanan Dipublikasikan → vpc-demo-psc-west2-tcp → Project yang Terhubung

e1d90d1563e10731.png

Perhatikan, project Konsumen diubah menjadi "Tertunda" di project yang terhubung.

Setujui project konsumen dengan menjalankan perintah berikut di Cloud Shell, pastikan untuk mengupdatenya dengan nama project yang sesuai

gcloud compute service-attachments update vpc-demo-psc-west2-tcp --region=us-west2 --consumer-accept-list $consumerproject=20

Identifikasi status endpoint dengan membuka Layanan Jaringan → Private Service Connect → Layanan Dipublikasikan → vpc-demo-psc-west2-tcp → Project yang Terhubung

35cba9ac640594a2.pngS

Perhatikan, project Konsumen diubah menjadi "Diterima" di project yang terhubung.

23. Langkah-langkah pembersihan

Langkah-langkah pembersihan jaringan produsen

Catatan: Di bagian berikut, jalankan pembaruan konfigurasi dalam project yang berisi Producer Service Anda

Dari satu Cloud Shell di terminal project Producer, hapus komponen lab

gcloud compute routers nats delete cloudnatprod --router=crnatprod --region=us-west2 --quiet

gcloud compute routers delete crnatprod --region=us-west2 --quiet

gcloud compute instances delete www-01 --zone=us-west2-a --quiet

gcloud compute instances delete www-02 --zone=us-west2-a --quiet

gcloud compute service-attachments delete vpc-demo-psc-west2-tcp --region=us-west2 --quiet

gcloud compute forwarding-rules delete vpc-demo-www-ilb-tcp --region=us-west2 --quiet

gcloud compute backend-services delete vpc-demo-www-be-tcp --region=us-west2 --quiet

gcloud compute instance-groups unmanaged delete vpc-demo-ig-www --zone=us-west2-a --quiet

gcloud compute health-checks delete hc-http-80 --quiet

gcloud compute firewall-rules delete vpc-demo-allowpsc-tcp --quiet

gcloud compute firewall-rules delete vpc-demo-health-checks --quiet

gcloud compute firewall-rules delete psclab-iap-prod --quiet

gcloud compute networks subnets delete vpc-demo-us-west2 --region=us-west2 --quiet

gcloud compute networks subnets delete vpc-demo-us-west2-psc-tcp --region=us-west2 --quiet

gcloud compute networks delete vpc-demo-producer --quiet

Catatan: Di bagian berikut, jalankan pembaruan konfigurasi di project yang berisi Layanan Konsumen Anda

Langkah-langkah pembersihan jaringan konsumen

Dari satu Cloud Shell di terminal project Producer, hapus komponen lab

gcloud compute routers nats delete cloudnatconsumer --router=crnatconsumer --region=us-west2 --quiet

gcloud compute routers delete crnatconsumer --region=us-west2 --quiet

gcloud compute instances delete test-instance-1 --zone=us-west2-a --quiet

gcloud compute forwarding-rules delete vpc-consumer-psc-fr-tcp --region=us-west2 --quiet

gcloud compute addresses delete vpc-consumer-psc-tcp --region=us-west2 --quiet

gcloud compute firewall-rules delete psclab-iap-consumer --quiet

gcloud compute networks subnets delete consumer-subnet --region=us-west2 --quiet

gcloud compute firewall-rules delete vpc-consumer-psc --quiet

gcloud compute networks delete vpc-demo-consumer --quiet

24. Selamat!

Selamat, Anda telah menyelesaikan codelab.

Yang telah kita bahas

  • Manfaat koneksi layanan pribadi
  • Konsep utama untuk konsumen layanan
  • Konsep utama untuk produsen layanan
  • Membuat lingkungan produser
  • Mengekspos layanan (lingkungan produsen) melalui lampiran layanan
  • Menciptakan lingkungan konsumen
  • Membuat aturan penerusan di jaringan konsumen
  • Memvalidasi akses konsumen TCP
  • Aktifkan & validasi protokol proxy
  • Aktifkan kontrol akses kebijakan