Cloud Armor ile Uç Önbelleği Savunma

1. Giriş

Google Cloud Armor Edge Güvenlik Politikaları, Google Cloud CDN ve Google Cloud Storage'da önbelleğe alınan nesnelere erişimi kısıtlamanızı sağlar. Bunu yapma nedenlerine örnek olarak kullanıcılarınızın kısıtlanmış coğrafi bölgelerden depolama paketlerindeki nesnelere erişmemesini sağlamak veya medya dağıtımınızın, lisans sahibi olduğunuz coğrafyalara göre filtreleme yapmasını sağlamak verilebilir.

Bu laboratuvarda bir GCS paketi oluşturup bu pakete bir görüntü yükleyecek, bunu bir yük dengeleyiciye bağlayacağız ve pakette Cloud CDN ve Edge Security politikalarını etkinleştireceğiz.

Neler öğreneceksiniz?

  • Önbelleğe alınabilir içeriğe sahip Cloud Storage Paketi oluşturma
  • İçeriği korumak için Edge Güvenlik Politikası oluşturma
  • Edge Güvenlik Politikası'nın beklendiği gibi çalıştığını doğrulama

Gerekenler

  • Temel Ağ İletişimi ve HTTP bilgisi
  • Temel Unix/Linux komut satırı bilgisi

2. Kurulum ve Gereksinimler

Kendi hızınızda ortam kurulumu

  1. Google Cloud Console'da oturum açıp 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 dizesidir ve bunu istediğiniz zaman güncelleyebilirsiniz.
  • Proje Kimliği, tüm Google Cloud projelerinde benzersiz olmalıdır ve değiştirilemez (belirlendikten sonra değiştirilemez). Cloud Console, otomatik olarak benzersiz bir dize oluşturur. bunun ne olduğunu umursamıyorsunuz. Çoğu codelab'de, Proje Kimliğine referans vermeniz gerekir (ve bu kimlik genellikle PROJECT_ID olarak tanımlanır). Beğenmezseniz başka bir rastgele kod oluşturun ya da kendi proje kimliğinizi deneyip mevcut olup olmadığına bakın. Sıcaklık "soğudu" takip etmeniz gerekir.
  • Bazı API'lerin kullandığı üçüncü bir değer, yani Proje Numarası daha vardır. Bu değerlerin üçü 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 çalıştırmanın maliyeti, yüksek değildir. Bu eğitim dışında faturalandırmayla karşılaşmamak için kaynakları kapatmak istiyorsanız tüm "temizleme" işlemlerini uygulayın buradaki talimatları uygulayın. Yeni Google Cloud kullanıcıları, 300 ABD doları değerindeki ücretsiz denemeden yararlanabilir.

Cloud Shell'i başlatma

Google Cloud dizüstü bilgisayarınızdan uzaktan çalıştırılabilse de 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 yer alan Cloud Shell simgesini tıklayın:

bce75f34b2c53987.png

Ortamı sağlamak ve bağlamak yalnızca birkaç dakika sürer. Tamamlandığında şuna benzer bir sonuç görmeniz gerekir:

f6ef2b5f13479f3a.png

İhtiyacınız olan tüm geliştirme araçlarını bu sanal makinede bulabilirsiniz. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud üzerinde çalışarak ağ performansını ve kimlik doğrulamasını büyük ölçüde iyileştirir. Bu laboratuvardaki tüm çalışmalarınızı yalnızca bir tarayıcıyla 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: Size uzak 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'nin altındaki Bu pakette herkese açık erişim engeli uygula onay kutusunun işaretini kaldırın.

Erişim Denetimi altında 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.

İlk olarak bu görüntüyü 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 herkese açık olacak şekilde izinleri düzenleyin.

821aad82d8633922.png

30a975d3ad22d33d.png

5. Yük Dengeleyici Oluşturma

Şimdi bir HTTP yük dengeleyici oluşturacağız.

Ağ iletişimi >> bölümüne gidin. Ağ hizmetleri >> Yük Dengeleme >> Yük Dengeleyici Oluştur >> HTTP Yük Dengeleyici >> Sanal makinelerime internet >> Klasik HTTP(S) Yük Dengeleyici

Öncelikle, oluşturacağınız yük dengeleyici için bir ad belirleyin.

Arka uç paketi oluşturun

Az önce oluşturduğunuz paketiniz olan yeni bir arka uç paketi oluşturun ve Etkin CDN ile Statik İçeriği Önbelleğe Alma'yı seçin. Oluştur'u tıklayın.

ed392a56538d499e.png

Ana makine ve yol kuralları oluşturma

Sol tarafta Ana makine ve yol kuralları'na gidin. Basit bir ana makine/yol kuralı kullanarak tüm istekleri pakete ileteceğiz.

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 (sertifikanız varsa HTTPS de çalışır) ile geçici bir IP adresi kullanacağız ve premium katman ağını seçtiğinizden emin olun.

2597a5e63d618622.png

Oluştur'u tıklayın

Yük Dengeleyici IP'si Alma

Konsoldan projenizin yük dengeleyici listesindeki yük dengeleyici adını tıklayarak 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 dengeleyici IP adresine ve resmin adına ihtiyacınız olacaktır. Komutun yapısı şöyledir:

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 İzleme aracılığıyla CDN'den sunulduğunu doğrulayın. %100'e yaklaşırsınız. 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 onaylayın

Ağ Hizmetleri >> bölümüne giderek CDN'den trafik sunduğunuzu doğrulayın CDN

a52d0ba4c084aa05.png

6. Nesneyi GCS'den silme

Önbellek doldurulduğuna göre şimdi nesneyi paketten silelim. Politikayı arka uca değil önbelleğe aldığımızı pekiştirelim.

Cloud Storage >> bölümüne gidin. %paket adı% >> nesneler

Resmi seçip silin.

a1cc1bb9a0ff41df.png

7. CDN Önbelleğiniz için Edge Güvenlik Politikası oluşturma

Ağ Güvenliği >> Cloud Armor'ı tıklayın ve politika oluştur'u tıklayın

Aşağıdakileri seçin

Politika Türü: Uç Güvenlik Politikası

Varsayılan İşlem: Reddet

7a12374be33026fd.png

b7c4efc091272358.png

77ddbcddd07b65d2.png

Politikayı arka uç paketinize uygulayın.

8. Edge Güvenlik Politikasını Doğrulayın

Arka uç paketimizin önünde bir uç güvenlik politikası oluşturduğumuza göre beklendiği gibi çalıştığını doğrulayalım.

Güvenlik politikasını kontrol edin

Birkaç dakika geçtikten sonra Cloud Armor Politikası'nın çalışıp çalışmadığını kontrol edebilirsiniz. Komut satırından aşağıdaki komutu çalıştırdığınızda sonucuna 403

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

Sorguya aşağıdaki snippet'i 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 zorunlu kılınan güvenlik politikasını not edin

cddc48ca93ad79ca.png

Güvenlik politikasını kaldırma

Güvenlik politikasını kaldırın ve önbellekten nesneyi sorgulayın.

Ağ Güvenliği >> Cloud Armor >> %POLİTİKA ADASI% >> hedeflerini ve hedef paketi kaldırın.

350655729a89eb33.png

Politikanın kaldırıldığını onaylayın

Birkaç dakika geçtikten sonra depolama paketindeki kaynağa başka bir curl gönderin. Bu sefer 200 yanıtı alacaksı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 Edge 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 Temizleme

Ağ Güvenliği >> Cloud Armor >> %POLICY NAME% ile Sil'i seçin

21eefb5f375e8fee.png

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

ef2fa8d45c1d3452.png

Ağ iletişimi >> bölümüne gidin. Ağ hizmetleri >> Yük dengeleme. Oluşturduğunuz yük dengeleyiciyi seçin ve Sil'i tıklayın.

ee2e78c10f4104eb.png

10. Tebrikler!

Cloud Armor codelab'de bulunan Uç Önbelleği Savunma işlemini tamamladınız.

İşlediklerimiz

  • Cloud Storage paketi ve ilişkili bulut yük dengeleyici oluşturma
  • Cloud Armor Edge Güvenlik Politikası oluşturma
  • Edge Güvenlik Politikası'nın beklendiği gibi çalıştığını doğrulama.

Sonraki adımlar

  • Compute Engine kaynağından önbellek isabetiyle bir Edge Güvenlik Politikası ayarlamayı deneyin.