Cloud Armor ile Uç Önbelleği Savunma

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

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

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

  • 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_ID olarak 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.
  1. 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:

bce75f34b2c53987.png

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:

f6ef2b5f13479f3a.png

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:

baf3d3c74282ecba.png

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.

821aad82d8633922.png

30a975d3ad22d33d.png

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.

ed392a56538d499e.png

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.

7c1a664e0d1f15b0.png

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

2597a5e63d618622.png

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.

9b757362d806e835.png

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.

a52d0ba4c084aa05.png

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.

a1cc1bb9a0ff41df.png

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

7a12374be33026fd.png

b7c4efc091272358.png

77ddbcddd07b65d2.png

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.

14972af5ae6c182a.png

resource.type:(http_load_balancer) AND jsonPayload.enforcedEdgeSecurityPolicy.name:(%SECURITY_POLICY_NAME%)

403 yanıtını ve uygulanan güvenlik politikasını not edin.

cddc48ca93ad79ca.png

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.

350655729a89eb33.png

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.

21eefb5f375e8fee.png

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

ef2fa8d45c1d3452.png

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.

ee2e78c10f4104eb.png

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.