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

1. مقدمة

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

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

ما ستتعلمه

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

المتطلبات

  • أساسيات الشبكات ومعرفة بروتوكول 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، انتقِل إلى قائمة التنقّل > Cloud Storage > المتصفّح. انقر على إنشاء حزمة:

baf3d3c74282ecba.png

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

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

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

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

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

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

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

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

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

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

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

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

هذا كل شيء، لقد أنشأت حزمة 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) وتخزين المحتوى الثابت مؤقتًا". انقر على "إنشاء".

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) من خلال مراقبة شبكة توصيل المحتوى أو موازنة الحمل. من المفترض أن تتمكّن من تحقيق نسبة تطابق تقارب% 100. إذا كنت بحاجة إلى تنفيذ بعض طلبات البحث، يمكنك إجراء ما يلي

من المحطة

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

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

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

a52d0ba4c084aa05.png

6. حذف الكائن من GCS

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

انتقِل إلى Cloud Storage >> %اسم الحزمة% >> العناصر.

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

a1cc1bb9a0ff41df.png

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

انتقِل إلى أمان الشبكة >> Cloud Armor وانقر على "إنشاء سياسة".

اختَر ما يلي

نوع السياسة: سياسة أمان الحدود

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

7a12374be33026fd.png

b7c4efc091272358.png

77ddbcddd07b65d2.png

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

8. التحقّق من صحة سياسة أمان الحدود

بعد إنشاء "سياسة أمان الحدود" أمام حزمة الخلفية، لننتحقق من أنّها تعمل على النحو المتوقّع.

الاطّلاع على سياسة الأمان

بعد مرور بضع دقائق، ستتمكّن من التأكّد من أنّ سياسة 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

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

أزِل سياسة الأمان واطلب العنصر من ذاكرة التخزين المؤقت.

انتقِل إلى أمان الشبكة >> Cloud Armor >> %POLICY NAME% >> الأهداف وأزِل الحزمة المستهدَفة.

350655729a89eb33.png

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

بعد مرور بضع دقائق، أرسِل طلب curl آخر إلى المرجع في حزمة التخزين. ستتلقّى الرمز 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.

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

9- إعادة تنظيم المختبر

انتقِل إلى أمان الشبكة >> Cloud Armor >> %POLICY NAME% واختَر "حذف".

21eefb5f375e8fee.png

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

ef2fa8d45c1d3452.png

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

ee2e78c10f4104eb.png

10. تهانينا!

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

المواضيع التي تناولناها

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

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

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