1. مقدمة
تسمح لك سياسات الأمان في Google Cloud Armor Edge بحظر الوصول إلى العناصر المخزّنة مؤقتًا على Google Cloud CDN وGoogle Cloud Storage. من أمثلة أسباب ذلك التأكّد من عدم وصول المستخدمين إلى العناصر المتوفّرة في حِزم التخزين من مواقع جغرافية محظورة أو التأكّد من فلترة توزيع الوسائط حسب المواقع الجغرافية التي تملك ترخيصًا لاستخدامها.
في هذا التمرين، سننشئ حزمة GCS ونحمّل صورة إليها واربطها بجهاز موازنة الحمل ثم نفعِّل سياسات Cloud CDN وEdge Security عليها.
المعلومات التي ستطّلع عليها
- كيفية إعداد حزمة Cloud Storage باستخدام محتوى قابل للتخزين المؤقت
- كيفية إنشاء سياسة أمان Edge لحماية المحتوى
- كيفية التحقّق من عمل "سياسة أمان Edge" على النحو المتوقَّع
المتطلبات
- الشبكات الأساسية والمعرفة ببروتوكول HTTP
- معرفة سطر أوامر Unix/Linux الأساسي
2. الإعداد والمتطلبات
إعداد بيئة ذاتية
- سجِّل الدخول إلى Google Cloud Console وأنشئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. إذا لم يكن لديك حساب على Gmail أو Google Workspace، عليك إنشاء حساب.
- اسم المشروع هو الاسم المعروض للمشاركين في هذا المشروع. وهي عبارة عن سلسلة أحرف لا تستخدمها Google APIs، ويمكنك تحديثها في أي وقت.
- يجب أن يكون رقم تعريف المشروع فريدًا في جميع مشاريع Google Cloud وغير قابل للتغيير (لا يمكن تغييره بعد ضبطه). تنشئ Cloud Console سلسلة فريدة تلقائيًا. فعادةً لا تهتم بما هو. في معظم الدروس التطبيقية حول الترميز، يجب الرجوع إلى رقم تعريف المشروع (والذي يتم تحديده عادةً على أنّه
PROJECT_ID
). لذلك، إذا لم يعجبك، يمكنك إنشاء رقم تعريف عشوائي آخر أو يمكنك تجربة رقم تعريف المشروع الخاص بك ومعرفة ما إذا كان متاحًا. بعد ذلك تكون الحالة "مجمّدة". بعد إنشاء المشروع. - هناك قيمة ثالثة، وهي رقم المشروع الذي تستخدمه بعض واجهات برمجة التطبيقات. اطّلِع على مزيد من المعلومات حول هذه القيم الثلاث في المستندات.
- بعد ذلك، عليك تفعيل الفوترة في Cloud Console لاستخدام الموارد/واجهات برمجة التطبيقات في Cloud. إنّ تنفيذ هذا الدرس التطبيقي حول الترميز لن يكون مكلفًا أو مكلفًا على الإطلاق. لإيقاف تشغيل الموارد حتى لا تتحمل الفوترة بعد أكثر من هذا البرنامج التعليمي، اتبع أي عملية "تنظيف". التعليمات الموجودة في نهاية الدرس التطبيقي حول الترميز. يكون مستخدمو Google Cloud الجدد مؤهَّلون للانضمام إلى برنامج فترة تجريبية مجانية بقيمة 300 دولار أمريكي.
بدء Cloud Shell
مع أنّه يمكن إدارة Google Cloud عن بُعد من الكمبيوتر المحمول، ستستخدم في هذا الدرس التطبيقي Google Cloud Shell، وهي بيئة سطر أوامر يتم تشغيلها في السحابة الإلكترونية.
من وحدة تحكّم Google Cloud Platform، انقر على رمز Cloud Shell في شريط الأدوات العلوي الأيسر:
من المفترَض أن تستغرق عملية إدارة الحسابات والاتصال بالبيئة بضع لحظات فقط. عند الانتهاء، من المفترض أن يظهر لك شيء مثل هذا:
يتم تحميل هذه الآلة الافتراضية مزوّدة بكل أدوات التطوير التي ستحتاج إليها. وتوفّر هذه الشبكة دليلاً رئيسيًا دائمًا بسعة 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، انتقل إلى قائمة التنقل > التخزين في السحابة الإلكترونية > المتصفح: انقر على إنشاء حزمة:
قواعد تسمية الحِزم:
- لا تدرج معلومات حسّاسة في اسم الحزمة، لأن مساحة اسم الحزمة عامّة وظاهرة للجميع.
- يجب أن تحتوي أسماء الحزم على أحرف صغيرة وأرقام وشرطات (-) وشُرط سفلية (_) ونقاط (.). يجب تأكيد الأسماء التي تحتوي على نقاط.
- يجب أن تبدأ أسماء الحزم وتنتهي برقم أو حرف.
- يجب أن يتراوح عدد الأحرف في أسماء الحزم بين 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
حدِّد موقع العنصر وانقر على النقاط الثلاث على الجانب الأيسر وعدِّل الأذونات لتكون متاحة للجميع.
5- إنشاء جهاز موازنة الحمل
سننشئ بعد ذلك جهاز موازنة حمل HTTP.
انتقِل إلى الشبكات >> خدمات الشبكة >> موازنة الحمل >> إنشاء موازن حمولة البيانات >> جهاز موازنة حمل HTTP >> الاتصال بالإنترنت لأجهزةي الافتراضية >> جهاز موازنة الحمل لبروتوكول HTTP(S) الكلاسيكي
أولاً، أنشئ اسمًا لجهاز موازنة الحمل الذي ستنشئه.
إنشاء حزمة خلفية
أنشئ حزمة خلفية جديدة تمثّل الحزمة التي أنشأتها للتو واختَر تم تفعيل شبكة توصيل المحتوى (CDN) وذاكرة التخزين المؤقت للمحتوى الثابت. انقر فوق "Create" (إنشاء).
إنشاء قواعد المضيف والمسار
انتقِل إلى قواعد المضيف والمسار على الجانب الأيمن. سنستخدم قاعدة مضيف/مسار بسيطة ونُرسل أي طلب إلى الحزمة.
إنشاء إعداد الواجهة الأمامية
حدد تهيئة الواجهة الأمامية. بالنسبة إلى إعداد الواجهة الأمامية، سنستخدم بروتوكول HTTP (على الرغم من أنّ بروتوكول HTTPS سيعمل أيضًا إذا كانت لديك شهادة) وعنوان IP مؤقت ونتأكّد من أنّك اخترت شبكة المستوى المميّز.
انقر على "إنشاء".
الحصول على عنوان IP لجهاز موازنة الحمل
احصل على عنوان IP لجهاز موازنة الحمل من وحدة التحكّم من خلال النقر على اسم جهاز موازنة الحمل في قائمة أجهزة موازنة الحمل لمشروعك.
الاستعلام عن جهاز موازنة الحمل
بعد مرور بضع دقائق، حاوِل طلب البحث عن جهاز موازنة الحمل للعنصر الذي حمّلته. ستحتاج إلى عنوان 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
6- حذف العنصر من GCS
وبعد أن تمت تعبئة ذاكرة التخزين المؤقت، سنحذف الكائن من الحزمة ونؤكّد أنّنا نطبّق السياسة على ذاكرة التخزين المؤقت وليس على الخلفية.
انتقِل إلى Cloud Storage >>. %bucket name% >> الكائنات
اختَر الصورة واحذفها.
7. إنشاء سياسة أمان Edge لذاكرة التخزين المؤقت لشبكة توصيل المحتوى (CDN)
انتقِل إلى Network Security >> Cloud Armor والنقر على "سياسة إنشاء"
اختَر ما يلي:
نوع السياسة: سياسة أمان Edge
الإجراء التلقائي: رفض
طبِّق السياسة على حزمة الخلفية.
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 <
التحقيق في السجلّات
بعد ذلك، يمكنك مراجعة السجلات للاطلاع على سياسة أمان الحافة التي تم فرضها. انتقِل إلى العمليات >>. التسجيل >> مستكشف السجلات
أدخِل المقتطف أدناه في طلب البحث وانقر على "تشغيل".
resource.type:(http_load_balancer) AND jsonPayload.enforcedEdgeSecurityPolicy.name:(%SECURITY_POLICY_NAME%)
ملاحظة الاستجابة 403 وسياسة الأمان المفروضة
إزالة سياسة الأمان
عليك إزالة سياسة الأمان والاستعلام عن الكائن من ذاكرة التخزين المؤقت.
انتقِل إلى Network Security >> Cloud Armor >> %POLICY NAME% >> المستهدفة وإزالة الحزمة المستهدفة.
تأكيد إزالة السياسة
بعد مرور بضع دقائق، أرسِل لفًا آخر إلى المورد في حزمة مساحة التخزين. ستتلقى الرد 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% واختيار "حذف"
انتقِل إلى Cloud Storage واختَر الحزمة التي أنشأتها وانقر على "حذف".
انتقِل إلى الشبكات >> خدمات الشبكة >> موازنة الحمل اختَر جهاز موازنة الحمل الذي أنشأته وانقر على "حذف".
10. تهانينا!
لقد أكملت الدرس التطبيقي حول الترميز في Cloud Armor باستخدام Defending Edge cache.
النقاط التي تناولناها
- كيفية إعداد حزمة تخزين في السحابة الإلكترونية وجهاز موازنة الحمل في السحابة الإلكترونية المرتبط بها
- طريقة إنشاء سياسة أمان Cloud Armor Edge
- كيفية التحقّق من أنّ "سياسة أمان Edge" تعمل على النحو المنشود
الخطوات التالية
- جرِّب إعداد سياسة أمان Edge باستخدام نتيجة ذاكرة تخزين مؤقت من مورد Compute Engine.