Codelab Cloud Secure Web Proxy (SWP)

1. Pengantar

Proxy Web Aman untuk Cloud

Cloud SWP adalah layanan cloud-first yang menyediakan proxy web aman untuk membantu Anda mengamankan traffic web keluar (HTTP/S). Anda mengonfigurasi klien untuk secara eksplisit menggunakan Cloud SWP sebagai proxy. Permintaan web dapat berasal dari sumber berikut:

  • Instance virtual machine (VM)
  • Container
  • Lingkungan serverless yang menggunakan konektor serverless
  • Workload di seluruh Peering VPC
  • Beban kerja di luar Google Cloud yang terhubung melalui Cloud VPN atau Cloud Interconnect

Cloud SWP memungkinkan kebijakan yang fleksibel dan terperinci berdasarkan identitas cloud-first dan aplikasi web.

Manfaat

Berikut beberapa contoh manfaat yang dapat diberikan Cloud SWP kepada organisasi:

Migrasi ke Google Cloud

Cloud SWP membantu Anda bermigrasi ke Google Cloud dengan tetap mempertahankan kebijakan keamanan dan persyaratan yang ada untuk traffic web keluar. Anda dapat menghindari penggunaan solusi pihak ketiga yang memerlukan konsol pengelolaan lain atau mengedit file konfigurasi secara manual.

Akses ke layanan web eksternal tepercaya

Dengan Cloud SWP, Anda dapat menerapkan kebijakan akses terperinci ke traffic web keluar sehingga Anda dapat mengamankan jaringan. Anda membuat dan mengidentifikasi workload atau identitas aplikasi, lalu menerapkan kebijakan.

Akses terpantau ke layanan web yang tidak tepercaya

Anda dapat menggunakan Cloud SWP untuk memberikan akses yang dipantau ke layanan web yang tidak tepercaya. Cloud SWP mengidentifikasi traffic yang tidak sesuai dengan kebijakan dan mencatatnya ke Cloud Logging (Logging). Kemudian, Anda dapat memantau penggunaan internet, menemukan ancaman terhadap jaringan, dan merespons ancaman.

Kontrol kebijakan terperinci untuk Google API

Anda dapat menggunakan Cloud SWP untuk menyediakan kebijakan terperinci bagi Google API. Misalnya, Anda dapat menetapkan kebijakan tingkat bucket/objek dengan memanfaatkan Common Expression Language (CEL).

Fitur yang Didukung

Cloud SWP mendukung fitur berikut:

Layanan proxy eksplisit

Klien harus dikonfigurasi secara eksplisit untuk menggunakan server proxy. Proxy Cloud SWP mengisolasi klien dari internet dengan membuat koneksi TCP baru atas nama klien.

Proxy Cloud SWP Envoy Penskalaan Otomatis

Mendukung penyesuaian otomatis ukuran kumpulan proxy Envoy dan kapasitas kumpulan di suatu wilayah, sehingga memungkinkan performa yang konsisten selama periode permintaan tinggi dengan biaya terendah.

Kebijakan akses keluar modular

Cloud SWP secara khusus mendukung kebijakan traffic keluar berikut:

  • Identitas sumber berdasarkan tag aman, akun layanan, atau alamat IP.
  • Tujuan berdasarkan URL, nama host.
  • Permintaan berdasarkan metode, header, atau URL. URL dapat ditentukan menggunakan daftar, karakter pengganti, atau pola.
  • Enkripsi end-to-end: Tunnel proxy klien mungkin transit melalui TLS. Cloud SWP juga mendukung HTTP/S CONNECT untuk koneksi TLS end-to-end yang dimulai oleh klien ke server tujuan.

Integrasi Cloud NAT yang Disederhanakan

Cloud NAT secara otomatis menyediakan alamat IP publik tambahan saat kumpulan proxy yang melayani traffic Cloud SWP meningkat.

Alamat IP publik statis manual juga merupakan opsi bagi pengguna yang ingin memiliki IP keluar yang diketahui.

Cloud Audit Logs dan integrasi Google Cloud Operations Suite

Cloud Audit Logs dan Google Cloud Operations Suite mencatat aktivitas administratif dan permintaan akses untuk resource terkait Cloud SWP. Proxy juga mencatat metrik dan log transaksi untuk permintaan yang ditangani oleh proxy.

Inspeksi TLS

Proxy Web Aman menawarkan layanan pemeriksaan TLS yang memungkinkan Anda mencegat traffic TLS, memeriksa permintaan yang dienkripsi, dan menerapkan kebijakan keamanan.

  • Integrasi erat dengan Certificate Authority Service (CAS), yang merupakan repositori dengan ketersediaan tinggi dan skalabel untuk CA pribadi.
  • Kemampuan untuk menggunakan root kepercayaan Anda sendiri jika diperlukan. Anda juga dapat menggunakan root CA yang ada untuk menandatangani CA subordinat yang dimiliki oleh CA. Jika ingin, Anda dapat membuat root certificate baru dalam CAS.
  • Kriteria dekripsi terperinci menggunakan SessionMatcher dan ApplicationMatcher dalam aturan kebijakan Proxy Web Aman. Kriteria ini mencakup host yang cocok yang ada di daftar URL, ekspresi reguler, rentang alamat IP, dan ekspresi serupa. Jika diperlukan, kriteria dapat dikombinasikan dengan ekspresi boolean.
  • Setiap kebijakan Proxy Web Aman dapat dikonfigurasi dengan kebijakan pemeriksaan TLS dan kumpulan CA-nya sendiri. Atau, beberapa kebijakan Proxy Web Aman dapat berbagi satu kebijakan pemeriksaan TLS.

Yang akan Anda pelajari

  • Cara men-deploy dan mengelola Cloud SWP.

Yang Anda butuhkan

  • Pengetahuan dalam men-deploy instance dan mengonfigurasi komponen jaringan
  • Pengetahuan Konfigurasi Firewall VPC

2. Lingkungan Pengujian

Codelab ini akan memanfaatkan VPC tunggal. Resource komputasi di lingkungan ini akan keluar menggunakan Cloud SWP seperti yang terlihat pada diagram di bawah.

1264e30caa136365.pngS

Di lab ini, kita akan memiliki 2 VM workload.

Klien A akan dikonfigurasi untuk mengirim semua permintaan HTTP/HTTPS ke Cloud SWP.

Klien B TIDAK akan dikonfigurasi untuk mengirim permintaan HTTP/HTTPS secara eksplisit ke Cloud SWP, tetapi memanfaatkan Cloud NAT untuk traffic yang terikat internet.

3. Sebelum memulai

Codelab memerlukan satu project.

Di dalam Cloud Shell, pastikan project ID Anda sudah disiapkan

export project_id=`gcloud config list --format="value(core.project)"`
export project_number=`gcloud projects describe $project_id --format="value(projectNumber)"`
export region=us-west1
export zone=us-west1-a
export prefix=codelab-swp
export member="serviceAccount:service-$project_number@gcp-sa-networksecurity.iam.gserviceaccount.com"

4. Mengaktifkan API

Mengaktifkan API untuk menggunakan produk

gcloud services enable networksecurity.googleapis.com
gcloud services enable certificatemanager.googleapis.com
gcloud services enable networkservices.googleapis.com

5. Membuat jaringan VPC, subnet, dan subnet khusus proxy

Jaringan VPC

Buat VPC codelab-swp-vpc:

gcloud compute networks create $prefix-vpc --subnet-mode=custom 

Subnet

Buat subnet yang sesuai di region yang dipilih:

gcloud compute networks subnets create $prefix-vpc-subnet \
   --range=10.10.10.0/24 --network=$prefix-vpc --region=$region

Subnet khusus proxy

Buat subnet khusus proxy di region yang dipilih:

gcloud compute networks subnets create $prefix-proxy-only-subnet --purpose=REGIONAL_MANAGED_PROXY --role=ACTIVE --region=$region --network=$prefix-vpc --range=172.16.0.0/23

6. 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 cloudshell:

gcloud compute firewall-rules create $prefix-allow-iap-proxy \
--direction=INGRESS \
--priority=1000 \
--network=$prefix-vpc \
--action=ALLOW \
--rules=tcp:22 \
--source-ranges=35.235.240.0/20

7. Membuat Cloud Router & Cloud NAT

Membuat Cloud Router untuk Cloud NAT.

gcloud compute routers create ${prefix}-cr \
--region=$region \
--network=${prefix}-vpc

Buat Gateway Cloud NAT untuk Klien B.

gcloud compute routers nats create $prefix-nat-gw-$region \
--router=$prefix-cr \
--router-region=$region \
--auto-allocate-nat-external-ips \
--nat-all-subnet-ip-ranges

8. Membuat Kebijakan Keamanan Gateway

Buat file yaml yang berisi informasi yang relevan untuk kebijakan:

cat > /tmp/policy.yaml << EOF
description: Policy to allow .com traffic, then (/index.html), and finally TLS.
name: projects/${project_id}/locations/${region}/gatewaySecurityPolicies/${prefix}-policy
EOF

Jalankan perintah gcloud untuk membuat kebijakan dari file yaml:

gcloud network-security gateway-security-policies import ${prefix}-policy --source=/tmp/policy.yaml --location=${region}

9. Membuat Aturan Kebijakan Keamanan Gateway

Membuat file yaml yang berisi aturan. Aturan ini diwakili dalam Common Expression Language (CEL). Lab ini akan menggunakan aturan sederhana yang akan mengizinkan traffic ke domain .com dan memblokir semua yang lainnya:

cat > /tmp/rule-com.yaml << EOF
name: projects/${project_id}/locations/${region}/gatewaySecurityPolicies/${prefix}-policy/rules/rule-com
enabled: true
priority: 1
description: Allow .com traffic
basicProfile: ALLOW
sessionMatcher: host().endsWith('com')
EOF

Sekarang kita dapat mengikat aturan ke kebijakan keamanan gateway:

gcloud network-security gateway-security-policies rules import rule-com --source=/tmp/rule-com.yaml --location=${region} --gateway-security-policy=${prefix}-policy

10. Membuat sertifikat dan mengupload ke Cloud Certificate Manager

Buat sertifikat untuk menghentikan traffic workload:

openssl req -x509 -newkey rsa:2048 -keyout /tmp/key.pem -out /tmp/cert.pem -days 365 -subj '/CN=www.codelab-swp.com' -nodes -addext \
  "subjectAltName = DNS:www.codelab-swp.com"

Upload sertifikat ke Cloud Certificate Manager agar SWP dapat mereferensikannya dalam kebijakan gateway keamanan.

gcloud certificate-manager certificates create ${prefix}-cert --location=${region} --private-key-file=/tmp/key.pem --certificate-file=/tmp/cert.pem

11. Membuat Gateway SWP

Buat file yaml untuk Gateway SWP guna merujuk informasi sebelumnya seperti sertifikat, kebijakan keamanan gateway, jaringan, dan subnet.

cat > /tmp/gateway.yaml << EOF
name: projects/${project_id}/locations/${region}/gateways/${prefix}-gateway
type: SECURE_WEB_GATEWAY
addresses: [10.10.10.50]
ports: [443]
certificateUrls: [projects/${project_id}/locations/${region}/certificates/${prefix}-cert]
gatewaySecurityPolicy: projects/${project_id}/locations/${region}/gatewaySecurityPolicies/${prefix}-policy
network: projects/${project_id}/global/networks/${prefix}-vpc
subnetwork: projects/${project_id}/regions/${region}/subnetworks/${prefix}-vpc-subnet
EOF

Buat gateway:

gcloud network-services gateways import ${prefix}-swp --source=/tmp/gateway.yaml --location=${region}

Pastikan gateway telah dibuat:

gcloud network-services gateways describe ${prefix}-swp --location ${region}

12. Membuat Instance Compute

Karena Cloud SWP adalah proxy eksplisit, kita perlu menentukan IP proxy secara eksplisit untuk traffic workload. KlienA instance Compute akan memiliki kumpulan variabel lingkungan. ClientB tidak akan demikian.

Buat instance komputasi ClientA dan ClientB:

gcloud compute instances create clienta \
   --subnet=$prefix-vpc-subnet \
   --no-address \
   --private-network-ip=10.10.10.10 \
   --zone $zone \
   --metadata startup-script='#! /bin/bash
apt-get update
sudo echo http_proxy=https://10.10.10.50:443/ >> /etc/environment
sudo echo https_proxy=https://10.10.10.50:443/ >> /etc/environment
'
gcloud compute instances create clientb \
   --subnet=$prefix-vpc-subnet \
   --no-address \
   --private-network-ip=10.10.10.200 \
   --zone $zone \
   --metadata startup-script='#! /bin/bash
apt-get update
'

13. Menguji Pencocokan Sesi

Jalankan SSH ke "clienta" Compute Engine yang baru saja dibuat. VM ini memiliki variabel lingkungan yang ditetapkan untuk menggunakan Cloud SWP.

Dari cloudshell:

gcloud compute ssh clienta --zone=$zone --tunnel-through-iap

Jalankan beberapa kueri web untuk memvalidasi fungsi. Kami memerlukan –proxy-insecure karena kami membuat sertifikat yang ditandatangani sendiri untuk lab ini:

curl https://google.com --proxy-insecure

Output yang diharapkan:

davidtu@clienta:~$ curl https://google.com --proxy-insecure
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="https://www.google.com/">here</A>.
</BODY></HTML>

Seperti yang Anda lihat, permintaannya "berhasil". Diperkirakan kami melihat pengalihan 301 karena situs melakukan pengalihan ke https://www.google.com.

Menjalankan perintah berikut akan memberikan log panjang yang berisi detail koneksi:

curl https://google.com --proxy-insecure -v

Menyoroti beberapa output untuk menampilkan detail koneksi proxy, sertifikat, dan tujuan.

davidtu@clienta:~$ curl https://google.com --proxy-insecure -v
* Uses proxy env variable https_proxy == 'https://10.10.10.50:443/'
*   Trying 10.10.10.50:443...
* Connected to 10.10.10.50 (10.10.10.50) port 443 (#0)
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* ALPN, server accepted to use http/1.1
* Proxy certificate:
*  subject: CN=www.codelab-swp.com
*  start date: Dec 12 17:16:35 2022 GMT
*  expire date: Dec 12 17:16:35 2023 GMT
*  issuer: CN=www.codelab-swp.com
*  SSL certificate verify result: self signed certificate (18), continuing anyway.
* allocate connect buffer!
* Establish HTTP proxy tunnel to google.com:443
> CONNECT google.com:443 HTTP/1.1
> Host: google.com:443
> User-Agent: curl/7.74.0
> Proxy-Connection: Keep-Alive
> 
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
< HTTP/1.1 200 OK
< date: Mon, 12 Dec 2022 19:22:04 GMT
< 
* Proxy replied 200 to CONNECT request
* CONNECT phase completed!
...

Jangan ragu untuk mencoba domain .com lainnya untuk memverifikasi fungsinya.

Sekarang, mari kita coba beberapa domain non-.com lainnya untuk memverifikasi perilaku pemblokiran default:

curl https://wikipedia.org --proxy-insecure

Output yang diharapkan:

curl: (56) Received HTTP code 403 from proxy after CONNECT

Demikian pula, lihat logging output panjang dan pastikan Cloud SWP memblokir traffic ini:

curl https://wikipedia.org --proxy-insecure -v
davidtu@clienta:~$ curl https://wikipedia.org --proxy-insecure -v
* Uses proxy env variable https_proxy == 'https://10.10.10.50:443/'
*   Trying 10.10.10.50:443...
* Connected to 10.10.10.50 (10.10.10.50) port 443 (#0)
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* ALPN, server accepted to use http/1.1
* Proxy certificate:
*  subject: CN=www.codelab-swp.com
*  start date: Dec 12 17:16:35 2022 GMT
*  expire date: Dec 12 17:16:35 2023 GMT
*  issuer: CN=www.codelab-swp.com
*  SSL certificate verify result: self signed certificate (18), continuing anyway.
* allocate connect buffer!
* Establish HTTP proxy tunnel to wikipedia.org:443
> CONNECT wikipedia.org:443 HTTP/1.1
> Host: wikipedia.org:443
> User-Agent: curl/7.74.0
> Proxy-Connection: Keep-Alive
> 
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
< HTTP/1.1 403 Forbidden
< content-length: 13
< content-type: text/plain
< date: Mon, 12 Dec 2022 19:35:09 GMT
< connection: close
< 
* Received HTTP code 403 from proxy after CONNECT
* CONNECT phase completed!
* Closing connection 0
curl: (56) Received HTTP code 403 from proxy after CONNECT

Jangan ragu untuk mencoba domain lain juga untuk memverifikasi perilaku pengguna.

Tutup sesi SSH ke "clienta" dan memulai koneksi SSH baru ke "{i>clientb.<i}"

gcloud compute ssh clientb --zone=$zone --tunnel-through-iap

Jalankan beberapa perintah curl untuk memeriksa perilaku:

curl https://google.com

Ini akan bekerja seperti VM clientb yang diharapkan:

davidtu@clientb:~$ curl https://google.com
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="https://www.google.com/">here</A>.
</BODY></HTML>

Pengujian terhadap domain org:

curl https://wikipedia.org

Hal ini berfungsi seperti yang diharapkan karena clientb tidak memanfaatkan Cloud SWP:

davidtu@clientb:~$ curl https://wikipedia.org
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="https://www.wikipedia.org/">here</a>.</p>
</body></html>

Menguji pengiriman traffic secara eksplisit melalui Cloud SWP:

curl -x https://10.10.10.50:443/ https://wikipedia.org --proxy-insecure 

Kita melihat bahwa traffic ini ditolak melalui kebijakan Cloud SWP:

davidtu@clientb:~$ curl -x https://10.10.10.50:443/ https://wikipedia.org --proxy-insecure
curl: (56) Received HTTP code 403 from proxy after CONNECT

Seperti yang telah Anda verifikasi, traffic yang memanfaatkan Cloud SWP ditegakkan terhadap kebijakan keamanan yang dikonfigurasi. Traffic yang ditujukan untuk .com diizinkan dan semua tujuan lainnya akan ditolak.

Keluar dari klienb.

14. Memperbarui Aturan Kebijakan Keamanan Gateway untuk ApplicationMatching

Mari kita perbarui aturan agar cocok dengan detail tingkat aplikasi. Kita akan membuat aturan untuk melihat jalur permintaan dan hanya mengizinkannya jika cocok dengan index.html.

cat > /tmp/rule-com.yaml << EOF
name: projects/${project_id}/locations/${region}/gatewaySecurityPolicies/${prefix}-policy/rules/rule-com
enabled: true
priority: 1
description: Allow .com traffic with path index.html
basicProfile: ALLOW
sessionMatcher: host().endsWith('com')
applicationMatcher: request.path.matches('index.html')
EOF

Sekarang kita dapat mengikat aturan yang diupdate ke kebijakan keamanan gateway:

gcloud network-security gateway-security-policies rules import rule-com --source=/tmp/rule-com.yaml --location=${region} --gateway-security-policy=${prefix}-policy

15. Menguji Aturan ApplicationMatcher

SSH ke VM komputasi clienta. VM ini memiliki variabel lingkungan yang ditetapkan untuk menggunakan Cloud SWP.

Dari cloudshell:

gcloud compute ssh clienta --zone=$zone --tunnel-through-iap

Jalankan beberapa kueri web untuk memvalidasi fungsi. Kami memerlukan –proxy-insecure karena kami membuat sertifikat yang ditandatangani sendiri untuk lab ini:

curl http://google.com --proxy-insecure

Perhatikan bahwa kueri ini akan gagal jika sebelumnya diteruskan.

Access denied

Jalur permintaan apa pun selain "index.html" akan diblokir dengan 403. Jangan ragu untuk menguji hal ini lebih lanjut.

Ubah kueri untuk menyertakan jalur /index.html

curl http://google.com/index.html --proxy-insecure

Permintaan ini akan berhasil:

davidtu@clienta:~$ curl http://google.com/index.html --proxy-insecure
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="https://www.google.com/index.html">here</A>.
</BODY></HTML>

Diperkirakan melihat pengalihan 301 karena situs mengalihkan ke http://www.google.com/index.html

Perhatikan bahwa ini adalah permintaan HTTP. Selanjutnya, Anda harus mengaktifkan SWP agar memiliki kemampuan inspeksi TLS.

Selanjutnya, jalankan kueri yang sama tetapi melalui TLS:

curl -k https://google.com/index.html --proxy-insecure

Output yang diharapkan:

curl: (56) Received HTTP code 403 from proxy after CONNECT

Permintaan ini seharusnya gagal karena SWP tidak dikonfigurasi untuk memeriksa TLS dan tidak dapat mengevaluasi jalur berdasarkan aturan applicationMatcher.

Keluar dari clenta.

16. Aktifkan TLS Inspection

Tanpa TLS Inspection, applicationMatcher tidak akan cocok dengan traffic HTTPS.

&quot;applicationMatcher&quot; memungkinkan pemfilteran pada hal berikut:

  • Peta header permintaan
  • Metode permintaan
  • Minta host
  • Request path
  • Kueri permintaan
  • Skema permintaan
  • URL permintaan lengkap
  • Minta useragent

Buat Akun Layanan

Akun layanan ini akan memiliki izin untuk membuat sertifikat untuk inspeksi SWP TLS.

gcloud beta services identity create \
    --service=networksecurity.googleapis.com \
    --project=$project_id

Pastikan CAS diaktifkan

gcloud services enable privateca.googleapis.com

Membuat kumpulan CA

gcloud privateca pools create $prefix-ca-pool \
    --tier=devops \
    --project=$project_id \
    --location=$region 

Membuat Root CA

CA yang digunakan untuk penandatanganan sertifikat.

gcloud privateca roots create $prefix-root-ca --pool=$prefix-ca-pool \
  --location=$region \
  --auto-enable \
  --subject="CN=my-swp-ca, O=SWP LLC"

Membuat file kebijakan penerbitan sertifikat

cat > /tmp/tls-issuance-policy.yaml << EOF
maximumLifetime: 1209600s
baselineValues:
  caOptions:
    isCa: false
  keyUsage:
    extendedKeyUsage:
      serverAuth: true
EOF

Membuat file yaml TLS Inspection

cat > /tmp/tls-inspection-policy.yaml << EOF
caPool: projects/$project_id/locations/$region/caPools/$prefix-ca-pool
name: projects/$project_id/locations/$region/tlsInspectionPolicies/$prefix-tls-inspection
EOF

Membuat Kebijakan Inspeksi TLS

gcloud network-security tls-inspection-policies import $prefix-tls-inspection \
    --source=/tmp/tls-inspection-policy.yaml \
    --location=$region

Memperbarui Kumpulan CA agar dapat menggunakan kebijakan penerbitan sertifikat

gcloud privateca pools update $prefix-ca-pool    --issuance-policy=/tmp/tls-issuance-policy.yaml --location=$region

Berikan Izin

Hal ini memungkinkan akun layanan Anda menggunakan kumpulan CA untuk membuat sertifikat.

gcloud privateca pools add-iam-policy-binding $prefix-ca-pool \
    --member=$member \
    --role='roles/privateca.certificateManager' \
    --location=$region

Mengupdate Policy yaml untuk menyertakan inspeksi TLS

cat > /tmp/policy.yaml << EOF
description: some policy description
name: projects/${project_id}/locations/${region}/gatewaySecurityPolicies/${prefix}-policy
tlsInspectionPolicy: projects/${project_id}/locations/${region}/tlsInspectionPolicies/${prefix}-tls-inspection
EOF

Jalankan perintah, terapkan kebijakan yang diupdate

gcloud network-security gateway-security-policies import ${prefix}-policy --source=/tmp/policy.yaml --location=${region}

Memperbarui aturan untuk menyertakan pemeriksaan TLS

Selanjutnya, tentukan aturan apa yang harus membuat pemeriksaan TLS "enabtlsInspectionEnabled: true" penanda.

cat > /tmp/rule-com.yaml << EOF
name: projects/${project_id}/locations/${region}/gatewaySecurityPolicies/${prefix}-policy/rules/rule-com
enabled: true
priority: 1
description: Allow .com traffic with path index.html
basicProfile: ALLOW
sessionMatcher: host().endsWith('com')
applicationMatcher: request.path.matches('index.html')
tlsInspectionEnabled: true
EOF

Jalankan perintah untuk menerapkan aturan yang diperbarui

gcloud network-security gateway-security-policies rules import rule-com --source=/tmp/rule-com.yaml --location=${region} --gateway-security-policy=${prefix}-policy

17. Menguji Inspeksi TLS

SSH ke VM komputasi clienta. VM ini memiliki variabel lingkungan yang ditetapkan untuk menggunakan Cloud SWP.

Dari cloudshell:

gcloud compute ssh clienta --zone=$zone --tunnel-through-iap

Jalankan kueri web sebelumnya untuk memverifikasi apakah SWP melakukan pemeriksaan TLS untuk mengambil jalur

curl -k https://google.com/index.html --proxy-insecure

Kali ini, pengujiannya akan berhasil karena SWP dapat mengevaluasi ApplicationMatcher.

Output yang diharapkan:

<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="https://www.google.com/index.html">here</A>.
</BODY></HTML>

Kami telah berhasil menyiapkan Cloud SWP untuk memeriksa TLS dan mengevaluasi logika applicationMatcher.

Keluar dari clienta.

18. Langkah-langkah pembersihan

Dari Cloud Shell, hapus gateway SWP, kebijakan keamanan, sertifikat, instance, Cloud NAT, dan Cloud Router:

gcloud -q network-services gateways delete ${prefix}-swp --location=${region}

gcloud -q network-security gateway-security-policies rules delete rule-com --location=${region} --gateway-security-policy=${prefix}-policy

gcloud -q network-security gateway-security-policies delete ${prefix}-policy --location=${region}

gcloud -q certificate-manager certificates delete ${prefix}-cert --location=${region}

gcloud -q network-security tls-inspection-policies delete $prefix-tls-inspection --location=$region

gcloud -q privateca roots disable $prefix-root-ca --pool=$prefix-ca-pool --location=$region

gcloud -q privateca roots delete $prefix-root-ca --pool=$prefix-ca-pool --location=$region --ignore-active-certificates --skip-grace-period

gcloud -q privateca pools delete $prefix-ca-pool --location=$region

gcloud -q compute instances delete clienta --zone=$zone

gcloud -q compute instances delete clientb --zone=$zone

gcloud -q compute routers nats delete ${prefix}-nat-gw-${region} \
--router=$prefix-cr --router-region=$region

gcloud -q compute routers delete `gcloud compute routers list --regions=$region --format="value(NAME)" | grep -e swg-autogen -e codelab-swp` --region=$region

Hapus subnet, aturan FW, dan VPC:

gcloud -q compute networks subnets delete $prefix-vpc-subnet \
    --region $region

gcloud -q compute networks subnets delete $prefix-proxy-only-subnet \
    --region=$region

gcloud -q compute firewall-rules delete $prefix-allow-iap-proxy

gcloud -q compute networks delete $prefix-vpc

19. Selamat!

Selamat, Anda telah menyelesaikan codelab. Anda telah berhasil mengonfigurasi dan men-deploy Cloud Secure Web Proxy di Google Cloud.

Yang telah kita bahas

  • Cloud SWP dan manfaatnya!