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 مسدود شده است.
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 نامگذاری شده تبدیل می کند. شما به لیست ها با نام های موجود در جدول مراجعه می کنید.
از طرف دیگر، از پوسته ابری برای به دست آوردن لیستی از لیست های آدرس 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
5. راه اندازی و الزامات
تنظیم محیط خود به خود
- به کنسول Cloud وارد شوید و یک پروژه جدید ایجاد کنید یا از یک موجود استفاده مجدد کنید. (اگر قبلاً یک حساب Gmail یا Google Workspace ندارید، باید یک حساب ایجاد کنید .)
شناسه پروژه را به خاطر بسپارید، یک نام منحصر به فرد در تمام پروژه های Google Cloud (نام بالا قبلاً گرفته شده است و برای شما کار نخواهد کرد، متأسفیم!). بعداً در این آزمایشگاه کد به عنوان PROJECT_ID
نامیده خواهد شد.
- در مرحله بعد، برای استفاده از منابع Google Cloud، باید صورتحساب را در Cloud Console فعال کنید .
اجرا کردن از طریق این کد لبه نباید هزینه زیادی داشته باشد، اگر اصلاً باشد. حتماً دستورالعملهای موجود در بخش «تمیز کردن» را دنبال کنید که به شما توصیه میکند چگونه منابع را خاموش کنید تا بیش از این آموزش متحمل صورتحساب نشوید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان 300 دلاری هستند.
Cloud Shell را راه اندازی کنید
در حالی که Google Cloud را می توان از راه دور از لپ تاپ شما کار کرد، در این کد لبه از Google Cloud Shell استفاده خواهید کرد، یک محیط خط فرمان که در Cloud اجرا می شود.
از کنسول GCP روی نماد Cloud Shell در نوار ابزار بالا سمت راست کلیک کنید:
تهیه و اتصال به محیط فقط چند لحظه طول می کشد. وقتی تمام شد، باید چیزی شبیه به این را ببینید:
این ماشین مجازی با تمام ابزارهای توسعه که شما نیاز دارید بارگذاری شده است. این یک فهرست اصلی 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 آنها دسترسی داشته باشید.
- هنوز در Compute Engine، روی نمونه های VM در منوی سمت چپ کلیک کنید
- به نمونه هایی که با us-east1-mig شروع می شوند توجه کنید این نمونه ها بخشی از گروه های نمونه مدیریت شده هستند.
- روی IP خارجی یک نمونه از us-east1-mig کلیک کنید. شما باید IP مشتری (آدرس IP شما)، نام میزبان (با us-east1-mig شروع می شود) را ببینید.
HTTP Load Balancer را پیکربندی کنید
- در Cloud Console، روی منوی ناوبری کلیک کنید ( ) > روی Network Services > Load balancing کلیک کنید و سپس روی Create load balancer کلیک کنید.
- در قسمت HTTP(S) Load Balancing، روی Start configuration کلیک کنید.
- From Internet to my VMs را انتخاب کنید و روی Continue کلیک کنید.
- نام را روی http-lb قرار دهید.
باطن را پیکربندی کنید
خدمات Backend ترافیک ورودی را به یک یا چند backend متصل هدایت می کند. هر پشتیبان از یک گروه نمونه و ابرداده ظرفیت سرویس اضافی تشکیل شده است.
- روی تنظیمات Backend کلیک کنید.
- برای خدمات پشتیبان و سطلهای پشتیبان، روی ایجاد کلیک کنید یا خدمات پشتیبان و سطلهای پشتیبان را انتخاب کنید، سپس روی سرویسهای پشتیبان کلیک کنید و سپس روی ایجاد سرویس پشتیبان کلیک کنید.
- نوع Backend Instance Group است
- مقادیر زیر را تنظیم کنید، بقیه مقادیر را در حالت پیش فرض قرار دهید:
- روی Done کلیک کنید.
- برای بررسی سلامت، ایجاد چک سلامت را انتخاب کنید.
- مقادیر زیر را تنظیم کنید، بقیه مقادیر را در حالت پیش فرض قرار دهید:
- روی ذخیره و ادامه کلیک کنید.
- برای ایجاد سرویس Backend روی Create کلیک کنید.
قسمت جلویی را پیکربندی کنید
قوانین میزبان و مسیر تعیین می کنند که ترافیک شما چگونه هدایت می شود. به عنوان مثال، میتوانید ترافیک ویدیویی را به یک بکاند هدایت کنید و ترافیک استاتیک یک بکاند دیگر را هدایت کنید. با این حال، شما قوانین میزبان و مسیر را در این آزمایشگاه پیکربندی نمی کنید.
- روی تنظیمات Frontend کلیک کنید.
- http-front-end
- موارد زیر را مشخص کنید و تمام مقادیر دیگر را در حالت پیش فرض قرار دهید
- روی Done کلیک کنید.
8. HTTP Load Balancer را بررسی و ایجاد کنید
- بر روی Review و finalize کلیک کنید.
- خدمات Backend و Frontend را مرور کنید.
- روی Create کلیک کنید.
- چند دقیقه صبر کنید تا متعادل کننده بار ایجاد شود
- روی نام متعادل کننده بار (http-lb) کلیک کنید.
- به آدرس IPv4 متعادل کننده بار برای کار بعدی که http-lb نامیده می شود توجه کنید.
9. دسترسی غیرمجاز موفق را تأیید کنید
قبل از اجرای خط مشی آدرس IP نامگذاری شده، دسترسی غیرمجاز موفقیت آمیز به متعادل کننده آزمایشگاه و برنامه وب بعدی را تأیید کنید. توجه داشته باشید، پس از اجرای سیاست آدرس IP نامگذاری شده، دسترسی به برنامه وب به مجموعه عبارت ارائه شده محدود می شود.
- آدرس IP متعادل کننده بار خود را که در مرحله قبل ایجاد شده است (http-lb) شناسایی کرده و در مرورگر وب خود قرار دهید. خروجی مطابق تصویر زیر مشابه خواهد بود.
توجه: این مرحله چند دقیقه طول می کشد، پس از ایجاد صفحه وب، IP مشتری از Google Front End است، نه IP ایستگاه کاری شما.
از ایستگاه کاری خود اعتبارسنجی مشابهی را که در زیر نشان داده شده است انجام دهید
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 نامگذاری شده
- از آنجایی که سیاست امنیتی اجرا شده است، دسترسی به بار متعادل کننده از ایستگاه کاری شما غیرمجاز است.
- برای اعتبار سنجی، یک پنجره ترمینال را از ایستگاه کاری خود باز کنید و به آدرس 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