1. Giriş
Google Cloud Armor adlandırılmış IP adresi listeleri, üçüncü taraf sağlayıcılar tarafından tutulan IP adresleri ve IP aralıkları listelerine referans vermenize olanak tanır. Güvenlik politikası içinde adlandırılmış IP adresi listeleri yapılandırabilirsiniz. Her IP adresini veya IP aralığını manuel olarak tek tek belirtmeniz gerekmez.
Neler öğreneceksiniz?
- Cloud Armor adlandırılmış IP adresi listesinin avantajları
- Cloud Armor güvenlik politikası oluşturma
- Cloud Armor adlandırılmış IP adresi listesini dağıtma
- Global yük dengeleyici oluşturma
- Örnek test uygulamasıyla yönetilen örnek grubu oluşturma
Gerekenler
- Güvenlik politikaları ve yük dengeleyicilerle ilgili deneyim
2. Yalnızca izin verilen üçüncü taraf sağlayıcılardan gelen trafiğe izin verme
Tipik bir kullanım alanı, yalnızca bu iş ortağından gelen trafiğin yük dengeleyiciye ve arka uçlara erişebilmesini sağlamak için izin verilen bir üçüncü taraf iş ortağının IP adreslerini içeren bir izin verilenler listesi oluşturmaktır.
Örneğin, CDN sağlayıcıların içerikleri kendi önbelleklerine dağıtmak için düzenli aralıklarla kaynak sunuculardan çekmesi gerekir. Google ile yapılan ortaklık, CDN sağlayıcılar ve Google ağının uç noktası arasında doğrudan bağlantı sağlar. Google Cloud'daki CDN kullanıcıları, kaynak çekme işlemleri sırasında bu doğrudan bağlantıyı kullanabilir. Bu durumda, CDN kullanıcısı yalnızca söz konusu CDN sağlayıcısından gelen trafiğe izin veren bir güvenlik politikası oluşturmak isteyebilir.
Bu örnekte bir CDN sağlayıcı, IP adresi listesini (23.235.32.0/20, 43.249.72.0/22, ⋯) yayınlar. Bir CDN kullanıcısı, yalnızca bu IP adreslerinden gelen trafiğe izin veren bir güvenlik kuralı yapılandırır. Bu nedenle, iki CDN sağlayıcı erişim noktasına (23.235.32.10 ve 43.249.72.10) izin verilir ve bu erişim noktalarının trafiğine izin verilir. 198.51.100.1 yetkisiz erişim noktasından gelen trafik engellendi.

Google Cloud Armor adlandırılmış IP adresi
3. Önceden yapılandırılmış kuralları kullanarak yapılandırma ve yönetimi basitleştirme
CDN sağlayıcıları genellikle iyi bilinen ve birçok CDN kullanıcısının kullanması gereken IP adreslerini kullanır. Sağlayıcılar IP adreslerini ekledikçe, kaldırdıkça ve güncelledikçe bu listeler zaman içinde değişir.
Güvenlik politikası kuralında adlandırılmış IP adresi listesi kullanmak, IP adreslerini yapılandırma ve yönetme sürecini basitleştirir. Bunun nedeni, Google Cloud Armor'un CDN sağlayıcılarından gelen bilgileri günlük olarak otomatik şekilde senkronize etmesidir. Bu sayede, büyük bir IP adresi listesini manuel olarak tutmanın zaman alıcı ve hataya açık süreci ortadan kalkar.
IP adresi listesi sağlayıcıları
Aşağıdaki tabloda yer alan IP adresi listesi sağlayıcıları, Google Cloud Armor için desteklenir. Bunlar, Google ile iş ortaklığı yapan CDN sağlayıcılarıdır. IP adresi listeleri, herkese açık URL'ler aracılığıyla yayınlanır.
Bu iş ortakları, IPv4 adresleri ve IPv6 adreslerinin ayrı listelerini sağlar. Google Cloud Armor, listeleri getirmek için sağlanan URL'leri kullanır ve ardından listeleri adlandırılmış IP adresi listelerine dönüştürür. Listelere tablodaki adlarla başvurursunuz.

Alternatif olarak, önceden yapılandırılmış adlandırılmış IP adresi listelerinin listesini almak için Cloud Shell'i kullanın.
Cloud Shell'e giriş yapın ve proje kimliğinizi ayarlayın.
gcloud config list project gcloud config set project [YOUR-PROJECT-ID] Perform setting your projectID: projectid=YOUR-PROJECT-ID echo $projectid
Cloud Shell'den
gcloud compute security-policies list-preconfigured-expression-sets \
--filter="id:sourceiplist"
Bu işlev şu sonucu döndürür:
EXPRESSION_SET sourceiplist-fastly sourceiplist-cloudflare sourceiplist-imperva
4. Codelab topolojisi

5. Kurulum ve Gereksinimler
Yönlendirmesiz ortam kurulumu
- Cloud Console'da oturum açın ve yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanın. (Gmail veya Google Workspace hesabınız yoksa oluşturmanız gerekir.)



Proje kimliğini unutmayın. Bu kimlik, tüm Google Cloud projelerinde benzersiz bir addır (Yukarıdaki ad zaten alınmış olduğundan sizin için çalışmayacaktır). Bu codelab'in ilerleyen kısımlarında PROJECT_ID olarak adlandırılacaktır.
- Ardından, Google Cloud kaynaklarını kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir.
Bu codelab'i tamamlamak neredeyse hiç maliyetli değildir. Bu eğitimin ötesinde faturalandırma ücreti alınmaması için kaynakları nasıl kapatacağınız konusunda size tavsiyelerde bulunan "Temizleme" bölümündeki talimatları uyguladığınızdan emin olun. Google Cloud'un yeni kullanıcıları 300 ABD doları değerinde ücretsiz deneme programından yararlanabilir.
Cloud Shell'i başlatma
Google Cloud, dizüstü bilgisayarınızdan uzaktan çalıştırılabilir. Ancak bu codelab'de, Cloud'da çalışan bir komut satırı ortamı olan Google Cloud Shell'i kullanacaksınız.
GCP Console'da sağ üstteki araç çubuğunda Cloud Shell simgesini tıklayın:

Ortamın temel hazırlığı ve bağlanması yalnızca birkaç dakikanızı alır. İşlem tamamlandığında aşağıdakine benzer bir sonuç görürsünüz:

Bu sanal makine, ihtiyaç duyacağınız tüm geliştirme araçlarını içerir. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud üzerinde çalışır. Bu sayede ağ performansı ve kimlik doğrulama önemli ölçüde güçlenir. Bu laboratuvardaki çalışmalarınızın tamamını yalnızca bir tarayıcı kullanarak yapabilirsiniz.
6. VPC ağı oluştur
VPC Ağı
Cloud Shell'den
gcloud compute networks create
named-list-vpc
--subnet-mode custom
Alt Ağ Oluştur
Cloud Shell'den
gcloud compute networks subnets create named-ip-subnet \
--network
named-list-vpc
--range 10.0.0.0/24 --region us-east1
Güvenlik Duvarı Kuralları Oluşturma
Cloud Shell'den
gcloud compute --project=$projectid firewall-rules create default-allow-http --direction=INGRESS --priority=1000 --network=named-list-vpc --action=ALLOW --rules=tcp:80 --source-ranges=0.0.0.0/0
gcloud compute --project=$projectid firewall-rules create default-allow-health-check --direction=INGRESS --priority=1000 --network=named-list-vpc --action=ALLOW --rules=tcp --source-ranges=130.211.0.0/22,35.191.0.0/16
Yük dengeleyiciyi oluşturma
Örnek şablonu oluşturma
Cloud Shell'den
gcloud beta compute --project=$projectid instance-templates create us-east1-template --machine-type=e2-medium --subnet=projects/$projectid/regions/us-east1/subnetworks/named-ip-subnet --network-tier=PREMIUM --metadata=startup-script-url=gs://cloud-training/gcpnet/httplb/startup.sh --maintenance-policy=MIGRATE --image=debian-10-buster-v20210217 --image-project=debian-cloud --boot-disk-size=10GB --boot-disk-type=pd-balanced --boot-disk-device-name=us-east1-template --no-shielded-secure-boot --no-shielded-vtpm --no-shielded-integrity-monitoring --reservation-affinity=any
Yönetilen örnek grubunu oluşturma
Cloud Shell'den
gcloud compute --project=$projectid instance-groups managed create us-east1-mig --base-instance-name=us-east1-mig --template=us-east1-template --size=1 --zone=us-east1-b
7. Arka uçları doğrulama
Sanal makine örneği oluşturma işleminin her iki bölgede de devam ettiğini doğrulayın ve bunların HTTP sitelerine erişin.
- Yine Compute Engine'de, sol menüden Sanal makine örnekleri'ni tıklayın.
- us-east1-mig ile başlayan örneklere dikkat edin. Bu örnekler yönetilen örnek gruplarının parçasıdır.
- Bir us-east1-mig örneğinin harici IP'sini tıklayın. İstemci IP'si (sizin IP adresiniz) ve Ana Makine Adı (us-east1-mig ile başlar) görünecektir.
HTTP yük dengeleyiciyi yapılandırma
- Cloud Console'da gezinme menüsü (
) > Ağ Hizmetleri > Yük dengeleme'yi, ardından Yük dengeleyici oluştur'u tıklayın. - HTTP(S) Yük Dengeleme bölümünde Yapılandırmayı başlat'ı tıklayın.

- İnternetten sanal makinelerime'yi seçip Devam'ı tıklayın.
- Adı http-lb olarak ayarlayın.
Arka ucu yapılandırma
Arka uç hizmetleri, gelen trafiği bir veya daha fazla ekli arka uca yönlendirir. Her arka uç, bir örnek grubundan ve ek sunum kapasitesi meta verisinden oluşur.
- Arka uç yapılandırması'nı tıklayın.
- Arka uç hizmetleri ve arka uç paketleri için Arka uç hizmetleri ve arka uç paketleri oluştur veya seç'i, ardından Arka uç hizmetleri'ni ve Arka uç hizmeti oluştur'u tıklayın.
- Arka uç türü, örnek grubudur.
- Aşağıdaki değerleri ayarlayın ve diğer tüm değerleri varsayılan haliyle bırakın:

- Bitti'yi tıklayın.
- Durum denetimi için Durum denetimi oluştur'u seçin.

- Aşağıdaki değerleri ayarlayın ve diğer tüm değerleri varsayılan haliyle bırakın:

- Aşağıdaki değerleri ayarlayın ve diğer tüm değerleri varsayılan haliyle bırakın:
- Kaydet ve Devam Et'i tıklayın.
- Arka uç hizmetini oluşturmak için Oluştur'u tıklayın.

Ön ucu yapılandırma
Ana makine ve yol kuralları, trafiğinizin nasıl yönlendirileceğini belirler. Örneğin, video trafiğini bir arka uca, statik trafiği ise başka bir arka uca yönlendirebilirsiniz. Ancak bu laboratuvarda Ana Makine ve yol kurallarını yapılandırmayacaksınız.
- Ön uç yapılandırması'nı tıklayın.
- http-front-end
- Aşağıdakileri ayarlayın ve diğer tüm değerleri varsayılan haliyle bırakın:

- Bitti'yi tıklayın.
8. HTTP yük dengeleyiciyi inceleme ve oluşturma
- İncele ve sonlandır'ı tıklayın.

- Arka uç hizmetlerini ve ön ucu inceleyin.

- Oluştur'u tıklayın.
- Yük dengeleyicinin oluşturulması için birkaç dakika bekleyin.
- Yük dengeleyicinin adını (http-lb) tıklayın.
- Sonraki görev için yük dengeleyicinin IPv4 adresini (http-lb olarak adlandırılır) not edin.
9. Başarılı yetkisiz erişimi doğrulama
Adlandırılmış IP adresi politikasını uygulamadan önce, laboratuvar yük dengeleyicisine ve sonraki web uygulamasına yetkisiz erişimin başarılı olduğunu doğrulayın. Adlandırılmış IP adresi politikası uygulandıktan sonra web uygulamasına erişimin, sağlanan ifade grubuyla sınırlı olduğunu unutmayın.
- Önceki adımda oluşturduğunuz yük dengeleyici IP adresinizi (http-lb) belirleyin ve web tarayıcınıza yapıştırın. Çıktı, aşağıdaki ekran görüntüsüne benzer olacaktır.
NOT: Bu adım birkaç dakika sürer. Web sayfası oluşturulduktan sonra istemci IP'si, iş istasyonunuzun IP'si değil, Google Front End IP'sidir.

İş istasyonunuzda aşağıda belirtilenlere benzer bir doğrulama yapın.
bash-3.2$ curl <load-balancer-IP>
10. Örnek çıkış
bash-3.2$ curl <load-balancer-ip> <h1>HTTP Load Balancing Lab</h1><h2>Client IP</h2>Your IP address : 35.191.0.151<h2>Hostname</h2>Server Hostname: us-east1-mig-8nqq<h2>Server Location</h2>Region and Zone: us-east1-b
11. Adlandırılmış IP Listesini Yapılandırma
Adlandırılmış IP listesi için yeni bir Cloud Armor politikası oluşturma
Cloud Shell'den
gcloud compute --project=$projectid security-policies create ca-policy
Cloud Shell'den
gcloud compute --project=$projectid security-policies rules update 2147483647 --action=deny-403 --security-policy=ca-policy --description="Default rule, higher priority overrides it" --src-ip-ranges=\*
Kullanılabilir CDN Adlandırılmış IP Listeleri adreslerini belirleyin.
Cloud Shell'den
gcloud compute security-policies list-preconfigured-expression-sets \
--filter="id:sourceiplist"
Bu işlev şu sonucu döndürür:
EXPRESSION_SET sourceiplist-fastly sourceiplist-cloudflare sourceiplist-imperva
Cloud Shell'den, CDN'nizin kullanılabilir ifade kümesine göre adlandırılmış IP adresi listesini yapılandırın.
gcloud beta compute security-policies rules create 600 \
--security-policy ca-policy \
--expression "evaluatePreconfiguredExpr('expression_set')" \
--action "allow"
Cloudflare kullanılan örnek
gcloud beta compute security-policies rules create 600 \
--security-policy ca-policy \
--expression "evaluatePreconfiguredExpr('sourceiplist-cloudflare')" \
--action "allow"
12. CA güvenlik politikasını uygulama
CA güvenlik politikasını uygulayın ve genel politika yayılımı için birkaç dakika bekleyin.
gcloud compute backend-services update http-backend --security-policy ca-policy --global
13. Adlandırılmış IP adresi doğrulaması
- Güvenlik politikası uygulandığından iş istasyonunuzdan yük dengeleyiciye erişim yetkisizdir.
- Doğrulamak için iş istasyonunuzdan bir terminal penceresi açın ve yük dengeleyici IP adresine bir curl işlemi uygulayın. İş istasyonunuz artık yetkisiz olduğundan curl'den alınan çıkış, "403" Forbidden hatası verir.
İş istasyonunuzdan
bash-3.2$ curl <load-balancer-IP> <!doctype html><meta charset="utf-8"><meta name=viewport content="width=device-width, initial-scale=1"><title>403</title>403 Forbidden
Temizleme Adımları
gcloud -q compute backend-services update http-backend --security-policy "" --global gcloud -q compute --project=$projectid security-policies delete ca-policy gcloud -q compute forwarding-rules delete http-front-end --global gcloud -q compute target-http-proxies delete http-lb-target-proxy gcloud -q compute url-maps delete http-lb gcloud -q compute backend-services delete http-backend --global gcloud -q compute health-checks delete http-health-check gcloud -q compute --project=$projectid instance-groups managed delete us-east1-mig --zone=us-east1-b gcloud -q beta compute --project=$projectid instance-templates delete us-east1-template gcloud -q compute --project=$projectid firewall-rules delete default-allow-http gcloud -q compute --project=$projectid firewall-rules delete default-allow-health-check gcloud -q compute networks subnets delete named-ip-subnet --region us-east1 gcloud -q compute networks delete named-list-vpc
14. Tebrikler!
Codelab'i tamamladığınız için tebrik ederiz.
İşlediğimiz konular
- Cloud Armor adlandırılmış IP adresi listesinin avantajları
- Global yük dengeleyici oluşturma
- Örnek test uygulamasıyla yönetilen örnek grubu oluşturma
- Cloud Armor güvenlik politikası oluşturma
- Cloud Armor adlandırılmış IP adresi listesini dağıtma
- Adlandırılmış IP Cloud Armor politikasını doğrulama