حماية ذاكرة التخزين المؤقت على Edge باستخدام Cloud Armor

1. مقدمة

تسمح لك سياسات الأمان في Google Cloud Armor Edge بحظر الوصول إلى العناصر المخزّنة مؤقتًا على Google Cloud CDN وGoogle Cloud Storage. من أمثلة أسباب ذلك التأكّد من عدم وصول المستخدمين إلى العناصر المتوفّرة في حِزم التخزين من مواقع جغرافية محظورة أو التأكّد من فلترة توزيع الوسائط حسب المواقع الجغرافية التي تملك ترخيصًا لاستخدامها.

في هذا التمرين، سننشئ حزمة GCS ونحمّل صورة إليها واربطها بجهاز موازنة الحمل ثم نفعِّل سياسات Cloud CDN وEdge Security عليها.

المعلومات التي ستطّلع عليها

  • كيفية إعداد حزمة Cloud Storage باستخدام محتوى قابل للتخزين المؤقت
  • كيفية إنشاء سياسة أمان Edge لحماية المحتوى
  • كيفية التحقّق من عمل "سياسة أمان Edge" على النحو المتوقَّع

المتطلبات

  • الشبكات الأساسية والمعرفة ببروتوكول HTTP
  • معرفة سطر أوامر Unix/Linux الأساسي

2. الإعداد والمتطلبات

إعداد بيئة ذاتية

  1. سجِّل الدخول إلى Google Cloud Console وأنشئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. إذا لم يكن لديك حساب على Gmail أو Google Workspace، عليك إنشاء حساب.

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

  • اسم المشروع هو الاسم المعروض للمشاركين في هذا المشروع. وهي عبارة عن سلسلة أحرف لا تستخدمها Google APIs، ويمكنك تحديثها في أي وقت.
  • يجب أن يكون رقم تعريف المشروع فريدًا في جميع مشاريع Google Cloud وغير قابل للتغيير (لا يمكن تغييره بعد ضبطه). تنشئ Cloud Console سلسلة فريدة تلقائيًا. فعادةً لا تهتم بما هو. في معظم الدروس التطبيقية حول الترميز، يجب الرجوع إلى رقم تعريف المشروع (والذي يتم تحديده عادةً على أنّه PROJECT_ID). لذلك، إذا لم يعجبك، يمكنك إنشاء رقم تعريف عشوائي آخر أو يمكنك تجربة رقم تعريف المشروع الخاص بك ومعرفة ما إذا كان متاحًا. بعد ذلك تكون الحالة "مجمّدة". بعد إنشاء المشروع.
  • هناك قيمة ثالثة، وهي رقم المشروع الذي تستخدمه بعض واجهات برمجة التطبيقات. اطّلِع على مزيد من المعلومات حول هذه القيم الثلاث في المستندات.
  1. بعد ذلك، عليك تفعيل الفوترة في Cloud Console لاستخدام الموارد/واجهات برمجة التطبيقات في Cloud. إنّ تنفيذ هذا الدرس التطبيقي حول الترميز لن يكون مكلفًا أو مكلفًا على الإطلاق. لإيقاف تشغيل الموارد حتى لا تتحمل الفوترة بعد أكثر من هذا البرنامج التعليمي، اتبع أي عملية "تنظيف". التعليمات الموجودة في نهاية الدرس التطبيقي حول الترميز. يكون مستخدمو Google Cloud الجدد مؤهَّلون للانضمام إلى برنامج فترة تجريبية مجانية بقيمة 300 دولار أمريكي.

بدء Cloud Shell

مع أنّه يمكن إدارة Google Cloud عن بُعد من الكمبيوتر المحمول، ستستخدم في هذا الدرس التطبيقي Google Cloud Shell، وهي بيئة سطر أوامر يتم تشغيلها في السحابة الإلكترونية.

من وحدة تحكّم Google Cloud Platform، انقر على رمز Cloud Shell في شريط الأدوات العلوي الأيسر:

bce75f34b2c53987.png

من المفترَض أن تستغرق عملية إدارة الحسابات والاتصال بالبيئة بضع لحظات فقط. عند الانتهاء، من المفترض أن يظهر لك شيء مثل هذا:

f6ef2b5f13479f3a.png

يتم تحميل هذه الآلة الافتراضية مزوّدة بكل أدوات التطوير التي ستحتاج إليها. وتوفّر هذه الشبكة دليلاً رئيسيًا دائمًا بسعة 5 غيغابايت وتعمل على Google Cloud، ما يحسّن بشكل كبير من أداء الشبكة والمصادقة. يمكنك تنفيذ جميع أعمالك في هذا التمرين من خلال متصفح.

قبل البدء

داخل Cloud Shell، تأكَّد من إعداد رقم تعريف مشروعك.

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
PROJECT_ID=[YOUR-PROJECT-NAME]
echo $PROJECT_ID

تفعيل واجهات برمجة التطبيقات

تفعيل جميع الخدمات اللازمة

gcloud services enable compute.googleapis.com
gcloud services enable logging.googleapis.com
gcloud services enable monitoring.googleapis.com

3- إنشاء حزمة Cloud Storage

في Cloud Console، انتقل إلى قائمة التنقل > التخزين في السحابة الإلكترونية > المتصفح: انقر على إنشاء حزمة:

baf3d3c74282ecba.png

قواعد تسمية الحِزم:

  • لا تدرج معلومات حسّاسة في اسم الحزمة، لأن مساحة اسم الحزمة عامّة وظاهرة للجميع.
  • يجب أن تحتوي أسماء الحزم على أحرف صغيرة وأرقام وشرطات (-) وشُرط سفلية (_) ونقاط (.). يجب تأكيد الأسماء التي تحتوي على نقاط.
  • يجب أن تبدأ أسماء الحزم وتنتهي برقم أو حرف.
  • يجب أن يتراوح عدد الأحرف في أسماء الحزم بين 3 و63 حرفًا. يمكن أن يصل عدد الأحرف في الأسماء المحتوية على نقاط إلى 222 حرفًا، ولكن يجب ألا يتجاوز عدد أحرف كل مكوّن من المكوّنات المفصولة بنقطة 63 حرفًا.
  • لا يمكن أن تتشابه أسماء الحزم مع عناوين IP في التدوين ذي الفاصلة العشرية (على سبيل المثال، 192.168.5.4).
  • لا يمكن أن تبدأ أسماء الحزم بالسابقة "goog".
  • لا يمكن أن تحتوى أسماء الحزم على "google" أو أخطاء إملائية شديدة الشبه بـ "google".
  • وأيضًا بالنسبة إلى الامتثال لنظام أسماء النطاقات (DNS) والتوافق في المستقبل، لا ينبغي استخدام الشرطة السفلية (_) أو تجاور نقطتين أو نقطة وشرطة. على سبيل المثال، لا يجوز استخدام النماذج التالية في أسماء نظام أسماء النطاقات (DNS) ".." أو "-." أو ".-".

انقر على متابعة.

نوع الموقع الجغرافي: المنطقة

الموقع الجغرافي: اختيار منطقة بعيدة عنك

انقر على متابعة.

فئة التخزين التلقائية: عادية

انقر على متابعة.

أزِل العلامة من مربّع الاختيار فرض منع وصول الجميع إلى هذه الحزمة ضمن "منع الوصول العام".

اختَر دقة دقيقة ضمن "التحكُّم في الوصول".

انقر على متابعة.

بعد إعداد الحزمة، انقر على إنشاء:

هذا كل شيء، لقد أنشأت حزمة Cloud Storage.

4. تحميل عنصر إلى حزمتك

يمكنك الآن تحميل كائن إلى الحزمة.

أولاً، نزِّل هذه الصورة إلى مثيل مؤقت في Cloud Shell. في المثال أدناه، تُستخدم صورة Google من صفحة Google الرئيسية.

من Cloud Shell

wget --output-document google.png https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png

استخدِم الأمر gsutil cp لتحميل الصورة من الموقع الذي حفظتها فيه في الحزمة التي أنشأتها:

من Cloud Shell

gsutil cp google.png gs://YOUR-BUCKET-NAME

الآن قم بإزالة الصورة التي تم تنزيلها:

من Cloud Shell

rm google.png

حدِّد موقع العنصر وانقر على النقاط الثلاث على الجانب الأيسر وعدِّل الأذونات لتكون متاحة للجميع.

821aad82d8633922.png

30a975d3ad22d33d.png

5- إنشاء جهاز موازنة الحمل

سننشئ بعد ذلك جهاز موازنة حمل HTTP.

انتقِل إلى الشبكات >> خدمات الشبكة >> موازنة الحمل >> إنشاء موازن حمولة البيانات >> جهاز موازنة حمل HTTP >> الاتصال بالإنترنت لأجهزةي الافتراضية >> جهاز موازنة الحمل لبروتوكول HTTP(S) الكلاسيكي

أولاً، أنشئ اسمًا لجهاز موازنة الحمل الذي ستنشئه.

إنشاء حزمة خلفية

أنشئ حزمة خلفية جديدة تمثّل الحزمة التي أنشأتها للتو واختَر تم تفعيل شبكة توصيل المحتوى (CDN) وذاكرة التخزين المؤقت للمحتوى الثابت. انقر فوق "Create" (إنشاء).

ed392a56538d499e.png

إنشاء قواعد المضيف والمسار

انتقِل إلى قواعد المضيف والمسار على الجانب الأيمن. سنستخدم قاعدة مضيف/مسار بسيطة ونُرسل أي طلب إلى الحزمة.

7c1a664e0d1f15b0.png

إنشاء إعداد الواجهة الأمامية

حدد تهيئة الواجهة الأمامية. بالنسبة إلى إعداد الواجهة الأمامية، سنستخدم بروتوكول HTTP (على الرغم من أنّ بروتوكول HTTPS سيعمل أيضًا إذا كانت لديك شهادة) وعنوان IP مؤقت ونتأكّد من أنّك اخترت شبكة المستوى المميّز.

2597a5e63d618622.png

انقر على "إنشاء".

الحصول على عنوان IP لجهاز موازنة الحمل

احصل على عنوان IP لجهاز موازنة الحمل من وحدة التحكّم من خلال النقر على اسم جهاز موازنة الحمل في قائمة أجهزة موازنة الحمل لمشروعك.

9b757362d806e835.png

الاستعلام عن جهاز موازنة الحمل

بعد مرور بضع دقائق، حاوِل طلب البحث عن جهاز موازنة الحمل للعنصر الذي حمّلته. ستحتاج إلى عنوان IP لجهاز موازنة الحمل واسم الصورة. الأمر عبارة عن بنية على النحو التالي:

من المحطة الطرفية

curl -svo /dev/null http://LOAD_BALANCER_IP/google.png

الناتج

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

تحقق من أنه يتم عرض المحتوى الخاص بك من شبكة توصيل المحتوى (CDN) عبر شبكة توصيل المحتوى (CDN) أو "مراقبة موازنة التحميل". من المفترض أن تتمكن من الاقتراب من نسبة النتائج من 100%. إذا كنت بحاجة إلى إجراء بعض الاستعلامات، يمكنك القيام بما يلي

من المحطة الطرفية

#for i in `seq 1 50`; do curl http://%loadbalncer-IP%/google.png; done

تأكيد المحتوى الذي يتم عرضه من خلال Cloud CDN

تحقّق من أنّك تعرض زيارات من شبكة توصيل المحتوى (CDN) من خلال الانتقال إلى خدمات الشبكة >>. CDN

a52d0ba4c084aa05.png

6- حذف العنصر من GCS

وبعد أن تمت تعبئة ذاكرة التخزين المؤقت، سنحذف الكائن من الحزمة ونؤكّد أنّنا نطبّق السياسة على ذاكرة التخزين المؤقت وليس على الخلفية.

انتقِل إلى Cloud Storage >>. %bucket name% >> الكائنات

اختَر الصورة واحذفها.

a1cc1bb9a0ff41df.png

7. إنشاء سياسة أمان Edge لذاكرة التخزين المؤقت لشبكة توصيل المحتوى (CDN)

انتقِل إلى Network Security >> Cloud Armor والنقر على "سياسة إنشاء"

اختَر ما يلي:

نوع السياسة: سياسة أمان Edge

الإجراء التلقائي: رفض

7a12374be33026fd.png

b7c4efc091272358.png

77ddbcddd07b65d2.png

طبِّق السياسة على حزمة الخلفية.

8. التحقُّق من سياسة أمان Edge

والآن بعد أن أنشأنا سياسة أمان Edge أمام حزمة الواجهة الخلفية، لنتحقق من عملها على النحو المتوقع.

التحقّق من سياسة الأمان

بعد مرور بضع دقائق، ستتمكّن من التأكّد من أنّ سياسة Cloud Armor مفعَّلة. من سطر الأوامر، سيؤدي تشغيل الأمر التالي إلى ظهور رسالة الخطأ 403

من المحطة الطرفية

curl -svo /dev/null http://LOAD_BALANCER_IP/google.png

الناتج

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
<

التحقيق في السجلّات

بعد ذلك، يمكنك مراجعة السجلات للاطلاع على سياسة أمان الحافة التي تم فرضها. انتقِل إلى العمليات >>. التسجيل >> مستكشف السجلات

أدخِل المقتطف أدناه في طلب البحث وانقر على "تشغيل".

14972af5ae6c182a.png

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

ملاحظة الاستجابة 403 وسياسة الأمان المفروضة

cddc48ca93ad79ca.png

إزالة سياسة الأمان

عليك إزالة سياسة الأمان والاستعلام عن الكائن من ذاكرة التخزين المؤقت.

انتقِل إلى Network Security >> Cloud Armor >> %POLICY NAME% >> المستهدفة وإزالة الحزمة المستهدفة.

350655729a89eb33.png

تأكيد إزالة السياسة

بعد مرور بضع دقائق، أرسِل لفًا آخر إلى المورد في حزمة مساحة التخزين. ستتلقى الرد 200 هذه المرة.

من المحطة الطرفية

curl -svo /dev/null http://LOAD_BALANCER_IP/google.png

الناتج

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

تهانينا! لقد أكملت هذا التمرين المعملي حول سياسات أمان Cloud Armor Edge.

©2020 Google LLC جميع الحقوق محفوظة. Google وشعار Google هما علامتان تجاريتان تابعتان لشركة Google LLC. جميع أسماء الشركات والمنتجات الأخرى قد تكون علامات تجارية للشركات المالكة لها.

9. تنظيف المختبر

انتقِل إلى Network Security >> Cloud Armor >> %POLICY NAME% واختيار "حذف"

21eefb5f375e8fee.png

انتقِل إلى Cloud Storage واختَر الحزمة التي أنشأتها وانقر على "حذف".

ef2fa8d45c1d3452.png

انتقِل إلى الشبكات >> خدمات الشبكة >> موازنة الحمل اختَر جهاز موازنة الحمل الذي أنشأته وانقر على "حذف".

ee2e78c10f4104eb.png

10. تهانينا!

لقد أكملت الدرس التطبيقي حول الترميز في Cloud Armor باستخدام Defending Edge cache.

النقاط التي تناولناها

  • كيفية إعداد حزمة تخزين في السحابة الإلكترونية وجهاز موازنة الحمل في السحابة الإلكترونية المرتبط بها
  • طريقة إنشاء سياسة أمان Cloud Armor Edge
  • كيفية التحقّق من أنّ "سياسة أمان Edge" تعمل على النحو المنشود

الخطوات التالية

  • جرِّب إعداد سياسة أمان Edge باستخدام نتيجة ذاكرة تخزين مؤقت من مورد Compute Engine.