Cloud Armor NamedIP List

1. مقدمه

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

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

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

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

  • تجربه با سیاست های امنیتی و Load Balancers

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

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

به عنوان مثال، ارائه دهندگان CDN باید محتوا را در فواصل زمانی منظم از سرورهای مبدأ بیرون بکشند تا آنها را در حافظه پنهان خود توزیع کنند. مشارکت با Google ارتباط مستقیم بین ارائه دهندگان CDN و لبه شبکه Google را فراهم می کند. کاربران 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 مسدود شده است.

27243e72ee25ee16.png

Google Cloud Armor با نام آدرس IP

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

ارائه دهندگان 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

از طرف دیگر، از پوسته ابری برای به دست آوردن لیستی از لیست های آدرس 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

4. توپولوژی Codelab

68a800f9adbf4570.png

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

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

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

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

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

  1. در مرحله بعد، برای استفاده از منابع Google Cloud، باید صورت‌حساب را در Cloud Console فعال کنید .

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

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

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

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

bce75f34b2c53987.png

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

f6ef2b5f13479f3a.png

این ماشین مجازی با تمام ابزارهای توسعه که شما نیاز دارید بارگذاری شده است. این یک فهرست اصلی 5 گیگابایتی دائمی را ارائه می دهد و در Google Cloud اجرا می شود و عملکرد و احراز هویت شبکه را تا حد زیادی افزایش می دهد. تمام کارهای شما در این آزمایشگاه به سادگی با یک مرورگر قابل انجام است.

6. شبکه VPC ایجاد کنید

شبکه VPC

از Cloud Shell

gcloud compute networks create 

named-list-vpc

 --subnet-mode custom

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

از Cloud Shell

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

named-list-vpc

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

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

از Cloud Shell

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 

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

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

از Cloud Shell

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

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

از Cloud Shell

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

7. پشتیبان ها را تأیید کنید

بررسی کنید که نمونه های VM در هر دو منطقه ایجاد می شوند و به سایت های HTTP آنها دسترسی داشته باشید.

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

HTTP Load Balancer را پیکربندی کنید

  1. در Cloud Console، روی منوی ناوبری کلیک کنید ( mainmenu.png ) > روی Network Services > Load balancing کلیک کنید و سپس روی Create load balancer کلیک کنید.
  2. در قسمت HTTP(S) Load Balancing، روی Start configuration کلیک کنید.

start_config.png

  1. From Internet to my VMs را انتخاب کنید و روی Continue کلیک کنید.
  2. نام را روی http-lb قرار دهید.

باطن را پیکربندی کنید

خدمات Backend ترافیک ورودی را به یک یا چند backend متصل هدایت می کند. هر پشتیبان از یک گروه نمونه و ابرداده ظرفیت سرویس اضافی تشکیل شده است.

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

b00c217bf592f0.png

قسمت جلویی را پیکربندی کنید

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

  1. روی تنظیمات Frontend کلیک کنید.
  2. http-front-end
  3. موارد زیر را مشخص کنید و تمام مقادیر دیگر را در حالت پیش فرض قرار دهید 51ae16211e72142f.png
  4. روی Done کلیک کنید.

8. HTTP Load Balancer را بررسی و ایجاد کنید

  1. بر روی Review و finalize کلیک کنید.

8efe5b462a80071d.png

  1. خدمات Backend و Frontend را مرور کنید.

30b06910bf7fae29.png

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

9. دسترسی غیرمجاز موفق را تأیید کنید

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

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

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

f93410e9568f1f32.png

از ایستگاه کاری خود اعتبارسنجی مشابهی را که در زیر نشان داده شده است انجام دهید

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

10. خروجی نمونه

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

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

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

از Cloud Shell

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

از Cloud Shell

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 موجود را شناسایی کنید.

از Cloud Shell

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"

مثال با استفاده از cloudflare

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

12. سیاست امنیتی CA را اعمال کنید

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

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

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

  1. از آنجایی که سیاست امنیتی اجرا شده است، دسترسی به بار متعادل کننده از ایستگاه کاری شما غیرمجاز است.
  2. برای اعتبار سنجی، یک پنجره ترمینال را از ایستگاه کاری خود باز کنید و به آدرس 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

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

برای تکمیل کد لبه تبریک می گویم.

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

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