1. Giriş
Google Cloud Armor Edge güvenlik politikaları, Google Cloud CDN ve Google Cloud Storage'daki önbelleğe alınmış nesnelere erişimi kısıtlamanıza olanak tanır. Bunun yapılmasının nedenlerine örnek olarak, kullanıcılarınızın depolama paketlerindeki nesnelere kısıtlanmış coğrafi bölgelerden erişmemesini sağlama veya medya dağıtımınızın, lisansınızın olduğu coğrafi bölgelerde filtreleme yapmasını sağlama verilebilir.
Bu laboratuvarda bir GCS paketi oluşturacak, bu pakete bir resim yükleyecek, paketi bir yük dengeleyiciye bağlayacak ve ardından Cloud CDN ile Edge Security politikalarını etkinleştireceğiz.
Neler öğreneceksiniz?
- Önbelleğe alınabilir içeriklerle Cloud Storage paketi oluşturma
- İçeriği korumak için Edge güvenlik politikası oluşturma
- Ağ ucu güvenlik politikasının beklendiği gibi çalıştığını doğrulama
Gerekenler
- Temel ağ iletişimi ve HTTP bilgisi
- Temel düzeyde Unix/Linux komut satırı bilgisi
2. Kurulum ve Gereksinimler
Yönlendirmesiz ortam kurulumu
- Google 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 hesap oluşturmanız gerekir.



- Proje adı, bu projenin katılımcıları için görünen addır. Google API'leri tarafından kullanılmayan bir karakter dizisidir ve istediğiniz zaman güncelleyebilirsiniz.
- Proje kimliği, tüm Google Cloud projelerinde benzersiz olmalı ve sabittir (ayarlandıktan sonra değiştirilemez). Cloud Console, benzersiz bir dizeyi otomatik olarak oluşturur. Genellikle bu dizenin ne olduğuyla ilgilenmezsiniz. Çoğu codelab'de proje kimliğine (genellikle
PROJECT_IDolarak tanımlanır) başvurmanız gerekir. Bu nedenle, beğenmezseniz başka bir rastgele kimlik oluşturabilir veya kendi kimliğinizi deneyip kullanılabilir olup olmadığını görebilirsiniz. Proje oluşturulduktan sonra bu değer "dondurulur". - Bazı API'lerin kullandığı üçüncü bir değer olan Proje Numarası da vardır. Bu üç değer hakkında daha fazla bilgiyi belgelerde bulabilirsiniz.
- Ardından, Cloud kaynaklarını/API'lerini 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ı kapatmak üzere codelab'in sonunda bulunan "temizleme" talimatlarını uygulayın. 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.
Başlamadan önce
Cloud Shell'de proje kimliğinizin ayarlandığından emin olun.
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] PROJECT_ID=[YOUR-PROJECT-NAME] echo $PROJECT_ID
API'leri etkinleştirme
Gerekli tüm hizmetleri etkinleştirin
gcloud services enable compute.googleapis.com gcloud services enable logging.googleapis.com gcloud services enable monitoring.googleapis.com
3. Cloud Storage paketi oluşturma
Cloud Console'da Gezinme menüsü > Cloud Storage > Tarayıcı'ya gidin. PAKET OLUŞTUR'u tıklayın:

Paket adlandırma kuralları:
- Paket adı alanı global ve herkese görünür olduğundan paket adına hassas bilgiler eklemeyin.
- Paket adlarında yalnızca küçük harf, sayı, kısa çizgi (-), alt çizgi (_) ve nokta (.) kullanılabilir. Nokta içeren adların doğrulanması gerekir.
- Paket adlarının bir sayı veya harfle başlayıp bitmesi gerekir.
- Paket adları 3 ila 63 karakterden oluşmalıdır. Nokta içeren adların uzunluğu 222 karakterden oluşabilir, ancak adın noktayla ayrılmış her bir parçası 63 karakterden uzun olamaz.
- Paket adları, noktalı ondalık notasyon ile IP adresi olarak temsil edilemez (örneğin, 192.168.5.4).
- Paket adları "goog" önekiyle başlayamaz.
- Paket adlarında "google" sözcüğü veya "google"ın yanlış yazımları bulunamaz.
- Ayrıca, DNS uygunluğu ve geleceğe yönelik uygunluk gereksinimleri nedeniyle, nokta veya kısa çizgi karakterinin hemen yanına alt çizgi (_) ya da başka bir nokta eklemekten kaçınmalısınız. Örneğin, ".." veya "-." ya da ".-" geçerli DNS adları değildir.
DEVAM'ı tıklayın.
Konum türü: Bölge
Konum: Sizden uzakta bir bölge seçin.
DEVAM'ı tıklayın.
Varsayılan depolama sınıfı: Standart
DEVAM'ı tıklayın.
Herkese açık erişimi engelle bölümünde Bu pakette herkese açık erişim engeli uygula onay kutusunun işaretini kaldırın .
Erişim denetimi bölümünde Ayrıntılı'yı seçin.
DEVAM'ı tıklayın.
Paketinizi yapılandırdıktan sonra OLUŞTUR'u tıklayın:
Hepsi bu kadar! Bir Cloud Storage paketi oluşturdunuz.
4. Paketinize nesne yükleme
Şimdi paketinize bir nesne yükleyin.
Öncelikle, bu resmi Cloud Shell'de geçici bir örneğe indirin. Aşağıdaki örnekte, Google ana sayfasındaki Google resmi kullanılmıştır.
Cloud Shell'den
wget --output-document google.png https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png
Resmi kaydettiğiniz konumdan oluşturduğunuz pakete yüklemek için gsutil cp komutunu kullanın:
Cloud Shell'den
gsutil cp google.png gs://YOUR-BUCKET-NAME
Şimdi indirilen resmi kaldırın:
Cloud Shell'den
rm google.png
Nesnenizi bulun, sağ taraftaki üç noktayı tıklayın ve izinleri herkese açık olarak düzenleyin.


5. Yük dengeleyici oluşturma
Ardından bir HTTP yük dengeleyici oluşturacağız.
Networking >> Network services >> Load Balancing >> Create Load Balancer >> HTTP Load Balancer >> Internet to my VMs >> Classic HTTP(S) Load Balancer'a (Ağ iletişimi >> Ağ hizmetleri >> Yük dengeleme >> Yük dengeleyici oluştur >> HTTP yük dengeleyici >> İnternet'ten VM'lerime >> Klasik HTTP(S) yük dengeleyici) gidin.
Öncelikle, oluşturacağınız yük dengeleyici için bir ad oluşturun.
Arka uç paketi oluşturun
Yeni oluşturduğunuz paketinizi içeren yeni bir arka uç paketi oluşturun ve "CDN etkin" ile "Statik içeriği önbelleğe al" seçeneklerini belirleyin. Oluştur'u tıklayın.

Ana makine ve yol kuralları oluşturma
Sol taraftaki Ana makine ve yol kuralları'na gidin. Basit bir ana makine/yol kuralı kullanıp tüm istekleri pakete göndeririz.

Ön uç yapılandırması oluşturma
Ön uç yapılandırmasını seçin. Ön uç yapılandırması için HTTP'yi (sertifikanız varsa HTTPS de çalışır) ve geçici bir IP adresini kullanacağız ve premium katman ağını seçtiğinizden emin olacağız.

Oluştur'u tıklayın
Yük dengeleyici IP'sini alma
Projenizin yük dengeleyicileri listesinde yük dengeleyici adını tıklayarak konsoldan yük dengeleyici IP'sini alın.

Yük dengeleyiciyi sorgulama
Birkaç dakika sonra, yüklediğiniz nesne için yük dengeleyiciyi sorgulamayı deneyin. Yük dengeleyicinin IP adresini ve görüntünün adını bilmeniz gerekir. Komut şu şekilde yapılandırılır:
Terminalden
curl -svo /dev/null http://LOAD_BALANCER_IP/google.png
Çıkış
armanrye-macbookpro% curl -svo /dev/null http://34.98.81.123/google.png * Trying 34.98.81.123... * TCP_NODELAY set * Connected to 34.98.81.123 (34.98.81.123) port 80 (#0) > GET /google.png HTTP/1.1 > Host: YOUR_IP > User-Agent: curl/7.64.1 > Accept: */* > < HTTP/1.1 200 OK < X-GUploader-UploadID: ADPycdtoILI76KVsvBvdVGvSfzaxys1m3zYqCepBrmJxAI48ni24cWCRIdNu-53PX3DS6iycxp6xwFbMpwtcHHZQUQmEBxAgng < Expires: Mon, 13 Dec 2021 22:58:26 GMT < Date: Mon, 13 Dec 2021 21:58:26 GMT < Cache-Control: public, max-age=3600 < Last-Modified: Mon, 13 Dec 2021 21:45:57 GMT < ETag: "8f9327db2597fa57d2f42b4a6c5a9855" < x-goog-generation: 1639431957957903 < x-goog-metageneration: 2 < x-goog-stored-content-encoding: identity < x-goog-stored-content-length: 5969 < Content-Type: image/png < x-goog-hash: crc32c=TeiHTA== < x-goog-hash: md5=j5Mn2yWX+lfS9CtKbFqYVQ== < x-goog-storage-class: STANDARD < Accept-Ranges: bytes < Content-Length: 5969 < Server: UploadServer
İçeriğinizin CDN veya yük dengeleme izleme yoluyla CDN'den yayınlandığını doğrulayın. %100 isabet oranına yakın bir sonuç elde edebilirsiniz. Birkaç sorgu çalıştırmanız gerekiyorsa aşağıdakileri yapabilirsiniz:
Terminalden
#for i in `seq 1 50`; do curl http://%loadbalncer-IP%/google.png; done
Cloud CDN tarafından sunulan içeriği onaylama
Ağ Hizmetleri >> CDN'ye giderek CDN'den trafik yayınladığınızı doğrulayın.

6. Nesneyi GCS'den silme
Önbellek doldurulduğuna göre, politikayı arka uca değil önbelleğe uyguladığımızı vurgulamak için nesneyi paketten silelim.
Cloud Storage >> %paket adı% >> nesneler'e gidin.
Resmi seçip silin.

7. CDN önbelleğiniz için ağ ucu güvenlik politikası oluşturma
Network Security >> Cloud Armor'a (Ağ Güvenliği >> Cloud Armor) gidin ve politika oluştur'u tıklayın.
Aşağıdakileri seçin
Politika Türü: Ağ Ucu Güvenlik Politikası
Varsayılan İşlem: Reddet



Politikayı arka uç paketinizde uygulayın.
8. Ağ ucu güvenlik politikasını doğrulama
Arka uç paketimizin önüne bir Edge güvenlik politikası oluşturduğumuza göre, bu politikanın beklendiği gibi çalıştığını doğrulayalım.
Güvenlik politikasını kontrol etme
Birkaç dakika sonra Cloud Armor politikasının çalıştığını kontrol edebilirsiniz. Komut satırından aşağıdaki komutu çalıştırdığınızda 403 hatası alırsınız.
Terminalden
curl -svo /dev/null http://LOAD_BALANCER_IP/google.png
Çıkış
curl -svo /dev/null http://34.98.81.123/google.png * Trying 34.98.81.123... * TCP_NODELAY set * Connected to 34.98.81.123 (34.98.81.123) port 80 (#0) > GET /google.png HTTP/1.1 > Host: YOUR_IP > User-Agent: curl/7.64.1 > Accept: */* > < HTTP/1.1 403 Forbidden < X-GUploader-UploadID: ADPycdtS6FtJOGIsiWYDrAAE8VFeQuNutcvbGoQe2t8EZxsuspVtmCjyiTv_P3CNktroHMOGFXkTCfG-Jj-rUO60ZGPpEbpqcw < Content-Type: application/xml; charset=UTF-8 < Content-Length: 111 < Date: Mon, 13 Dec 2021 23:09:35 GMT < Expires: Mon, 13 Dec 2021 23:09:35 GMT < Cache-Control: private, max-age=0 < Server: UploadServer <
Günlükleri inceleme
Ardından, zorunlu kılınan uç güvenlik politikasını görmek için günlükleri kontrol edebilirsiniz. İşlemler >> Günlük Kaydı >> Günlük Gezgini'ne gidin.
Aşağıdaki snippet'i sorguya girin ve çalıştır'ı tıklayın.

resource.type:(http_load_balancer) AND jsonPayload.enforcedEdgeSecurityPolicy.name:(%SECURITY_POLICY_NAME%)
403 yanıtını ve uygulanan güvenlik politikasını not edin.

Güvenlik politikasını kaldırma
Güvenlik politikasını kaldırın ve nesneyi önbellekten sorgulayın.
Network Security >> Cloud Armor >> %POLICY NAME% >> targets'a (Ağ Güvenliği >> Cloud Armor >> %POLICY NAME% >> hedefler) gidin ve hedef paketi kaldırın.

Politikanın kaldırıldığını onaylama
Birkaç dakika geçtikten sonra depolama paketindeki kaynağa başka bir curl komutu gönderin. Bu kez 200 yanıtı alırsınız.
Terminalden
curl -svo /dev/null http://LOAD_BALANCER_IP/google.png
Çıkış
armanrye-macbookpro% curl -svo /dev/null http://34.98.81.123/google.png
* Trying 34.98.81.123...
* TCP_NODELAY set
* Connected to 34.98.81.123 (34.98.81.123) port 80 (#0)
> GET /google.png HTTP/1.1
> Host: YOUR_IP
> User-Agent: curl/7.64.1
> Accept: */*
>
< HTTP/1.1 200 OK
< X-GUploader-UploadID: ADPycdtI7f49P3MSuZSZ8vl6RwfwmnIDJ59EeSKp7UPvLPawdaiRHXiNWLtseQTxUxceWOvSLvpYmT3pWVkV4qeIP7M
< Date: Mon, 13 Dec 2021 23:06:46 GMT
< Last-Modified: Mon, 13 Dec 2021 21:45:57 GMT
< ETag: "8f9327db2597fa57d2f42b4a6c5a9855"
< x-goog-generation: 1639431957957903
< x-goog-metageneration: 2
< x-goog-stored-content-encoding: identity
< x-goog-stored-content-length: 5969
< Content-Type: image/png
< x-goog-hash: crc32c=TeiHTA==
< x-goog-hash: md5=j5Mn2yWX+lfS9CtKbFqYVQ==
< x-goog-storage-class: STANDARD
< Accept-Ranges: bytes
< Content-Length: 5969
< Server: UploadServer
< Age: 1621
< Cache-Control: public,max-age=3600
<
{ [775 bytes data]
* Connection #0 to host 34.98.81.123 left intact
* Closing connection 0
Tebrikler! Cloud Armor Ağ Ucu Güvenlik Politikaları ile ilgili bu laboratuvarı tamamladınız.
©2020 Google LLC Tüm hakları saklıdır. Google ve Google logosu, Google LLC şirketinin ticari markalarıdır. Diğer tüm şirket ve ürün adları ilişkili oldukları şirketlerin ticari markaları olabilir.
9. Laboratuvar temizliği
Network Security >> Cloud Armor >> %POLICY NAME%'e (Ağ Güvenliği >> Cloud Armor >> %POLICY NAME%) gidin ve sil'i seçin.

Cloud Storage'a gidin, oluşturduğunuz paketi seçin ve sil'i tıklayın.

Networking >> Network services >> Load Balancing'e (Ağ iletişimi >> Ağ hizmetleri >> Yük dengeleme) gidin. Oluşturduğunuz yük dengeleyiciyi seçin ve sil'i tıklayın.

10. Tebrikler!
Cloud Armor ile Edge Cache'i Savunma adlı codelab'i tamamladınız.
İşlediğimiz konular
- Cloud Storage paketi ve ilişkili Cloud Load Balancer'ı ayarlama
- Cloud Armor ağ ucu güvenlik politikası oluşturma
- Ağ ucu güvenlik politikasının beklendiği gibi çalıştığını doğrulama
Sonraki adımlar
- Bir Compute Engine kaynağında önbellek isabetiyle Edge Security Policy oluşturmayı deneyin.