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.
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.
"applicationMatcher" ş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ı