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 menggunakan Cloud SWP secara eksplisit 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
  • Workload 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

SWP Cloud membantu Anda bermigrasi ke Google Cloud sambil mempertahankan kebijakan dan persyaratan keamanan 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

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

Akses yang dipantau 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 untuk Google API. Misalnya, Anda dapat menetapkan kebijakan tingkat bucket/objek menggunakan 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.

Penskalaan otomatis proxy Envoy Cloud SWP

Mendukung penyesuaian ukuran pool proxy Envoy dan kapasitas pool secara otomatis di suatu region, yang memungkinkan performa yang konsisten selama periode permintaan tinggi dengan biaya terendah.

Kebijakan akses keluar modular

Cloud SWP secara khusus mendukung kebijakan 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 client-proxy dapat ditransmisikan melalui TLS. Cloud SWP juga mendukung HTTP/S CONNECT untuk koneksi TLS end-to-end yang dimulai klien ke server tujuan.

Integrasi Cloud NAT yang Disederhanakan

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

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

Integrasi Cloud Audit Logs dan Google Cloud Operations Suite

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

Pemeriksaan TLS

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

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

Yang akan Anda pelajari

  • Cara men-deploy dan mengelola Cloud SWP.

Yang Anda butuhkan

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

2. Lingkungan Pengujian

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

1264e30caa136365.png

Dalam lab ini, kita akan memiliki 2 VM workload.

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

Client B TIDAK akan dikonfigurasi untuk mengirim permintaan HTTP/HTTPS secara eksplisit ke Cloud SWP, tetapi akan memanfaatkan Cloud NAT untuk traffic yang terikat ke 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. Buat 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 masing-masing 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. Membuat Aturan Firewall

Untuk mengizinkan 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.

Dari Cloud Shell:

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

Buat 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

Buat file yaml yang berisi aturan. Aturan ini ditampilkan dalam Common Expression Language (CEL). Lab ini akan menggunakan aturan sederhana yang akan mengizinkan traffic ke domain .com dan memblokir semua domain 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 menguploadnya ke Cloud Certificate Manager

Buat sertifikat untuk menghentikan traffic beban kerja:

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 Pengelola Sertifikat Cloud sehingga 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. Buat Gateway SWP

Buat file yaml untuk SWP Gateway guna mereferensikan 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. Klien instance komputasi A akan memiliki variabel lingkungan yang ditetapkan. ClientB tidak akan.

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

Lakukan SSH ke VM komputasi "clienta" yang baru saja dibuat. VM ini telah menetapkan variabel lingkungan untuk menggunakan Cloud SWP.

Dari Cloud Shell:

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

Jalankan beberapa kueri web untuk memvalidasi fungsi. Kita memerlukan –proxy-insecure karena kita 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 dapat Anda lihat, permintaan tersebut "berhasil". Kita akan melihat pengalihan 301 karena situs mengalihkan ke https://www.google.com.

Menjalankan perintah berikut akan memberikan log panjang dengan detail tentang koneksi:

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

Menandai 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 fungsi.

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 verbose dan konfirmasi bahwa 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.

Keluar dari sesi SSH ke "clienta" dan mulai koneksi SSH baru ke "clientb".

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

Jalankan beberapa perintah curl untuk memeriksa perilaku:

curl https://google.com

Ini akan berfungsi seperti yang diharapkan clientb VM:

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>

Menguji 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>

Uji pengiriman traffic secara eksplisit melalui Cloud SWP:

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

Kami melihat bahwa traffic ini ditolak melalui kebijakan SWP Cloud:

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 diterapkan terhadap kebijakan keamanan yang dikonfigurasi. Traffic yang ditujukan untuk .com diizinkan dan semua tujuan lainnya ditolak.

Keluar dari clientb.

14. Memperbarui Aturan Kebijakan Keamanan Gateway untuk ApplicationMatching

Mari 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 diperbarui 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 telah menetapkan variabel lingkungan untuk menggunakan Cloud SWP.

Dari Cloud Shell:

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

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

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

Perhatikan bahwa kueri ini akan gagal jika sebelumnya berhasil.

Access denied

Setiap jalur permintaan selain "index.html" akan diblokir dengan error 403. Anda dapat mengujinya 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>

Kita akan melihat pengalihan 301 karena situs dialihkan ke http://www.google.com/index.html

Perhatikan bahwa ini adalah permintaan HTTP. Selanjutnya, Anda harus mengaktifkan SWP agar memiliki kemampuan pemeriksaan 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 akan gagal karena SWP tidak dikonfigurasi untuk memeriksa TLS dan tidak dapat mengevaluasi jalur berdasarkan aturan applicationMatcher.

Keluar dari clenta.

16. Mengaktifkan Pemeriksaan TLS

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

"applicationMatcher" memungkinkan pemfilteran pada hal berikut:

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

Buat Akun Layanan

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

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 

Buat CA Root

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"

Buat 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 Pemeriksaan TLS

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 Pemeriksaan TLS

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

Perbarui Kumpulan CA untuk menggunakan kebijakan penerbitan sertifikat

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

Berikan Izin

Dengan demikian, akun layanan Anda dapat menggunakan kumpulan CA untuk membuat sertifikat.

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

Memperbarui Policy yaml untuk menyertakan pemeriksaan 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 untuk menerapkan kebijakan yang telah diperbarui

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

Memperbarui aturan untuk menyertakan pemeriksaan TLS

Selanjutnya, tentukan aturan mana yang harus memiliki flag pemeriksaan TLS "enabtlsInspectionEnabled: true".

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 telah diupdate

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

17. Menguji Pemeriksaan TLS

SSH ke VM komputasi clienta. VM ini telah menetapkan variabel lingkungan untuk menggunakan Cloud SWP.

Dari Cloud Shell:

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, proses 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>

Kita 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

  • SWP Cloud dan manfaatnya