دفاع از حافظه پنهان لبه با Cloud Armor

1. مقدمه

خط‌مشی‌های امنیتی Google Cloud Armor Edge به شما این امکان را می‌دهد که دسترسی به اشیاء ذخیره‌شده را در Google Cloud CDN و Google Cloud Storage محدود کنید. نمونه‌هایی از دلایل انجام این کار عبارتند از اطمینان از اینکه کاربران شما به اشیاء موجود در سطل‌های ذخیره‌سازی از مناطق جغرافیایی محدود دسترسی ندارند یا اطمینان از اینکه توزیع رسانه شما در مناطق جغرافیایی که مجوز انجام آن را دارید فیلتر می‌شود.

در این آزمایشگاه ما یک سطل GCS ایجاد می کنیم، یک تصویر را در آن آپلود می کنیم، آن را به یک متعادل کننده بار متصل می کنیم و سپس سیاست های Cloud CDN و Edge Security را روی آن فعال می کنیم.

چیزی که یاد خواهید گرفت

  • نحوه راه اندازی یک سطل ذخیره سازی ابری با محتوای کش
  • نحوه ایجاد یک خط مشی امنیتی Edge برای محافظت از محتوا
  • چگونه می توان تأیید کرد که خط مشی امنیتی Edge همانطور که انتظار می رود کار می کند

آنچه شما نیاز دارید

  • شبکه های اولیه و دانش HTTP
  • دانش اولیه خط فرمان یونیکس/لینوکس

2. راه اندازی و الزامات

تنظیم محیط خود به خود

  1. به Google Cloud Console وارد شوید و یک پروژه جدید ایجاد کنید یا از یک موجود استفاده مجدد کنید. اگر قبلاً یک حساب Gmail یا Google Workspace ندارید، باید یک حساب ایجاد کنید .

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

  • نام پروژه نام نمایشی برای شرکت کنندگان این پروژه است. این یک رشته کاراکتری است که توسط API های Google استفاده نمی شود و می توانید هر زمان که بخواهید آن را به روز کنید.
  • شناسه پروژه باید در تمام پروژه‌های Google Cloud منحصربه‌فرد باشد و تغییرناپذیر باشد (پس از تنظیم نمی‌توان آن را تغییر داد). Cloud Console به طور خودکار یک رشته منحصر به فرد تولید می کند. معمولاً برای شما مهم نیست که چیست. در اکثر کدها، باید به شناسه پروژه ارجاع دهید (و معمولاً به عنوان PROJECT_ID شناخته می‌شود)، بنابراین اگر آن را دوست ندارید، یک نمونه تصادفی دیگر ایجاد کنید، یا می‌توانید شناسه پروژه را امتحان کنید و ببینید در دسترس است. سپس پس از ایجاد پروژه "یخ زده" می شود.
  • یک مقدار سوم وجود دارد، یک شماره پروژه که برخی از API ها از آن استفاده می کنند. در مورد هر سه این مقادیر در مستندات بیشتر بیاموزید.
  1. در مرحله بعد، برای استفاده از منابع Cloud/APIها، باید صورتحساب را در کنسول Cloud فعال کنید . اجرا کردن از طریق این کد لبه نباید هزینه زیادی داشته باشد، اگر اصلاً باشد. برای اینکه منابع را خاموش کنید تا بیش از این آموزش متحمل صورتحساب نشوید، دستورالعمل‌های «پاک‌سازی» را که در انتهای Codelab یافت می‌شود دنبال کنید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان 300 دلاری هستند.

Cloud Shell را راه اندازی کنید

در حالی که Google Cloud را می توان از راه دور از لپ تاپ شما کار کرد، در این کد لبه از Google Cloud Shell استفاده خواهید کرد، یک محیط خط فرمان که در Cloud اجرا می شود.

از کنسول GCP روی نماد 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

API ها را فعال کنید

تمام خدمات لازم را فعال کنید

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

3. یک سطل ذخیره سازی ابری ایجاد کنید

در Cloud Console، به منوی پیمایش > Cloud Storage > Browser بروید. روی ایجاد سطل کلیک کنید:

baf3d3c74282ecba.png

قوانین نامگذاری سطل:

  • اطلاعات حساس را در نام سطل وارد نکنید، زیرا فضای نام سطل جهانی است و برای عموم قابل مشاهده است.
  • نام سطل باید فقط شامل حروف کوچک، اعداد، خط تیره (-)، زیرخط (_) و نقطه (.) باشد. نام‌های حاوی نقطه به تأیید نیاز دارند.
  • نام سطل باید با یک عدد یا حرف شروع و پایان یابد.
  • نام سطل باید شامل 3 تا 63 کاراکتر باشد. نام های حاوی نقطه می توانند حداکثر 222 نویسه داشته باشند، اما هر جزء جدا شده از نقطه نمی تواند بیش از 63 کاراکتر باشد.
  • نام سطل را نمی توان به عنوان یک آدرس IP در نماد اعشاری نقطه چین نشان داد (به عنوان مثال، 192.168.5.4).
  • نام سطل نمی تواند با پیشوند "goog" شروع شود.
  • نام سطل نمی تواند حاوی "google" یا بستن غلط املایی "google" باشد.
  • همچنین، برای انطباق با DNS و سازگاری در آینده، نباید از زیرخط (_) استفاده کنید یا یک نقطه در مجاورت نقطه یا خط تیره دیگری داشته باشید. به عنوان مثال، ".." یا "-." یا ".-" در نام های DNS معتبر نیستند.

روی ادامه کلیک کنید.

نوع مکان: منطقه

مکان: منطقه ای دور از خود را انتخاب کنید

روی ادامه کلیک کنید.

کلاس ذخیره سازی پیش فرض: استاندارد

روی ادامه کلیک کنید.

تیک گزینه Enforce public access prevention on this bucket را در قسمت Prevent public access بردارید .

Fine Grained را در قسمت Access Control انتخاب کنید.

روی ادامه کلیک کنید.

هنگامی که سطل خود را پیکربندی کردید، روی CREATE کلیک کنید:

همین - شما به تازگی یک سطل فضای ذخیره سازی ابری ایجاد کرده اید!

4. یک شی را در سطل خود آپلود کنید

اکنون یک شی را در یک سطل آپلود کنید.

ابتدا این تصویر را در یک نمونه موقت در Cloud Shell دانلود کنید. در مثال زیر از تصویر گوگل از صفحه اصلی گوگل استفاده شده است.

از 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. یک Load Balancer ایجاد کنید

در مرحله بعد ما یک متعادل کننده بار HTTP ایجاد می کنیم.

پیمایش به Networking >> خدمات شبکه >> Load Balancing >> ایجاد Load Balancer >> HTTP Load Balancer >> اینترنت به ماشین های مجازی من >> Load Balancer کلاسیک HTTP(S)

ابتدا یک نام برای متعادل کننده بار که ایجاد می کنید ایجاد کنید.

ایجاد سطل باطنی

یک سطل باطنی جدید ایجاد کنید که همان سطلی است که به تازگی ایجاد کرده اید و Enabled CDN و Cache Static Content را انتخاب کنید. روی ایجاد کلیک کنید.

ed392a56538d499e.png

قوانین میزبان و مسیر ایجاد کنید

در سمت چپ به Host and path rules بروید. ما از یک قانون میزبان/مسیر ساده استفاده می کنیم و هر درخواستی را به سطل ارسال می کنیم.

7c1a664e0d1f15b0.png

پیکربندی frontend را ایجاد کنید

پیکربندی frontend را انتخاب کنید. برای پیکربندی frontend ما از HTTP (اگرچه HTTPS نیز در صورت داشتن گواهی کار می‌کند) و یک آدرس IP زودگذر استفاده می‌کنیم و مطمئن می‌شویم که شبکه لایه برتر را انتخاب کرده‌اید.

2597a5e63d618622.png

روی ایجاد کلیک کنید

دریافت Load Balancer IP

با کلیک بر روی نام Load Balancer در لیست Load Balancer برای پروژه خود، IP Load Balancer را از کنسول دریافت کنید.

9b757362d806e835.png

Load Balancer را جویا شوید

پس از چند دقیقه، سعی کنید از بارگذاری متعادل کننده شیئی که آپلود کرده اید پرس و جو کنید. شما به آدرس 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 یا Load Balancing Monitoring ارائه می‌شود. شما باید بتوانید به نسبت ضربه 100% نزدیک شوید. اگر نیاز به اجرای چند پرس و جو دارید می توانید موارد زیر را انجام دهید

از ترمینال

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

محتوای ارائه شده توسط Cloud CDN را تأیید کنید

با پیمایش به Network Services >> CDN تأیید کنید که در حال ارائه ترافیک از CDN هستید

a52d0ba4c084aa05.png

6. Object را از GCS حذف کنید

اکنون که حافظه پنهان پر شده است، بیایید شی را از سطل حذف کنیم، و تاکید می کنیم که سیاست را در کش اعمال می کنیم و نه پشتیبان.

به Cloud Storage >> %bucket name%>> اشیا بروید

تصویر را انتخاب کنید و آن را حذف کنید.

a1cc1bb9a0ff41df.png

7. خط مشی امنیتی Edge را برای کش CDN خود ایجاد کنید

به Network Security >> Cloud Armor بروید و روی ایجاد خط مشی کلیک کنید

موارد زیر را انتخاب کنید

نوع خط مشی: سیاست امنیتی لبه

اقدام پیش فرض: انکار

7a12374be33026fd.png

b7c4efc091272358.png

77ddbcddd07b65d2.png

سیاست را در سطل پشتیبان خود اعمال کنید.

8. اعتبار سنجی خط مشی امنیتی لبه

اکنون که یک خط‌مشی امنیتی 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
<

لاگ ها را بررسی کنید

در مرحله بعد، می‌توانید گزارش‌ها را بررسی کنید تا سیاست امنیتی لبه‌های اجرایی را ببینید. به Operations >> Logging >> Logs Explorer بروید

قطعه زیر را در کوئری وارد کنید و روی run کلیک کنید

14972af5ae6c182a.png

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

به پاسخ 403 و سیاست امنیتی اجباری توجه کنید

cddc48ca93ad79ca.png

سیاست امنیتی را حذف کنید

سیاست امنیتی را حذف کنید و شی را از حافظه پنهان جستجو کنید.

به امنیت شبکه >> 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. پاکسازی آزمایشگاهی

به امنیت شبکه >> Cloud Armor >> %POLICY NAME% بروید و حذف را انتخاب کنید

21eefb5f375e8fee.png

به Cloud Storage بروید، سطلی را که ایجاد کردید انتخاب کنید و روی حذف کلیک کنید

ef2fa8d45c1d3452.png

به Networking >> Services Network >> Load Balancing بروید. متعادل کننده باری که ایجاد کردید را انتخاب کنید و روی delete کلیک کنید.

ee2e78c10f4104eb.png

10. تبریک می گویم!

شما حافظه پنهان Defending Edge را با نرم افزار Cloud Armor کامل کرده اید!

آنچه را پوشش داده ایم

  • نحوه راه اندازی یک سطل ذخیره سازی ابری و متعادل کننده بار ابری مرتبط
  • نحوه ایجاد یک سیاست امنیتی Cloud Armor Edge
  • چگونه می توان تأیید کرد که خط مشی امنیتی Edge همانطور که در نظر گرفته شده است کار می کند.

مراحل بعدی

  • سعی کنید یک خط مشی امنیتی Edge را با یک ضربه کش از یک منبع موتور محاسباتی تنظیم کنید.