محدود کردن نرخ با Cloud Armor

۱. مقدمه

تعادل بار HTTP(S) گوگل کلود در لبه شبکه گوگل در نقاط حضور (POP) گوگل در سراسر جهان مستقر شده است. ترافیک کاربر که به یک متعادل‌کننده بار HTTP(S) هدایت می‌شود، وارد POP نزدیک به کاربر می‌شود و سپس از طریق شبکه جهانی گوگل به نزدیکترین backend که ظرفیت کافی در دسترس دارد، متعادل می‌شود.

کلود آرمور سیستم تشخیص حملات انکار سرویس توزیع‌شده و فایروال برنامه‌های وب (WAF) گوگل است. کلود آرمور به طور تنگاتنگی با متعادل‌کننده بار HTTP گوگل کلود مرتبط است و به شما امکان می‌دهد ترافیک ورودی را برای درخواست‌های ناخواسته بررسی کنید. ویژگی محدودکننده نرخ این سرویس به شما امکان می‌دهد ترافیک منابع پشتیبان را بر اساس حجم درخواست محدود کنید و از مصرف منابع توسط ترافیک ناخواسته در شبکه ابر خصوصی مجازی (VPC) خود جلوگیری کنید.

در این آزمایش، شما یک متعادل‌کننده بار HTTP را با backendهای سراسری پیکربندی می‌کنید، همانطور که در نمودار زیر نشان داده شده است. سپس، Load Balancer را تحت فشار قرار می‌دهید و یک سیاست محدودکننده نرخ Cloud Armor اضافه می‌کنید تا ترافیک ورودی به منابع backend خود را محدود کنید.

2e1b99d22f4f32a.png

آنچه یاد خواهید گرفت

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

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

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

۲. تنظیمات و الزامات

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

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

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

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

شروع پوسته ابری

اگرچه می‌توان از راه دور و از طریق لپ‌تاپ، گوگل کلود را مدیریت کرد، اما در این آزمایشگاه کد، از گوگل کلود شل ، یک محیط خط فرمان که در فضای ابری اجرا می‌شود، استفاده خواهید کرد.

از کنسول GCP روی آیکون Cloud Shell در نوار ابزار بالا سمت راست کلیک کنید:

bce75f34b2c53987.png

آماده‌سازی و اتصال به محیط فقط چند لحظه طول می‌کشد. وقتی تمام شد، باید چیزی شبیه به این را ببینید:

f6ef2b5f13479f3a.png

این ماشین مجازی مجهز به تمام ابزارهای توسعه مورد نیاز شماست. این ماشین یک دایرکتوری خانگی دائمی ۵ گیگابایتی ارائه می‌دهد و روی فضای ابری گوگل اجرا می‌شود که عملکرد شبکه و احراز هویت را تا حد زیادی بهبود می‌بخشد. تمام کارهای شما در این آزمایشگاه را می‌توان به سادگی با یک مرورگر انجام داد.

قبل از اینکه شروع کنی

داخل 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

۳. قوانین فایروال را طوری پیکربندی کنید که ترافیک HTTP به سرورهای backend اجازه عبور دهد.

قوانین فایروال را طوری پیکربندی کنید که ترافیک HTTP از بررسی‌های سلامت Google Cloud و متعادل‌کننده بار به backendها اجازه عبور دهد.

ما از شبکه پیش‌فرض VPC که در پروژه شما ایجاد شده است استفاده خواهیم کرد. یک قانون فایروال ایجاد کنید تا ترافیک HTTP به backendها اجازه عبور دهد. بررسی‌های سلامت مشخص می‌کنند که کدام نمونه‌های متعادل‌کننده بار می‌توانند اتصالات جدید دریافت کنند. برای متعادل‌کننده بار HTTP، بررسی‌های سلامت نمونه‌های متعادل‌کننده بار شما از آدرس‌هایی در محدوده ۱۳۰.۲۱۱.۰.۰/۲۲ و ۳۵.۱۹۱.۰.۰/۱۶ می‌آیند. قوانین فایروال VPC شما باید این اتصالات را مجاز بدانند. همچنین، متعادل‌کننده‌های بار با backend در همان محدوده IP ارتباط برقرار می‌کنند.

  1. در کنسول ابری، به منوی ناوبری (Navigation menu ) بروید. منوی اصلی.png ) > شبکه VPC > فایروال .

dbdf491e6d7863f3.png

  1. به قوانین موجود در فایروال ICMP ، internal ، RDP و SSH توجه کنید. هر پروژه Google Cloud با شبکه پیش‌فرض و این قوانین فایروال شروع می‌شود.
  2. روی ایجاد قانون فایروال کلیک کنید.
  3. مقادیر زیر را تنظیم کنید، سایر مقادیر را به صورت پیش‌فرض باقی بگذارید:

ملک

مقدار (مقدار را تایپ کنید یا گزینه مشخص شده را انتخاب کنید)

نام

بررسی سلامت-اجازه-پیش‌فرض

شبکه

پیش‌فرض

اهداف

برچسب‌های هدف مشخص‌شده

برچسب‌های هدف

سرور http

فیلتر منبع

محدوده‌های IP

محدوده‌های IP منبع

۱۳۰.۲۱۱.۰.۰/۲۲، ۳۵.۱۹۱.۰.۰/۱۶

پروتکل‌ها و پورت‌ها

پروتکل‌ها و پورت‌های مشخص شده، و سپس TCP را بررسی کنید

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

روش دیگر، اگر از خط فرمان gcloud استفاده می‌کنید. دستور زیر را وارد کنید -

gcloud compute firewall-rules create default-allow-health-check --direction=INGRESS --priority=1000 --network=default --action=ALLOW --rules=tcp --source-ranges=130.211.0.0/22,35.191.0.0/16 --target-tags=http-server

۴. پیکربندی قالب‌های نمونه و ایجاد گروه‌های نمونه مدیریت‌شده

یک گروه نمونه مدیریت‌شده از یک الگوی نمونه برای ایجاد گروهی از نمونه‌های یکسان استفاده می‌کند. از این الگوها برای ایجاد backendهای متعادل‌کننده بار HTTP استفاده کنید.

پیکربندی الگوهای نمونه

یک الگوی نمونه، یک منبع API است که شما برای ایجاد نمونه‌های ماشین مجازی و گروه‌های نمونه مدیریت‌شده از آن استفاده می‌کنید. الگوهای نمونه، نوع ماشین، تصویر دیسک بوت، زیرشبکه، برچسب‌ها و سایر ویژگی‌های نمونه را تعریف می‌کنند. یک الگوی نمونه برای us-east1 و یکی برای europe-west1 ایجاد کنید.

  1. در کنسول ابری، به منوی ناوبری (Navigation menu ) بروید. منوی اصلی.png ) > موتور محاسبه > قالب‌های نمونه ، و سپس روی ایجاد قالب نمونه کلیک کنید.
  2. برای نام ، عبارت us-east1-template را تایپ کنید.
  3. برای سری ، N1 را انتخاب کنید.
  4. روی شبکه، دیسک‌ها، امنیت، مدیریت، مالکیت انحصاری کلیک کنید.

b60e2a44c3e4d50e.png

  1. به بخش مدیریت بروید -

ee57f20ce55298fd.png

  1. در زیر متادیتا ، روی افزودن مورد کلیک کنید و موارد زیر را مشخص کنید:

کلید

ارزش

آدرس اسکریپت راه‌اندازی

gs://cloud-training/gcpnet/httplb/startup.sh

  1. روی شبکه‌سازی کلیک کنید.
  2. مقادیر زیر را تنظیم کنید و سایر مقادیر را به صورت پیش‌فرض باقی بگذارید -

ملک

مقدار (مقدار را تایپ کنید یا گزینه مشخص شده را انتخاب کنید)

شبکه (زیر رابط‌های شبکه)

پیش‌فرض

زیرشبکه (زیر رابط‌های شبکه)

پیش‌فرض (us-east1)

برچسب‌های شبکه

سرور http

  1. روی ایجاد کلیک کنید.
  2. منتظر بمانید تا الگوی نمونه ایجاد شود.

اکنون با کپی کردن us-east1-template، یک الگوی نمونه دیگر برای subnet-b ایجاد کنید:

  1. روی us-east1-template کلیک کنید و سپس از بالا روی گزینه Copy کلیک کنید.
  2. برای نام ، عبارت europe-west1-template را تایپ کنید.
  3. روی شبکه، دیسک‌ها، امنیت، مدیریت، مالکیت انحصاری کلیک کنید.
  4. روی شبکه‌سازی کلیک کنید.
  5. در قسمت رابط‌های شبکه، رابط پیش‌فرض را ویرایش کنید. برای زیرشبکه ، پیش‌فرض (europe-west1) را انتخاب کنید.
  6. روی ایجاد کلیک کنید.

ایجاد گروه‌های نمونه مدیریت‌شده

یک گروه نمونه مدیریت‌شده در us-east1 و یکی در europe-west1 ایجاد کنید.

  1. همچنان در Compute Engine ، روی Instance groups در منوی سمت چپ کلیک کنید.

72319de055de3942.png

  1. روی «ایجاد گروه نمونه» کلیک کنید. «گروه نمونه مدیریت‌شده جدید (بدون وضعیت)» را انتخاب کنید.
  2. مقادیر زیر را تنظیم کنید، سایر مقادیر را به صورت پیش‌فرض باقی بگذارید:

ملک

مقدار (مقدار را تایپ کنید یا گزینه مشخص شده را انتخاب کنید)

نام

us-east1-mig

مکان

مناطق چندگانه

منطقه

ایالات متحده-شرق1

الگوی نمونه

قالب us-east1

مقیاس‌بندی خودکار > سیاست مقیاس‌بندی خودکار > کلیک روی آیکون مداد > نوع متریک

میزان استفاده از پردازنده

هدف قرار دادن استفاده از پردازنده

۸۰، روی «انجام شد» کلیک کنید.

دوره خنک سازی

۴۵

حداقل تعداد موارد

۱

حداکثر تعداد موارد

۵

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

حالا همین روال را برای ایجاد یک گروه نمونه دوم برای europe-west1-mig در europe-west1 تکرار کنید:

  1. روی ایجاد گروه نمونه کلیک کنید.
  2. مقادیر زیر را تنظیم کنید، سایر مقادیر را به صورت پیش‌فرض باقی بگذارید:

ملک

مقدار (مقدار را تایپ کنید یا گزینه مشخص شده را انتخاب کنید)

نام

اروپا-غرب-1-میگ

مکان

مناطق چندگانه

منطقه

اروپا-غرب1

الگوی نمونه

الگوی اروپای غربی ۱

مقیاس‌بندی خودکار > سیاست مقیاس‌بندی خودکار > کلیک روی آیکون مداد > نوع متریک

میزان استفاده از پردازنده

هدف قرار دادن استفاده از پردازنده

۸۰، روی «انجام شد» کلیک کنید.

دوره خنک سازی

۴۵

حداقل تعداد موارد

۱

حداکثر تعداد موارد

۵

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

۵. پیکربندی متعادل‌کننده بار HTTP

HTTP Load Balancer را طوری پیکربندی کنید که ترافیک بین دو backend ( us-east1-mig در us-east1 و europe-west1-mig در europe-west1) را همانطور که در نمودار شبکه نشان داده شده است، متعادل کند:

2e1b99d22f4f32a.png

پیکربندی را شروع کنید

  1. در کنسول ابری، روی منوی ناوبری (Navigation menu ) کلیک کنید. منوی اصلی.png ) > روی سرویس‌های شبکه > متعادل‌سازی بار کلیک کنید، و سپس روی ایجاد متعادل‌کننده بار کلیک کنید.
  2. در زیر بخش HTTP(S) Load Balancing ، روی شروع پیکربندی کلیک کنید.

8197d8f041e8eafd.png

  1. گزینه‌ی «از اینترنت تا ماشین‌های مجازی من» ، «متعادل‌کننده‌ی بار کلاسیک HTTP(S)» را انتخاب کنید و روی «ادامه» کلیک کنید.
  2. نام را روی http-lb تنظیم کنید.

پیکربندی بخش پشتی

سرویس‌های بک‌اند، ترافیک ورودی را به یک یا چند بک‌اند متصل هدایت می‌کنند. هر بک‌اند از یک گروه نمونه و فراداده‌های ظرفیت سرویس‌دهی اضافی تشکیل شده است.

  1. روی پیکربندی Backend کلیک کنید.
  2. برای سرویس‌های بک‌اند و باکت‌های بک‌اند ، روی ایجاد یک سرویس بک‌اند کلیک کنید.
  3. مقادیر زیر را تنظیم کنید، سایر مقادیر را به صورت پیش‌فرض باقی بگذارید:

ملک

مقدار (گزینه را مطابق با موارد مشخص شده انتخاب کنید)

نام

http-backend

گروه نمونه

us-east1-mig

شماره پورت‌ها

۸۰

حالت تعادل

نرخ

حداکثر RPS

۵۰ (برای هر مورد)

ظرفیت

۱۰۰

  1. روی انجام شد کلیک کنید.
  2. روی افزودن بخش پشتیبانی کلیک کنید.
  3. مقادیر زیر را تنظیم کنید، سایر مقادیر را به صورت پیش‌فرض باقی بگذارید:

ملک

مقدار (گزینه را مطابق با موارد مشخص شده انتخاب کنید)

گروه نمونه

اروپا-غرب-1-میگ

شماره پورت‌ها

۸۰

حالت تعادل

استفاده

حداکثر استفاده از بک‌اند

۸۰

ظرفیت

۱۰۰

  1. روی انجام شد کلیک کنید.
  2. برای بررسی سلامت ، ایجاد یک بررسی سلامت را انتخاب کنید.

۱۹۹۲۳۹۸۰۶۵۷۷ceac.png

  1. مقادیر زیر را تنظیم کنید، سایر مقادیر را به صورت پیش‌فرض باقی بگذارید:

ملک

مقدار (گزینه را مطابق با موارد مشخص شده انتخاب کنید)

نام

http-health-check

پروتکل

تی سی پی

بندر

۸۰

20f7af9fce140475.png

  1. روی ذخیره کلیک کنید.
  2. کادر فعال کردن ثبت وقایع را علامت بزنید.
  3. نرخ نمونه‌برداری را روی ۱ تنظیم کنید:

dab4b15c13917786.png

  1. برای ایجاد سرویس backend روی Create کلیک کنید.

2db64614f855f239.png

پیکربندی ظاهر (frontend)

قوانین میزبان و مسیر، نحوه هدایت ترافیک شما را تعیین می‌کنند. برای مثال، می‌توانید ترافیک ویدیو را به یک backend و ترافیک استاتیک را به backend دیگر هدایت کنید. با این حال، شما در این آزمایش، قوانین میزبان و مسیر را پیکربندی نمی‌کنید.

  1. روی پیکربندی Frontend کلیک کنید.
  2. موارد زیر را مشخص کنید و سایر مقادیر را به صورت پیش‌فرض باقی بگذارید:

ملک

مقدار (مقدار را تایپ کنید یا گزینه مشخص شده را انتخاب کنید)

پروتکل

اچ‌تی‌پی

نسخه آی‌پی

آی‌پی‌وی۴

آدرس آی‌پی

زودگذر

بندر

۸۰

  1. روی انجام شد کلیک کنید.
  2. روی افزودن آدرس IP و پورت Frontend کلیک کنید.
  3. موارد زیر را مشخص کنید و سایر مقادیر را به صورت پیش‌فرض باقی بگذارید:

ملک

مقدار (مقدار را تایپ کنید یا گزینه مشخص شده را انتخاب کنید)

پروتکل

اچ‌تی‌پی

نسخه آی‌پی

آی‌پی‌وی۶

آدرس آی‌پی

زودگذر

بندر

۸۰

  1. روی انجام شد کلیک کنید.

بررسی و ایجاد متعادل‌کننده بار HTTP

  1. روی بررسی و نهایی کردن کلیک کنید.

2c88715aa5f22800.png

  1. سرویس‌های Backend و Frontend را بررسی کنید.

b2fffef90be309f0.png

  1. روی ایجاد کلیک کنید.
  2. صبر کنید تا متعادل‌کننده بار ایجاد شود.
  3. روی نام متعادل‌کننده بار ( http-lb ) کلیک کنید.
  4. برای کار بعدی، آدرس‌های IPv4 و IPv6 متعادل‌کننده بار را یادداشت کنید. به ترتیب با [LB_IP_v4] و [LB_IP_v6] به آنها اشاره خواهد شد.

۶. متعادل‌کننده بار HTTP را آزمایش کنید

اکنون که متعادل‌کننده بار HTTP را برای backend های خود ایجاد کرده‌اید، تأیید کنید که ترافیک به سرویس backend ارسال می‌شود.

دسترسی به متعادل‌کننده بار HTTP

برای آزمایش دسترسی IPv4 به متعادل‌کننده بار HTTP، یک تب جدید در مرورگر خود باز کنید و به آدرس http://[LB_IP_v4] بروید. مطمئن شوید که [LB_IP_v4] را با آدرس IPv4 متعادل‌کننده بار جایگزین می‌کنید.

اگر آدرس IPv6 محلی دارید، با رفتن به آدرس http://[LB_IP_v6]، آدرس IPv6 مربوط به HTTP Load Balancer را امتحان کنید. حتماً [LB_IP_v6] را با آدرس IPv6 مربوط به Load Balancer جایگزین کنید.

812d1fc75d9dfb3c.png

تست استرس متعادل‌کننده بار HTTP

یک ماشین مجازی جدید ایجاد کنید تا با استفاده از siege، بار روی HTTP Load Balancer را شبیه‌سازی کند. سپس، بررسی کنید که آیا ترافیک در هر دو سرور backend در زمان بار زیاد، متعادل است یا خیر.

  1. در کنسول، به منوی ناوبری (Navigation menu ) بروید. منوی اصلی.png ) > موتور محاسباتی > نمونه‌های ماشین مجازی .
  2. روی ایجاد نمونه کلیک کنید.
  3. مقادیر زیر را تنظیم کنید، سایر مقادیر را به صورت پیش‌فرض باقی بگذارید:

ملک

مقدار (مقدار را تایپ کنید یا گزینه مشخص شده را انتخاب کنید)

نام

محاصره-vm

منطقه

غرب آمریکا1

منطقه

us-west1-c

سری

ن۱

  1. روی ایجاد کلیک کنید.
  2. منتظر بمانید تا نمونه siege-vm ایجاد شود.
  3. برای siege-vm ، روی SSH کلیک کنید تا ترمینال اجرا شود و اتصال برقرار شود.
  4. برای نصب siege دستور زیر را اجرا کنید:
sudo apt-get -y install siege
  1. برای ذخیره آدرس IPv4 مربوط به HTTP Load Balancer در یک متغیر محیطی، دستور زیر را اجرا کنید و [LB_IP_v4] را با آدرس IPv4 جایگزین کنید:
export LB_IP=[LB_IP_v4]
  1. برای شبیه‌سازی بارگذاری، دستور زیر را اجرا کنید:
siege -c 250 http://$LB_IP

خروجی باید به این شکل باشد ( کپی نکنید؛ این یک نمونه خروجی است ):

New configuration template added to /home/student/.siege
Run siege -C to view the current settings in that file
** SIEGE 4.0.4
** Preparing 250 concurrent users for battle.
The server is now under siege...
  1. در کنسول ابری، روی منوی ناوبری (Navigation menu ) کلیک کنید. منوی اصلی.png ) ، روی سرویس‌های شبکه > متعادل‌سازی بار کلیک کنید.
  2. روی http-lb کلیک کنید.
  3. روی برگه نظارت کلیک کنید. ترافیک بین آمریکای شمالی و دو سرور پشتی را به مدت ۲ تا ۳ دقیقه نظارت کنید.

در ابتدا، ترافیک فقط باید به سمت us-east1-mig هدایت شود، اما با افزایش RPS، ترافیک به سمت europe-west1-mig نیز هدایت می‌شود.

ead1e6d5c1f4cc4b.png

این نشان می‌دهد که به طور پیش‌فرض، ترافیک به نزدیکترین backend ارسال می‌شود، اما اگر بار بسیار زیاد باشد، می‌توان ترافیک را در backendها توزیع کرد.

e5c6a657706c832c.png

  1. به ترمینال SSH مربوط به siege-vm برگردید.
  2. برای متوقف کردن محاصره، CTRL+C را فشار دهید.

۷. ایجاد سیاست محدودکننده نرخ Cloud Armor

در این بخش، شما با استفاده از Cloud Armor و با تنظیم یک سیاست محدودکننده نرخ، مانع از دسترسی ماشین مجازی siege-vm به متعادل‌کننده بار HTTP خواهید شد.

  1. در Cloud Shell (برای دستورالعمل‌های نحوه استفاده از Cloud Shell به « شروع Cloud Shell » در بخش « تنظیمات و الزامات » مراجعه کنید)، از طریق gcloud سیاست امنیتی ایجاد کنید:
gcloud compute security-policies create rate-limit-siege \
    --description "policy for rate limiting"
  1. سپس، یک قانون محدودکننده نرخ اضافه کنید:
gcloud beta compute security-policies rules create 100 \
    --security-policy=rate-limit-siege     \
    --expression="true" \
    --action=rate-based-ban                   \
    --rate-limit-threshold-count=50           \
    --rate-limit-threshold-interval-sec=120   \
    --ban-duration-sec=300           \
    --conform-action=allow           \
    --exceed-action=deny-404         \
    --enforce-on-key=IP
  1. سیاست امنیتی را به سرویس backend http-backend پیوست کنید:
gcloud compute backend-services update http-backend \
    --security-policy rate-limit-siege –-global
  1. در کنسول، به منوی ناوبری > امنیت شبکه > ابر زرهی بروید.
  2. کلیک کنید ، محدودیت نرخ، محاصره. سیاست شما باید شبیه به موارد زیر باشد:

8be87aa31c2ed74e.png

سیاست امنیتی را تأیید کنید

  1. به ترمینال SSH مربوط به siege-vm برگردید.
  2. یک curl روی IP مربوط به LB اجرا کنید تا مطمئن شوید که هنوز می‌توانید به آن متصل شوید، باید پاسخ ۲۰۰ دریافت کنید.
curl http://$LB_IP
  1. در ترمینال SSH مربوط به siege-vm، برای شبیه‌سازی بارگذاری، دستور زیر را اجرا کنید:
siege -c 250 http://$LB_IP

خروجی باید به این شکل باشد (کپی نکنید؛ این یک نمونه خروجی است):

** SIEGE 4.0.4
** Preparing 250 concurrent users for battle.
The server is now under siege...
  1. برای تعیین اینکه آیا این ترافیک نیز مسدود شده است یا خیر، گزارش‌های مربوط به سیاست‌های امنیتی را بررسی کنید.
  2. در کنسول، به منوی ناوبری > امنیت شبکه > ابر زرهی بروید.
  3. روی محدودیت نرخ محاصره کلیک کنید.
  4. روی گزارش‌ها کلیک کنید.

f8be7c01c3d7c8f5.png

  1. روی مشاهده گزارش‌های خط‌مشی کلیک کنید.
  2. در صفحه ثبت وقایع (Logging)، مطمئن شوید که تمام متن موجود در پیش‌نمایش کوئری (Query preview) را پاک کرده‌اید.
  3. منبع را به عنوان Cloud HTTP Load Balancer > http-lb-forwarding-rule > http-lb انتخاب کنید و سپس روی Add کلیک کنید. روش دیگر، در زیر کوئری MQL (زبان کوئری مانیتورینگ) آمده است، می‌توانید آن را کپی کرده و در ویرایشگر کوئری پیست کنید -
resource.type="http_load_balancer" resource.labels.forwarding_rule_name="http-lb-forwarding-rule" resource.labels.url_map_name="http-lb"
  1. حالا روی اجرای کوئری کلیک کنید.
  2. یک ورودی گزارش را در نتایج جستجو گسترش دهید.
  3. httpRequest را باز کنید. درخواست باید از آدرس IP مربوط به siege-vm باشد. در غیر این صورت، یک ورودی لاگ دیگر را باز کنید.
  4. jsonPayload را باز کنید.
  5. سیاست امنیتی اجباری را گسترش دهید.

151f575ba7b3bde9.png

توجه داشته باشید که تابع configureAction روی RATE_BASED_BAN با نام rate-limit-siege تنظیم شده است.

  1. به عنوان یک بررسی اضافی، به منوی ناوبری ( بروید منوی اصلی.png ) ، روی سرویس‌های شبکه > متعادل‌سازی بار کلیک کنید. روی http-lb کلیک کنید. روی برگه نظارت (Monitoring) کلیک کنید.

ab9a8a66573a5ebd.png

شما می‌توانید ترافیک محاصره را در نمودارها مشاهده کنید. همچنین متوجه خواهید شد که ترافیک با نرخ محدود به backend نمی‌رسد و توسط سیاست Cloud Armor مسدود شده است.

تبریک! شما این آزمایش در مورد محدود کردن نرخ با Cloud Armor را به پایان رساندید.

©2020 Google LLC تمامی حقوق محفوظ است. گوگل و لوگوی گوگل علائم تجاری Google LLC هستند. سایر نام‌های شرکت‌ها و محصولات ممکن است علائم تجاری شرکت‌های مربوطه باشند که با آنها مرتبط هستند.

۸. تمیز کردن آزمایشگاه

  1. به Network Security >> Cloud Armor >> %POLICY NAME% بروید و گزینه delete را انتخاب کنید -

eeafa7ca11c4c7.png

  1. به Networking >> Network services >> Load Balancing بروید. متعادل‌کننده‌ی بار (load balancer) که ایجاد کرده‌اید را انتخاب کنید و روی حذف کلیک کنید.

۳۸۸۶۴۵۸f۲۵cfbd۳۶.png

سرویس backend و بررسی سلامت را به عنوان منابع اضافی برای حذف انتخاب کنید -

a0193e91b2f4cb6f.png

  1. به منوی ناوبری بروید ( منوی اصلی.png ) > موتور محاسبه > گروه‌های نمونه. هر دو گروه نمونه‌های مدیریت‌شده را انتخاب کرده و روی حذف کلیک کنید -

5027d56977997f70.png

با تایپ کردن "delete" در کادر متن، حذف را تأیید کنید.

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

  1. از پنل سمت چپ به سراغ قالب‌های نمونه بروید**.** هر دو قالب نمونه را انتخاب کرده و روی حذف کلیک کنید -

8d88abacd32c11ce.png

  1. از پنل سمت چپ به نمونه‌های ماشین مجازی بروید**.** علامت سه نقطه کنار نمونه ماشین مجازی siege-vm را انتخاب کرده و روی حذف کلیک کنید.

2b58ab43695836e9.png

  1. به منوی ناوبری بروید ( منوی اصلی.png ) > شبکه VPC > فایروال . گزینه default-allow-health-check را انتخاب کرده و روی حذف کلیک کنید -

۵۶۱d5e771d36d85.png

۹. تبریک می‌گویم!

شما با موفقیت محدودیت سرعت را با Cloud Armor پیاده‌سازی کردید. شما یک متعادل‌کننده بار HTTP را با backend در us-east1 و europe-west1 پیکربندی کردید. سپس، متعادل‌کننده بار را با یک ماشین مجازی تحت فشار آزمایش کردید و آدرس IP را از طریق محدود کردن سرعت با Cloud Armor در لیست رد کردید. شما توانستید گزارش‌های سیاست امنیتی را بررسی کنید تا دلیل مسدود شدن ترافیک را شناسایی کنید.

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

  • نحوه تنظیم قالب‌های نمونه و ایجاد گروه‌های نمونه مدیریت‌شده.
  • نحوه تنظیم متعادل کننده بار HTTP.
  • نحوه ایجاد سیاست محدودکننده نرخ Cloud Armor.
  • چگونه می‌توان تأیید کرد که سیاست محدود کردن نرخ طبق برنامه عمل می‌کند.

مراحل بعدی

  • سعی کنید یک سیاست محدودکننده نرخ (Rate Limiting Policy) بر اساس محدوده IP منبع تنظیم کنید. نمونه دستور زیر -
gcloud alpha compute security-policies rules create 105 \
    --security-policy sec-policy     \
    --src-ip-ranges "1.2.3.0/24"     \
    --action throttle                \
    --rate-limit-threshold-count 100 \
    --rate-limit-threshold-interval-sec 60 \
    --conform-action allow           \
    --exceed-action deny-429         \
    --enforce-on-key IP
  • سعی کنید یک سیاست محدودکننده نرخ بر اساس کد منطقه تنظیم کنید. نمونه دستور زیر -
gcloud alpha compute security-policies rules create 101 \
    --security-policy sec-policy     \
    --expression "origin.region_code == 'US'" \
    --action rate-based-ban                 \
    --rate-limit-threshold-count 10         \
    --rate-limit-threshold-interval-sec 60  \
    --ban-duration-sec 300           \
    --ban-threshold-count 1000       \
    --ban-threshold-interval-sec 600 \
    --conform-action allow           \
    --exceed-action deny-403         \
    --enforce-on-key IP