1. Giriş
Cloud Secure Web Proxy
Cloud SWP, çıkış web trafiğini (HTTP/S) güvenli hale getirmenize yardımcı olmak için güvenli bir web proxy'si sağlayan, bulut öncelikli bir hizmettir. İstemcilerinizi, Cloud SWP'yi açıkça proxy olarak kullanacak şekilde yapılandırın. Web istekleri aşağıdaki kaynaklardan gelebilir:
- Sanal makine (VM) örnekleri
- Kapsayıcılar
- Sunucusuz 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 dair bazı örnekler verilmiştir:
Google Cloud'a taşıma
Cloud SWP, çıkış web trafiği için mevcut güvenlik politikalarınızı ve gereksinimlerinizi korurken Google Cloud'a geçmenize yardımcı olur. Başka bir yönetim konsolu gerektiren veya yapılandırma dosyalarının manuel olarak düzenlenmesini gerektiren üçüncü taraf çözümlerini kullanmaktan kaçınabilirsiniz.
Güvenilir harici web hizmetlerine erişim
Cloud SWP, ağınızı güvenli hale getirebilmeniz için çıkış web trafiğinize ayrıntılı erişim politikaları uygulamanı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şimi izleme
Güvenilmeyen web hizmetlerine izlenen erişim sağlamak için Cloud SWP'yi kullanabilirsiniz. Cloud SWP, politikaya uymayan trafiği tanımlar 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) kullanarak 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 yalıtır.
Cloud SWP Envoy proxy'lerini otomatik ölçeklendirme
Bir bölgedeki Envoy proxy havuzu boyutunun ve havuzun kapasitesinin otomatik olarak ayarlanmasını destekler. Bu sayede, yüksek talep dönemlerinde en düşük maliyetle tutarlı performans elde edilebilir.
Modüler çıkış erişim politikaları
Cloud SWP özellikle aşağıdaki çıkış politikalarını destekler:
- Güvenli etiketlere, hizmet hesaplarına veya IP adreslerine dayalı kaynak kimliği.
- 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 geçebilir. Cloud SWP, istemci tarafından başlatılan ve hedef sunucuya yönelik uçtan uca TLS bağlantıları için HTTP/S CONNECT'i de destekler.
Basitleştirilmiş Cloud NAT Entegrasyonu
Cloud NAT, Cloud SWP trafiğine hizmet veren proxy'lerin sayısı arttığında otomatik olarak ek herkese açık IP adresleri sağlar.
Bilinen çıkış IP'lerine sahip olmak isteyenler için manuel statik genel IP adresleri de bir seçenektir.
Cloud Denetleme Günlükleri ve Google Cloud'un işlem paketi entegrasyonu
Cloud Audit Logs ve Google Cloud'un işlem paketi, Cloud SWP ile ilgili kaynaklar için yönetim etkinliklerini ve erişim isteklerini kaydeder. Ayrıca, proxy tarafından işlenen isteklerle ilgili metrikleri ve işlem günlüklerini de kaydederler.
TLS Denetimi
Güvenli Web Proxy, TLS trafiğini yakalamanıza, şifrelenmiş isteği incelemenize ve güvenlik politikalarını zorunlu kılmanıza olanak tanıyan bir TLS denetim 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'ler tarafından tutulan alt CA'lar için imza oluşturmak üzere mevcut bir kök CA'yı da kullanabilirsiniz. İsterseniz CAS'te yeni bir kök sertifika oluşturabilirsiniz.
- Güvenli Web Proxy politika kurallarında SessionMatcher ve ApplicationMatcher'ı kullanarak ayrıntılı şifre çözme ölçütleri. Bu ölçüt, URL listelerinde, normal ifadelerde, IP adresi aralıklarında ve benzer ifadelerde bulunan eşleşen ana makineleri içerir. Gerekirse ölçütler Boole ifadeleriyle birleştirilebilir.
- Her güvenli web proxy'si politikası, kendi TLS inceleme politikası ve CA havuzuyla yapılandırılabilir. Alternatif olarak, birden fazla güvenli web proxy'si politikası tek bir TLS denetimi politikasını paylaşabilir.
Neler öğreneceksiniz?
- Cloud SWP'yi dağıtma ve yönetme
İhtiyacınız olanlar
- Örnekleri dağıtma ve ağ bileşenlerini yapılandırma bilgisi
- VPC Güvenlik Duvarı Yapılandırması Bilgisi
2. Test Ortamı
Bu codelab'de tek bir VPC kullanılacak. Bu ortamdaki bir bilgi işlem kaynağı, aşağıdaki şemada gösterildiği gibi Cloud SWP'yi kullanarak çıkış yapar.

Bu laboratuvarda 2 iş yükü VM'si olacak.
A istemcisi, tüm HTTP/HTTPS isteklerini Cloud SWP'ye gönderecek şekilde yapılandırılır.
B istemcisi, HTTP/HTTPS isteklerini Cloud SWP'ye açıkça gönderecek şekilde yapılandırılmaz. Bunun yerine, internete yönelik trafik için Cloud NAT'den yararlanır.
3. Başlamadan önce
Codelab için 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'sini oluşturun.
gcloud compute networks create $prefix-vpc --subnet-mode=custom
Alt ağ
Seçilen 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çili bölgede 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 özellikleri içeren bir güvenlik duvarı kuralı oluşturun:
- IAP kullanarak erişmek istediğiniz tüm sanal makine örnekleri için geçerlidir.
- 35.235.240.0/20 IP aralığından gelen giriş trafiğine izin verir. Bu aralık, IAP'nin TCP yönlendirme için kullandığı tüm IP adreslerini içerir.
Cloud Shell'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 Router ve Cloud NAT oluşturma
Cloud NAT için Cloud Router oluşturun.
gcloud compute routers create ${prefix}-cr \
--region=$region \
--network=${prefix}-vpc
B istemcisi 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
YAML dosyasından politikayı 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 gösterilir. Bu laboratuvarda, .com alan adlarına trafiğe izin veren ve diğer tüm alan adlarını engelleyen 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
Şimdi 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 Certificate Manager'a yükleme
İş yükü trafiğini sonlandırmak için sertifika oluşturma:
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 verebilmesi için sertifikayı Cloud Certificate Manager'a 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çidini oluşturma
SWP ağ geçidi için sertifika, ağ geçidi güvenlik politikası, ağ ve alt ağ gibi önceki bilgilere referans veren bir YAML dosyası 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. İşlem ö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'da ortam değişkeni ayarlanır. ClientB ise bunu yapmaz.
ClientA ve ClientB adlı 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şleme Testi
Yakın zamanda oluşturulan "clienta" adlı Compute Engine sanal makinesine SSH üzerinden bağlanın. Bu sanal makinede, Cloud SWP'nin kullanılmasını sağlayacak ortam değişkeni ayarlanmıştır.
Cloud Shell'den:
gcloud compute ssh clienta --zone=$zone --tunnel-through-iap
İşlevselliği doğrulamak için bazı web sorguları çalıştırın. Bu laboratuvar için kendinden imzalı bir sertifika oluşturduğumuzdan -proxy-insecure parametresini kullanmamız gerekir:
curl https://google.com --proxy-insecure
Beklenen çıktı:
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ı" oldu. Web sitesi https://www.google.com adresine yönlendirdiği için 301 yönlendirmesi görmemiz beklenir.
Aşağıdaki komutun çalıştırılması, bağlantıyla ilgili ayrıntıları içeren ayrıntılı günlükler sağlar:
curl https://google.com --proxy-insecure -v
Proxy bağlantı ayrıntılarını, sertifikaları ve hedefi göstermek için bazı çıkışları vurgulama.
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! ...
İşlevselliği doğrulamak için diğer .com alanlarını deneyebilirsiniz.
Şimdi de varsayılan engelleme davranışını doğrulamak için .com dışındaki bazı alanları deneyelim:
curl https://wikipedia.org --proxy-insecure
Beklenen çıktı:
curl: (56) Received HTTP code 403 from proxy after CONNECT
Benzer şekilde, ayrıntılı çıkış günlüğüne bakarak Cloud SWP'nin bu trafiği engellediğini doğrulayın:
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" için SSH oturumundan çıkın ve "clientb" için 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, istemci VM'sinde beklendiği gibi çalışmalıdı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>
Kuruluş alanına karşı test etme:
curl https://wikipedia.org
Bu durum, clientb Cloud SWP'den yararlanmadığı için 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 açıkça Cloud SWP üzerinden göndermeyi test etme:
curl -x https://10.10.10.50:443/ https://wikipedia.org --proxy-insecure
Bu 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 zorunlu kılınıyor. .com'a yönelik trafiğe izin verilir ve diğer tüm hedefler reddedilir.
clientb'den çıkın.
14. ApplicationMatching için bir ağ geçidi güvenlik politikası kuralını güncelleme
Kuralı, uygulama düzeyindeki ayrıntılarla eşleşecek şekilde güncelleyelim. İstek yolunu inceleyecek ve yalnızca index.html ile eşleşirse isteğe izin verecek bir kural oluşturacağız.
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
Şimdi 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 adlı Compute Engine sanal makinesine SSH üzerinden bağlanın. Bu sanal makinede, Cloud SWP'nin kullanılmasını sağlayacak ortam değişkeni ayarlanmıştır.
Cloud Shell'den:
gcloud compute ssh clienta --zone=$zone --tunnel-through-iap
İşlevselliği doğrulamak için bazı web sorguları çalıştırın. Bu laboratuvar için kendinden imzalı bir sertifika oluşturduğumuzdan -proxy-insecure parametresini kullanmamız gerekir:
curl http://google.com --proxy-insecure
Bu sorgunun daha önce başarılı olmasına rağmen artık başarısız olduğunu fark edin.
Access denied
"index.html" dışındaki tüm istek yolları 403 ile engellenmelidir. Bu özelliği daha ayrıntılı 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ı olmalıdı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önlendirme yaptığından 301 yönlendirmesi görmemiz beklenir.
Bunun bir HTTP isteği olduğunu unutmayın. Ardından, TLS denetimi özelliklerine sahip olmak için SWP'yi etkinleştirmeniz gerekir.
Ardından aynı sorguyu TLS üzerinden çalıştırın:
curl -k https://google.com/index.html --proxy-insecure
Beklenen çıktı:
curl: (56) Received HTTP code 403 from proxy after CONNECT
SWP, TLS'yi inceleyecek şekilde yapılandırılmadığından ve yolu applicationMatcher kuralına göre değerlendiremediğinden bu istek başarısız olmalıdır.
clenta'dan çıkış yapın.
16. TLS denetimini etkinleştirme
TLS incelemesi olmadan applicationMatcher, HTTPS trafiğiyle eşleşmez.
"applicationMatcher" aşağıdaki öğelere göre filtrelemeye olanak tanır:
- İstek başlıkları haritası
- İstek yöntemi
- İsteği gönderen ana makine
- Yol iste
- İstek sorgusu
- İstek şeması
- Tam istek URL'si
- Kullanıcı aracısı isteği
Hizmet hesabı oluşturma
Bu hizmet hesabı, SWP TLS incelemesi için sertifika oluşturma iznine sahip olur.
gcloud beta services identity create \
--service=networksecurity.googleapis.com \
--project=$project_id
CAS'nin etkin olduğundan 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şturma
Sertifika imzalamak 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 denetimi için 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 denetim 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üncelleyin.
gcloud privateca pools update $prefix-ca-pool --issuance-policy=/tmp/tls-issuance-policy.yaml --location=$region
İzin Ver
Bu, hizmet hesabınızın sertifika oluşturmak için CA havuzunu kullanmasına olanak tanır.
gcloud privateca pools add-iam-policy-binding $prefix-ca-pool \
--member=$member \
--role='roles/privateca.certificateManager' \
--location=$region
TLS denetimini içerecek şekilde politika YAML'sini güncelleyin.
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ı uygulamak için komutu çalıştırın.
gcloud network-security gateway-security-policies import ${prefix}-policy --source=/tmp/policy.yaml --location=${region}
TLS denetimini içerecek şekilde kuralları güncelleme
Ardından, hangi kuralların TLS denetimi "enabtlsInspectionEnabled: true" işaretine sahip olması gerektiğini belirtin.
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ırın.
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 etme
clienta adlı Compute Engine sanal makinesine SSH üzerinden bağlanın. Bu sanal makinede, Cloud SWP'nin kullanılmasını sağlayacak ortam değişkeni ayarlanmıştır.
Cloud Shell'den:
gcloud compute ssh clienta --zone=$zone --tunnel-through-iap
Yolu almak için SWP'nin 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
Bu kez, SWP, ApplicationMatcher'ı değerlendirebileceği için başarılı olmalıdır.
Beklenen çıktı:
<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 ayarladık.
Exit from clienta.
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ı, güvenlik duvarı 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 tebrik ederiz. Cloud Secure Web Proxy'yi Google Cloud'da başarıyla yapılandırıp dağıttınız.
İşlediğimiz konular
- Cloud SWP ve avantajları