Cloud Güvenli Web Proxy (SWP) Codelab'i

1. Giriş

Cloud Secure Web Proxy

Cloud SWP, çıkış web trafiğinin (HTTP/S) güvenliğini sağlamanıza yardımcı olmak için güvenli bir web proxy'si sağlayan, bulut öncelikli bir hizmettir. İstemcilerinizi açıkça proxy olarak Cloud SWP'yi kullanacak şekilde yapılandırırsınız. Web istekleri aşağıdaki kaynaklardan gelebilir:

  • Sanal makine örnekleri
  • Container'lar
  • Sunucusuz bir bağlayıcı kullanan sunucusuz ortam
  • VPC Eşleme genelindeki iş yükleri
  • Cloud VPN veya Cloud Interconnect ile bağlanan Google Cloud dışındaki iş yükleri

Cloud SWP, bulut öncelikli kimliklere ve web uygulamalarına dayalı esnek ve ayrıntılı politikalar sağlar.

Avantajları

Aşağıda, Cloud SWP'nin bir kuruluşa sağlayabileceği avantajlara bazı örnekler verilmiştir:

Google Cloud'a taşıma

Cloud SWP, mevcut güvenlik politikalarınızı ve çıkış web trafiği gereksinimlerinizi korurken Google Cloud'a geçiş yapmanıza yardımcı olur. Başka bir yönetim konsolu gerektiren üçüncü taraf çözümleri kullanmaktan veya yapılandırma dosyalarını manuel olarak düzenlemekten kaçınabilirsiniz.

Güvenilir harici web hizmetlerine erişim

Cloud SWP, çıkış web trafiğinize ayrıntılı erişim politikaları uygulayarak ağınızın güvenliğini sağlamanıza olanak tanır. İş yükü veya uygulama kimlikleri oluşturup tanımlar ve ardından politikalar uygularsınız.

Güvenilmeyen web hizmetlerine erişim izlendi

Güvenilmeyen web hizmetlerine izlenen erişim sağlamak için Cloud SWP'yi kullanabilirsiniz. Cloud SWP, politikaya uygun olmayan trafiği belirler ve Cloud Logging'e (Logging) kaydeder. Ardından internet kullanımını izleyebilir, ağınıza yönelik tehditleri keşfedebilir ve tehditlere yanıt verebilirsiniz.

Google API'leri için ayrıntılı politika kontrolleri

Google API'leri için ayrıntılı politikalar sağlamak üzere Cloud SWP'yi kullanabilirsiniz. Örneğin, Common Expression Language (CEL) kullanan paket/nesne düzeyinde politikalar belirleyebilirsiniz.

Desteklenen Özellikler

Cloud SWP aşağıdaki özellikleri destekler:

Açık proxy hizmeti

İstemciler, proxy sunucuyu kullanacak şekilde açıkça yapılandırılmalıdır. Cloud SWP proxy'si, istemci adına yeni TCP bağlantıları oluşturarak istemcileri internetten izole eder.

Cloud SWP Envoy proxy'lerini otomatik ölçeklendirme

Envoy proxy havuzu boyutunun ve havuz kapasitesinin belirli bir bölgedeki kapasitesinin otomatik olarak ayarlanmasını destekler. Bu sayede, yüksek talep dönemlerinde en düşük maliyetle tutarlı performans elde edebilirsiniz.

Modüler çıkış erişimi politikaları

Cloud SWP özellikle aşağıdaki çıkış politikalarını destekler:

  • Güvenli etiketlere, hizmet hesaplarına veya IP adreslerine dayalı kaynak kimlik.
  • URL'lere ve ana makine adlarına dayalı hedefler.
  • Yöntemlere, başlıklara veya URL'lere dayalı istekler. URL'ler; listeler, joker karakterler veya kalıplar kullanılarak belirtilebilir.
  • Uçtan uca şifreleme: İstemci-proxy tünelleri, TLS üzerinden aktarılabilir. Cloud SWP, hedef sunucuya istemci tarafından başlatılan, uçtan uca TLS bağlantıları için HTTP/S BAĞLANTIYI da destekler.

Basitleştirilmiş Cloud NAT Entegrasyonu

Cloud NAT, Cloud SWP trafiği sunan proxy grubu arttığında otomatik olarak ek genel IP adresleri sağlar.

Manuel statik genel IP adresleri, bilinen çıkış IP'lerine sahip olmak isteyenler için de bir seçenektir.

Cloud Denetleme Günlükleri ve Google Cloud'un işlem paketi entegrasyonu

Cloud Denetleme Günlükleri ve Google Cloud'un işlem paketi, Cloud SWP ile ilgili kaynaklara yönelik yönetim etkinliklerini ve erişim isteklerini kaydeder. Ayrıca, proxy tarafından işlenen isteklerle ilgili metrikleri ve işlem günlüklerini kaydederler.

TLS Denetimi

Güvenli Web Proxy'si; TLS trafiğine müdahale etmenize, şifrelenmiş isteği incelemenize ve güvenlik politikalarını uygulamanıza olanak tanıyan bir TLS denetleme hizmeti sunar.

  • Özel CA'lar için yüksek düzeyde kullanılabilir ve ölçeklenebilir bir depo olan Certificate Authority Service (CAS) ile sıkı entegrasyon.
  • Gerekirse kendi güven kökünüzü kullanabilme CAS'nin sahip olduğu bağımlı CA'ları imzalamak için mevcut bir kök CA'yı da kullanabilirsiniz. Dilerseniz CAS içinde yeni bir kök sertifika oluşturabilirsiniz.
  • Güvenli Web Proxy politika kuralları içinde SessionMatcher ve ApplicationMatcher kullanarak ayrıntılı şifre çözme kriterleri. Bu ölçütler arasında URL listelerinde bulunan eşleşen ana makineler, normal ifadeler, IP adresi aralıkları ve benzer ifadeler yer alır. Gerekirse ölçütler boole ifadeleriyle birleştirilebilir.
  • Her Güvenli Web Proxy politikası, kendi TLS denetim politikası ve CA havuzu ile yapılandırılabilir. Alternatif olarak, birden fazla Güvenli Web Proxy politikası, tek bir TLS denetim politikasını paylaşabilir.

Neler öğreneceksiniz?

  • Cloud SWP'yi dağıtma ve yönetme

Gerekenler

  • Örnekleri dağıtma ve ağ bileşenlerini yapılandırma hakkında bilgi
  • VPC Güvenlik Duvarı Yapılandırma Bilgisi

2. Test Ortamı

Bu codelab'de tek bir VPC kullanılır. Bu ortamdaki bir işlem kaynağı, aşağıdaki şemada görüldüğü gibi Cloud SWP'yi kullanarak çıkış yapacaktır.

1264e30caa136365.png

Bu laboratuvarda 2 iş yükü sanal makinemiz olacak.

A İstemcisi tüm HTTP/HTTPS isteklerini Cloud SWP'ye gönderecek şekilde yapılandırılacaktır.

B istemcisi, HTTP/HTTPS isteklerini Cloud SWP'ye açık şekilde göndermek üzere Yapılandırılmaz. Bunun yerine internete bağlı trafik için Cloud NAT'den yararlanılacaktır.

3. Başlamadan önce

Codelab'e tek bir proje gerekir.

Cloud Shell'de proje kimliğinizin ayarlandığından emin olun

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. API'leri etkinleştir

Ürünleri kullanmak için API'leri etkinleştirin

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

5. VPC ağı, alt ağ ve yalnızca proxy alt ağı oluşturma

VPC Ağı

codelab-swp-vpc VPC'si oluşturun:

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

Alt ağ

Seçili bölgede ilgili alt ağları oluşturun:

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

Yalnızca proxy alt ağı

Seçilen bölgede bir yalnızca proxy alt ağı oluşturun:

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. Güvenlik Duvarı Kuralları Oluşturma

IAP'nin sanal makine örneklerinize bağlanmasına izin vermek için aşağıdaki şartları yerine getiren bir güvenlik duvarı kuralı oluşturun:

  • IAP kullanarak erişilmesini istediğiniz tüm sanal makine örnekleri için geçerlidir.
  • 35.235.240.0/20 IP aralığından giriş trafiğine izin verir. Bu aralık, IAP'nin TCP yönlendirme için kullandığı tüm IP adreslerini içerir.

Cloudshell'den:

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. Cloud Yönlendiricisi ve Cloud NAT

Cloud NAT için Cloud Router oluşturun.

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

B İstemcisi için Cloud NAT Ağ Geçidi oluşturun.

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. Ağ Geçidi Güvenlik Politikası Oluşturma

Politikayla ilgili bilgileri içeren bir yaml dosyası oluşturun:

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

Politikayı yaml dosyasından oluşturmak için gcloud komutunu çalıştırın:

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

9. Ağ Geçidi Güvenlik Politikası Kuralı Oluşturma

Kuralları içeren bir yaml dosyası oluşturun. Bu kurallar, Common Expression Language (CEL) ile temsil edilir. Bu laboratuvarda, .com alanlarına yönelik trafiğe izin verecek ve diğer tüm alanları engelleyecek basit bir kural kullanılacaktır:

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

Artık kuralı ağ geçidi güvenlik politikasına bağlayabiliriz:

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

10. Sertifika oluşturma ve Cloud Sertifika Yöneticisi'ne yükleme

İş yükü trafiğini sonlandırmak için bir sertifika oluşturun:

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"

SWP'nin güvenlik ağ geçidi politikasında referans alabilmesi için sertifikayı Cloud Sertifika Yöneticisi'ne yükleyin.

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

11. SWP Ağ Geçidi oluşturma

Sertifika, ağ geçidi güvenlik politikası, ağ ve alt ağ gibi önceki bilgilere başvurmak için SWP Ağ Geçidi için yaml dosyasını oluşturun.

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

Ağ geçidini oluşturun:

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

Ağ geçidinin oluşturulduğunu onaylayın:

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

12. Compute Örnekleri Oluşturma

Cloud SWP açık bir proxy olduğundan iş yükü trafiği için proxy IP'sini açıkça belirtmemiz gerekir. Compute örneği clientA'sında ortam değişkeni ayarlanır. İstemciB bunu yapmaz.

ClientA ve ClientB işlem örneklerini oluşturun:

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. Oturum Eşlemesini Test Etme

"clienta" için SSH bilgi işlem sanal makinesi yakın zamanda oluşturuldu. Bu sanal makinenin ortam değişkeni, Cloud SWP'yi kullanacak şekilde ayarlanmış.

Cloudshell'den:

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

İşlevleri doğrulamak için birkaç web sorgusu çalıştırın. Bu laboratuvar için kendinden imzalı bir sertifika oluşturduğumuzdan –proxy-insecure gerekli:

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

Beklenen çıkış:

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>

Gördüğünüz gibi, istek "başarılı" olmuştur. Web sitesi https://www.google.com adresine yönlendirdiğinden bir 301 yönlendirmesi görmemiz beklenir.

Aşağıdaki komut çalıştırıldığında bağlantıyla ilgili ayrıntıları içeren ayrıntılı günlükler sağlanır:

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

Proxy bağlantı ayrıntılarını, sertifikaları ve hedefi göstermek için bazı çıkışlar vurgulanıyor.

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!
...

İşlevleri doğrulamak için diğer .com alanlarını deneyebilirsiniz.

Şimdi varsayılan engelleme davranışını doğrulamak için .com uzantılı olmayan diğer alanları deneyelim:

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

Beklenen çıkış:

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

Benzer şekilde, ayrıntılı çıkış günlük kaydına bakın ve Cloud SWP'nin bu trafiği engellediğinden emin olun:

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

Davranışı doğrulamak için diğer alanları da deneyebilirsiniz.

"clienta" SSH oturumundan çıkın ve "clientb" ile yeni bir SSH bağlantısı başlatın.

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

Davranışı kontrol etmek için bazı curl komutlarını çalıştırın:

curl https://google.com

Bu komut, beklenen clientb sanal makinesiyle çalışır:

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>

Bir kuruluş alan adıyla test etme:

curl https://wikipedia.org

Clientb, Cloud SWP'den yararlanmadığından bu işlem beklendiği gibi çalışır:

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>

Trafiği Cloud SWP üzerinden açıkça göndermeyi test edin:

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

Şu trafiğin Cloud SWP politikası aracılığıyla reddedildiğini görüyoruz:

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

Doğruladığınız gibi, Cloud SWP'den yararlanan trafik, yapılandırılan güvenlik politikasına göre uygulanmaktadır. .com adresine giden trafiğe izin verilir ve diğer tüm hedefler reddedilir.

Clientb'den çıkış yapın.

14. ApplicationMatching için Ağ Geçidi Güvenlik Politikası Kuralını Güncelleme

Kuralı, uygulama düzeyindeki ayrıntılarla eşleşecek şekilde güncelleyelim. İstek yoluna bakmak için bir kural oluşturur ve bu kurala yalnızca index.html ile eşleşirse izin veririz.

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

Artık güncellenen kuralı ağ geçidi güvenlik politikasına bağlayabiliriz:

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

15. ApplicationMatcher Kuralını Test Etme

clienta bilgi işlem sanal makinesine SSH uygulayın. Bu sanal makinenin ortam değişkeni, Cloud SWP'yi kullanacak şekilde ayarlanmış.

Cloudshell'den:

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

İşlevleri doğrulamak için birkaç web sorgusu çalıştırın. Bu laboratuvar için kendinden imzalı bir sertifika oluşturduğumuzdan –proxy-insecure gerekli:

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

Bu sorgunun, daha önce geçildiğinde başarısız olacağına dikkat edin.

Access denied

"index.html" dışındaki herhangi bir istek yolu 403 ile engellenmeli. Bunu daha ayrıntılı bir şekilde test edebilirsiniz.

Sorguyu /index.html yolunu içerecek şekilde değiştirin

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

Bu istek başarılı olacaktır:

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>

Web sitesi http://www.google.com/index.html adresine yönlendirdiğinden bir 301 yönlendirmesi görmemiz beklenir.

Bunun bir HTTP isteği olduğuna dikkat edin. Ardından, TLS denetimi özelliklerine sahip olmak için SWP'yi etkinleştirmeniz gerekir.

Daha sonra, aynı sorguyu TLS üzerinden çalıştırın:

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

Beklenen çıkış:

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

SWP, TLS'yi incelemek üzere yapılandırılmadığından ve yolu applicationMatcher kuralına göre değerlendiremediğinden bu istek başarısız olmalıdır.

Clena'dan çık.

16. TLS Denetleme'yi etkinleştir

TLS Denetleme olmadığında, applicationMatcher HTTPS trafiğiyle eşleşmez.

&quot;applicationMatcher&quot; şunlara göre filtreleme yapılmasına olanak tanır:

  • İstek üstbilgileri haritası
  • İstek yöntemi
  • İstek sahibi
  • Yol iste
  • Sorgu iste
  • İstek şeması
  • Tam istek URL'si
  • Kullanıcı aracısı iste

Hizmet Hesabı Oluştur

Bu hizmet hesabının SWP TLS denetimi için sertifika oluşturma izni vardır.

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

CAS'nin etkinleştirildiğinden emin olun

gcloud services enable privateca.googleapis.com

CA havuzu oluşturma

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

Kök CA oluştur

Sertifika imzalama için kullanılan CA.

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

Sertifika verme politikası dosyası oluşturma

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

TLS Denetleme yaml dosyası oluşturma

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

TLS Denetleme Politikası Oluşturma

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

Sertifika verme politikasını kullanmak için CA Havuzunu güncelleme

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

İzin Ver

Bu sayede hizmet hesabınız, sertifika oluşturmak için CA havuzunu kullanabilir.

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

Politika yaml'sini TLS denetimini içerecek şekilde güncelleme

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

Güncellenen politikayı uygulama komutunu çalıştırın

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

Kuralları TLS denetimini içerecek şekilde güncelleme

Ardından, "enabtlsReviewionEnabled: true" TLS denetiminin hangi kurallara sahip olması gerektiğini belirtin. tıklayın.

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

Güncellenen kuralı uygulamak için komutu çalıştırma

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

17. TLS Denetimini Test Et

clienta bilgi işlem sanal makinesine SSH uygulayın. Bu sanal makinenin ortam değişkeni, Cloud SWP'yi kullanacak şekilde ayarlanmış.

Cloudshell'den:

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

SWP'nin yolu almak için TLS denetimi gerçekleştirip gerçekleştirmediğini doğrulamak üzere önceki web sorgusunu çalıştırın

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

SWP bu kez ApplicationMatcher'ı değerlendirebildiği için başarılı olacaktır.

Beklenen çıkış:

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

TLS'yi incelemek ve applicationMatcher mantığını değerlendirmek için Cloud SWP'yi başarıyla kurduk.

Clienta'dan çıkış yapın.

18. Temizleme adımları

Cloud Shell'den SWP ağ geçidini, güvenlik politikasını, sertifikaları, örnekleri, Cloud NAT'yi ve Cloud Router'ı kaldırın:

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

Alt ağları, donanım yazılımı kurallarını ve VPC'leri kaldırın:

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. Tebrikler!

Codelab'i tamamladığınız için tebrikler. Google Cloud'da Cloud Güvenli Web Proxy'yi başarıyla yapılandırıp dağıttınız.

İşlediğimiz konular

  • Cloud SWP ve avantajları