Cloud Armor NamedIP List

۱. مقدمه

فهرست‌های آدرس IP نامگذاری‌شده‌ی Google Cloud Armor به شما امکان می‌دهد فهرست‌هایی از آدرس‌های IP و محدوده‌های IP که توسط ارائه‌دهندگان شخص ثالث نگهداری می‌شوند را مرجع قرار دهید. می‌توانید فهرست‌های آدرس IP نامگذاری‌شده را در یک سیاست امنیتی پیکربندی کنید. لازم نیست هر آدرس IP یا محدوده IP را به صورت دستی مشخص کنید.

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

  • مزایای لیست آدرس‌های IP نامگذاری شده توسط Cloud Armor
  • ایجاد سیاست امنیتی Cloud Armor
  • لیست آدرس‌های IP نامگذاری شده توسط Cloud Armor را مستقر کنید
  • ایجاد متعادل‌کننده بار سراسری
  • ایجاد گروه نمونه مدیریت‌شده با برنامه آزمایشی نمونه

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

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

۲. اجازه دادن به ترافیک فقط از ارائه دهندگان مجاز شخص ثالث

یک مورد استفاده معمول، ایجاد یک لیست مجاز شامل آدرس‌های IP یک شریک شخص ثالث مجاز است تا اطمینان حاصل شود که فقط ترافیکی که از این شریک می‌آید می‌تواند به متعادل‌کننده بار و backendها دسترسی داشته باشد.

برای مثال، ارائه‌دهندگان CDN باید محتوا را در فواصل منظم از سرورهای مبدا دریافت کنند تا آنها را در حافظه‌های پنهان خود توزیع کنند. همکاری با گوگل، ارتباط مستقیمی بین ارائه‌دهندگان CDN و لبه شبکه گوگل فراهم می‌کند. کاربران CDN در Google Cloud می‌توانند از این ارتباط مستقیم در طول دریافت‌های مبدا استفاده کنند. در این حالت، کاربر CDN ممکن است بخواهد یک سیاست امنیتی ایجاد کند که فقط به ترافیک ورودی از آن ارائه‌دهنده CDN خاص اجازه دهد.

در این مثال، یک ارائه‌دهنده CDN لیست آدرس‌های IP خود را با آدرس‌های 23.235.32.0/20، 43.249.72.0/22، ⋯، منتشر می‌کند. کاربر CDN یک قانون امنیتی را پیکربندی می‌کند که فقط به ترافیک ورودی از این آدرس‌های IP اجازه عبور می‌دهد. در نتیجه، دو نقطه دسترسی ارائه‌دهنده CDN (23.235.32.10 و 43.249.72.10) مجاز هستند و بنابراین ترافیک آنها مجاز است. ترافیک از نقطه دسترسی غیرمجاز 198.51.100.1 مسدود می‌شود.

۲۷۲۴۳e۷۲ee۲۵ee۱۶.png

آدرس IP نامگذاری شده توسط Google Cloud Armor

۳. ساده‌سازی پیکربندی و مدیریت با استفاده از قوانین از پیش تنظیم‌شده

ارائه دهندگان CDN اغلب از آدرس‌های IP شناخته شده‌ای استفاده می‌کنند که بسیاری از کاربران CDN به استفاده از آنها نیاز دارند. این لیست‌ها با گذشت زمان تغییر می‌کنند، زیرا ارائه دهندگان آدرس‌های IP را اضافه، حذف و به‌روزرسانی می‌کنند.

استفاده از یک لیست آدرس IP نامگذاری شده در یک قانون سیاست امنیتی، فرآیند پیکربندی و مدیریت آدرس‌های IP را ساده می‌کند، زیرا Google Cloud Armor به طور خودکار اطلاعات را از ارائه دهندگان CDN به صورت روزانه همگام‌سازی می‌کند. این امر فرآیند زمان‌بر و مستعد خطای نگهداری دستی یک لیست آدرس IP بزرگ را از بین می‌برد.

ارائه دهندگان لیست آدرس IP

ارائه دهندگان لیست آدرس IP در جدول زیر توسط Google Cloud Armor پشتیبانی می‌شوند. اینها ارائه دهندگان CDN هستند که با Google همکاری کرده‌اند. لیست آدرس‌های IP آنها از طریق URL های عمومی جداگانه منتشر می‌شود.

این شرکا لیست‌های جداگانه‌ای از آدرس‌های IPv4 و آدرس‌های IPv6 ارائه می‌دهند. Google Cloud Armor از URLهای ارائه شده برای دریافت لیست‌ها استفاده می‌کند و سپس لیست‌ها را به لیست‌های آدرس IP نامگذاری شده تبدیل می‌کند. شما می‌توانید با استفاده از نام‌های موجود در جدول به لیست‌ها مراجعه کنید.

7e9c09a008e04656.png

روش دیگر، استفاده از cloud shell برای دریافت لیستی از لیست‌های آدرس IP از پیش تنظیم شده با نام

وارد cloudshell شوید و projectid خود را تنظیم کنید

gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]

Perform setting your projectID:
projectid=YOUR-PROJECT-ID

echo $projectid

از پوسته ابر

gcloud compute security-policies list-preconfigured-expression-sets \
    --filter="id:sourceiplist"

این برمی‌گردد:

EXPRESSION_SET
sourceiplist-fastly
sourceiplist-cloudflare
sourceiplist-imperva

۴. توپولوژی Codelab

68a800f9adbf4570.png

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

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

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

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

شناسه پروژه را به خاطر بسپارید، یک نام منحصر به فرد در تمام پروژه‌های Google Cloud (نام بالا قبلاً گرفته شده و برای شما کار نخواهد کرد، متاسفیم!). بعداً در این آزمایشگاه کد به آن PROJECT_ID گفته خواهد شد.

  1. در مرحله بعد، برای استفاده از منابع گوگل کلود، باید پرداخت را در Cloud Console فعال کنید .

اجرای این آزمایشگاه کد، اگر اصلاً هزینه‌ای نداشته باشد، نباید هزینه زیادی داشته باشد. حتماً دستورالعمل‌های بخش «پاکسازی» را که به شما نحوه خاموش کردن منابع را آموزش می‌دهد، دنبال کنید تا پس از این آموزش، متحمل هزینه نشوید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان ۳۰۰ دلاری هستند.

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

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

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

bce75f34b2c53987.png

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

f6ef2b5f13479f3a.png

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

۶. ایجاد شبکه VPC

شبکه VPC

از پوسته ابری

gcloud compute networks create 

نام-لیست-vpc

 --subnet-mode custom

ایجاد زیرشبکه

از پوسته ابری

gcloud compute networks subnets create named-ip-subnet \
        --network 

نام-لیست-vpc

 --range 10.0.0.0/24 --region us-east1

ایجاد قوانین فایروال

از پوسته ابری

gcloud compute --project=$projectid firewall-rules create default-allow-http --direction=INGRESS --priority=1000 --network=named-list-vpc --action=ALLOW --rules=tcp:80 --source-ranges=0.0.0.0/0 
gcloud compute --project=$projectid firewall-rules create default-allow-health-check --direction=INGRESS --priority=1000 --network=named-list-vpc --action=ALLOW --rules=tcp --source-ranges=130.211.0.0/22,35.191.0.0/16 

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

الگوی نمونه را ایجاد کنید

از پوسته ابری

gcloud beta compute --project=$projectid instance-templates create us-east1-template --machine-type=e2-medium --subnet=projects/$projectid/regions/us-east1/subnetworks/named-ip-subnet --network-tier=PREMIUM --metadata=startup-script-url=gs://cloud-training/gcpnet/httplb/startup.sh --maintenance-policy=MIGRATE --image=debian-10-buster-v20210217 --image-project=debian-cloud --boot-disk-size=10GB --boot-disk-type=pd-balanced --boot-disk-device-name=us-east1-template --no-shielded-secure-boot --no-shielded-vtpm --no-shielded-integrity-monitoring --reservation-affinity=any

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

از پوسته ابری

gcloud compute --project=$projectid  instance-groups managed create us-east1-mig --base-instance-name=us-east1-mig --template=us-east1-template --size=1 --zone=us-east1-b

۷. بک‌اندها را تأیید کنید

تأیید کنید که نمونه‌های ماشین مجازی در هر دو منطقه ایجاد می‌شوند و به سایت‌های HTTP آنها دسترسی پیدا می‌کنید.

  1. همچنان در Compute Engine هستید، روی VM instances در منوی سمت چپ کلیک کنید.
  2. به نمونه‌هایی که با us-east1-mig شروع می‌شوند توجه کنید. این نمونه‌ها بخشی از گروه‌های نمونه مدیریت‌شده هستند.
  3. روی IP خارجی یک نمونه از us-east1-mig کلیک کنید. شما باید IP کلاینت (آدرس IP شما)، نام میزبان (که با us-east1-mig شروع می‌شود) را ببینید.

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

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

شروع_پیکربندی.png

  1. گزینه «از اینترنت به ماشین‌های مجازی من» را انتخاب کنید و روی «ادامه» کلیک کنید.
  2. نام را روی http-lb تنظیم کنید.

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

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

  1. روی پیکربندی Backend کلیک کنید.
  2. برای سرویس‌های بک‌اند و باکت‌های بک‌اند، روی ایجاد کلیک کنید یا سرویس‌های بک‌اند و باکت‌های بک‌اند را انتخاب کنید، سپس روی سرویس‌های بک‌اند و در نهایت روی ایجاد یک سرویس بک‌اند کلیک کنید.
  3. نوع بک‌اند، Instance Group است.
  4. مقادیر زیر را تنظیم کنید، سایر مقادیر را به صورت پیش‌فرض باقی بگذارید: 18bf7a852f0759ee.png
  5. روی «انجام شد» کلیک کنید.
  6. برای بررسی سلامت، گزینه ایجاد بررسی سلامت را انتخاب کنید. بررسی_سلامت.png
    1. مقادیر زیر را تنظیم کنید، سایر مقادیر را به صورت پیش‌فرض باقی بگذارید: d2f85af1e988532b.png
  7. روی ذخیره و ادامه کلیک کنید.
  8. برای ایجاد سرویس backend روی Create کلیک کنید.

b00c217bf592f0.png

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

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

  1. روی پیکربندی Frontend کلیک کنید.
  2. http-front-end
  3. موارد زیر را مشخص کنید و سایر مقادیر را به صورت پیش‌فرض باقی بگذارید 51ae16211e72142f.png
  4. روی «انجام شد» کلیک کنید.

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

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

8efe5b462a80071d.png

  1. سرویس‌های بک‌اند و فرانت‌اند را بررسی کنید.

30b06910bf7fae29.png

  1. روی ایجاد کلیک کنید.
  2. چند دقیقه صبر کنید تا متعادل کننده بار ایجاد شود.
  3. روی نام متعادل‌کننده بار (http-lb) کلیک کنید.
  4. آدرس IPv4 متعادل‌کننده بار را برای وظیفه بعدی که به عنوان http-lb شناخته می‌شود، یادداشت کنید.

۹. اعتبارسنجی دسترسی غیرمجاز موفق

قبل از پیاده‌سازی سیاست آدرس IP نامگذاری‌شده، دسترسی غیرمجاز موفق به متعادل‌کننده‌ی آزمایشگاه و برنامه‌ی وب بعدی را اعتبارسنجی کنید. توجه داشته باشید، پس از پیاده‌سازی سیاست آدرس IP نامگذاری‌شده، دسترسی به برنامه‌ی وب محدود به مجموعه‌ی عبارات ارائه‌شده می‌شود.

  1. آدرس IP متعادل‌کننده بار خود را که در مرحله قبل ایجاد کردید (http-lb) شناسایی کرده و در مرورگر وب خود جایگذاری کنید. خروجی مشابه تصویر زیر خواهد بود.

توجه: این مرحله چند دقیقه طول خواهد کشید، پس از ایجاد صفحه وب، IP کلاینت از Google Front End است، نه IP ایستگاه کاری شما.

f93410e9568f1f32.png

از ایستگاه کاری خود، اعتبارسنجی مشابهی را مطابق آنچه در زیر نشان داده شده است، انجام دهید.

bash-3.2$ curl <load-balancer-IP>

۱۰. خروجی مثال

bash-3.2$ curl <load-balancer-ip>
<h1>HTTP Load Balancing Lab</h1><h2>Client IP</h2>Your IP address : 35.191.0.151<h2>Hostname</h2>Server Hostname: us-east1-mig-8nqq<h2>Server Location</h2>Region and Zone: us-east1-b

۱۱. پیکربندی فهرست IP نامگذاری شده

یک سیاست Cloud Amour جدید برای فهرست IP نامگذاری شده ایجاد کنید

از پوسته ابری

gcloud compute --project=$projectid security-policies create ca-policy

از پوسته ابری

gcloud compute --project=$projectid security-policies rules update 2147483647 --action=deny-403 --security-policy=ca-policy --description="Default rule, higher priority overrides it" --src-ip-ranges=\*

آدرس‌های موجود در فهرست‌های IP نامگذاری‌شده‌ی CDN را شناسایی کنید.

از پوسته ابری

gcloud compute security-policies list-preconfigured-expression-sets \
    --filter="id:sourceiplist"

این برمی‌گردد:

EXPRESSION_SET
sourceiplist-fastly
sourceiplist-cloudflare
sourceiplist-imperva

از Cloud Shell، لیست آدرس‌های IP نامگذاری شده را بر اساس مجموعه عبارات موجود در CDN خود پیکربندی کنید.

gcloud beta compute security-policies rules create 600 \
    --security-policy ca-policy \
    --expression "evaluatePreconfiguredExpr('expression_set')" \
    --action "allow"

مثال با استفاده از کلودفلر

gcloud beta compute security-policies rules create 600 \
    --security-policy ca-policy \
    --expression "evaluatePreconfiguredExpr('sourceiplist-cloudflare')" \
    --action "allow"

۱۲. اعمال سیاست امنیتی CA

اعمال پالیسی امنیتی CA و چند دقیقه صبر کردن برای انتشار سراسری پالیسی

gcloud compute backend-services update http-backend --security-policy ca-policy --global

۱۳. اعتبارسنجی آدرس IP نامگذاری شده

  1. از آنجایی که سیاست امنیتی پیاده‌سازی شده است، دسترسی به متعادل‌کننده بار از طریق ایستگاه کاری شما غیرمجاز است.
  2. برای اعتبارسنجی، یک پنجره ترمینال را از ایستگاه کاری خود باز کنید و یک curl به آدرس IP متعادل‌کننده بار انجام دهید. خروجی curl خطای '403' Forbidden را نشان می‌دهد زیرا ایستگاه کاری شما اکنون غیرمجاز است.

از ایستگاه کاری شما

bash-3.2$ curl <load-balancer-IP>
<!doctype html><meta charset="utf-8"><meta name=viewport content="width=device-width, initial-scale=1"><title>403</title>403 Forbidden

مراحل پاکسازی

gcloud -q compute backend-services update http-backend --security-policy "" --global

gcloud -q compute --project=$projectid security-policies delete ca-policy

gcloud -q compute forwarding-rules delete http-front-end --global

gcloud -q compute target-http-proxies delete http-lb-target-proxy

gcloud -q compute url-maps delete http-lb

gcloud -q compute backend-services delete http-backend --global

gcloud -q compute health-checks delete http-health-check

gcloud -q compute --project=$projectid instance-groups managed delete us-east1-mig --zone=us-east1-b

gcloud -q beta compute --project=$projectid instance-templates delete us-east1-template

gcloud -q compute --project=$projectid firewall-rules delete default-allow-http

gcloud -q compute --project=$projectid firewall-rules delete default-allow-health-check

gcloud -q compute networks subnets delete named-ip-subnet --region us-east1

gcloud -q compute networks delete named-list-vpc

۱۴. تبریک می‌گویم!

تبریک می‌گویم که آزمایشگاه کد را تمام کردی.

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

  • مزایای لیست آدرس‌های IP نامگذاری شده توسط Cloud Armor
  • ایجاد متعادل‌کننده بار سراسری
  • ایجاد گروه نمونه مدیریت‌شده با برنامه آزمایشی نمونه
  • ایجاد سیاست امنیتی Cloud Armor
  • لیست آدرس‌های IP نامگذاری شده توسط Cloud Armor را مستقر کنید
  • اعتبارسنجی سیاست Cloud Armor مربوط به Named IP