سیاست سلسله مراتبی فایروال با برچسب‌های تحت مدیریت IAM

۱. مقدمه

فایروال نسل بعدی ابری (NGFW)

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

فایروال نسل بعدی ابری (Cloud NGFW) مزایای زیر را دارد:

  • سرویس فایروال توزیع‌شده: فایروال نسل بعدی ابری (Cloud NGFW) یک الزام مبتنی بر میزبان کاملاً توزیع‌شده و دارای وضعیت (stateful) را در هر بار کاری فراهم می‌کند تا معماری امنیتی بدون اعتماد (zero-trust) را فعال کند.
  • پیکربندی و استقرار ساده: Cloud NGFW سیاست‌های فایروال شبکه و سلسله مراتبی را پیاده‌سازی می‌کند که می‌توانند به یک گره سلسله مراتب منابع متصل شوند. این سیاست‌ها یک تجربه فایروال سازگار در سراسر سلسله مراتب منابع Google Cloud ارائه می‌دهند.
  • کنترل جزئی و ریزبخش‌بندی: ترکیب سیاست‌های فایروال و تگ‌های تحت مدیریت مدیریت هویت و دسترسی (IAM)، کنترل دقیقی را برای ترافیک شمال-جنوب و شرق-غرب، تا یک ماشین مجازی واحد، در سراسر شبکه‌های ابر خصوصی مجازی (VPC) فراهم می‌کند.

سیاست‌های فایروال شبکه

سیاست فایروال شبکه به عنوان ظرفی برای قوانین فایروال عمل می‌کند. قوانین تعریف شده در یک سیاست فایروال شبکه تا زمانی که این سیاست با یک شبکه VPC مرتبط نشود، در هیچ کجا اجرا نمی‌شوند. هر شبکه VPC می‌تواند یک سیاست فایروال شبکه مرتبط با خود داشته باشد. سیاست‌های فایروال شبکه از برچسب‌های (یا فقط برچسب‌ها) تحت مدیریت IAM در قوانین فایروال پشتیبانی می‌کنند و می‌توانند برای ارائه هویت به بار کاری مورد استفاده قرار گیرند.

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

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

  1. سیاست سلسله مراتبی فایروال
  2. قوانین فایروال VPC
  3. سیاست جهانی فایروال شبکه و سیاست منطقه‌ای فایروال شبکه

سیاست‌های سلسله مراتبی فایروال در گره‌های سازمان و پوشه در سلسله مراتب منابع پشتیبانی می‌شوند، در حالی که قوانین فایروال VPC و سیاست‌های فایروال شبکه در سطح VPC اعمال می‌شوند. تفاوت بزرگ بین قوانین فایروال VPC و سیاست‌های فایروال شبکه این است که قوانین فایروال VPC فقط می‌توانند به یک شبکه VPC واحد اعمال شوند، در حالی که سیاست‌های فایروال شبکه می‌توانند به یک VPC واحد یا گروهی از VPCها متصل شوند، از جمله مزایای دیگر مانند به‌روزرسانی‌های دسته‌ای.

در این آزمایش، ما سیاست سلسله مراتبی فایروال و سیاست سراسری فایروال شبکه را آزمایش خواهیم کرد.

در نهایت، ما همچنین قوانین ضمنی فایروال را داریم که با هر شبکه VPC همراه است:

  • یک قانون خروج که اقدام آن allow و مقصد آن 0.0.0.0/0 است.
  • یک قانون ورود که عمل آن deny و منبع آن 0.0.0.0/0 است.

به طور پیش فرض، توالی اجرای در نمودار زیر نشان داده شده است:

86df8f0d19c64e80.png

برچسب‌های تحت مدیریت IAM

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

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

برچسب‌ها را نباید با برچسب‌های شبکه اشتباه گرفت، دومی رشته‌هایی هستند که می‌توانند به نمونه‌های Compute Engine اضافه شوند؛ آن‌ها با نمونه مرتبط هستند و با از رده خارج شدن نمونه ناپدید می‌شوند. قوانین فایروال VPC ممکن است شامل برچسب‌های شبکه باشند، اما از آنجایی که آن‌ها به عنوان منابع ابری در نظر گرفته نمی‌شوند، مشمول کنترل دسترسی IAM نمی‌شوند. برای جزئیات بیشتر در مورد تفاوت، به این صفحه مراجعه کنید.

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

  • نحوه ایجاد تگ‌های تحت مدیریت IAM برای استفاده با Cloud NGFW و با دامنه جهانی.
  • نحوه اتصال تگ‌ها به ماشین‌های مجازی
  • نحوه ایجاد یک سیاست فایروال سلسله مراتبی و مرتبط کردن آن با یک پوشه.
  • نحوه ایجاد یک قانون فایروال در سیاست سلسله مراتبی فایروال و تعیین منبع و هدف با استفاده از برچسب‌های تحت مدیریت IAM.

۳. معماری کلی آزمایشگاه

1bfe78ad755496e5.png

سازماندهی و پوشه‌ها:

  • شما دو پوشه، folder1 و folder2 ، را مستقیماً تحت سازمان خود ایجاد خواهید کرد.

پروژه‌ها:

  • درون folder1 ، یک پروژه میزبان ایجاد خواهید کرد. این پروژه شامل شبکه اشتراکی VPC خواهد بود.
  • درون folder2 ، یک پروژه سرویس ایجاد خواهید کرد. این پروژه شامل ماشین‌های مجازی خواهد بود که از Shared VPC استفاده می‌کنند.

شبکه سازی:

  • یک شبکه VPC به نام mynet در پروژه میزبان ایجاد و به عنوان یک Shared VPC پیکربندی خواهد شد. این امر به منابع موجود در پروژه سرویس اجازه می‌دهد تا از شبکه استفاده کنند.
  • دو ماشین مجازی در پروژه سرویس ایجاد شده و به سرور مجازی مشترک mynet متصل می‌شوند.

برچسب‌های تحت مدیریت IAM:

  • شما یک تگ تحت مدیریت IAM به نام http_tags با دو مقدار به نام‌های http_server و http_client در سطح سازمان ایجاد خواهید کرد. این تگ/مقادیر برای شناسایی و اعمال قوانین فایروال به ماشین‌های مجازی استفاده خواهند شد.

سیاست‌های فایروال:

  • یک سیاست فایروال سلسله مراتبی ایجاد و به folder1 مرتبط خواهد شد. یک قانون در این سیاست از برچسب‌های تحت مدیریت IAM استفاده می‌کند تا ترافیک را از http-client به http-server روی پورت ۸۰ مجاز کند.
  • یک سیاست فایروال شبکه در پروژه میزبان ایجاد و با mynet VPC مرتبط خواهد شد. این سیاست شامل قانونی برای اجازه دسترسی IAP SSH به ماشین‌های مجازی برای اهداف آزمایشی خواهد بود.

۴. مراحل آماده‌سازی

ابتدا، نقش‌های IAM لازم، زیرساخت شبکه و موارد لازم را در سازمان Google Cloud خود تنظیم کنید.

نقش‌های IAM مورد نیاز برای کار در آزمایشگاه

ما با اختصاص نقش‌های IAM مورد نیاز به حساب GCP در سطح سازمان شروع می‌کنیم.

  • مدیر سازمان ( roles/resourcemanager.organizationAdmin ) این نقش به شما امکان می‌دهد سیاست‌های IAM را مدیریت کنید و سیاست‌های سازمانی را برای سازمان‌ها، پوشه‌ها و پروژه‌ها مشاهده کنید.
  • مدیر برچسب ( roles/resourcemanager.tagAdmin ) این نقش به شما امکان می‌دهد برچسب‌های امن را ایجاد، به‌روزرسانی و حذف کنید.
  • نقش کاربر برچسب ( roles/resourcemanager.tagUser ) این نقش به شما امکان می‌دهد به لیست برچسب‌های امن دسترسی داشته باشید و ارتباط آنها با منابع را مدیریت کنید.
  • نقش مدیر سیاست فایروال سازمان محاسباتی ( roles/compute.orgFirewallPolicyAdmin ) این نقش به شما کنترل کامل سیاست‌های فایروال سازمان موتور محاسباتی را می‌دهد.
  • نقش مدیر منابع سازمان محاسباتی ( roles/compute.orgSecurityResourceAdmin ) این نقش به شما کنترل کامل ارتباط سیاست فایروال موتور محاسباتی با سازمان یا پوشه را می‌دهد.
  • مدیر شبکه محاسباتی ( roles/compute.networkAdmin ) این نقش به شما کنترل کامل منابع شبکه Compute Engine را می‌دهد.
  • مدیر نمونه محاسباتی (بتا) ( roles/compute.instanceAdmin ) این نقش به شما کنترل کامل منابع نمونه موتور محاسباتی را می‌دهد.
  • مدیر ثبت وقایع ( roles/logging.admin ) این نقش به شما امکان دسترسی به تمام مجوزهای ثبت وقایع و مجوزهای وابسته را می‌دهد.
  • مدیر حساب سرویس ( roles/iam.serviceAccountAdmin ) این نقش به شما امکان ایجاد و مدیریت حساب‌های سرویس را می‌دهد.
  • مدیر استفاده از سرویس ( roles/serviceusage.serviceUsageAdmin ) این نقش به شما امکان فعال، غیرفعال کردن و بررسی وضعیت سرویس، بررسی عملیات و سهمیه مصرف و صدور صورتحساب برای یک پروژه مصرف‌کننده را می‌دهد.
  • مدیر VPC اشتراکی محاسباتی ( roles/compute.xpnAdmin ) این نقش به شما امکان مدیریت یک شبکه VPC اشتراکی (XPN) را می‌دهد.

ایجاد پوشه‌ها و پروژه‌ها

درون Cloud Shell، مراحل زیر را برای ایجاد folder1 و folder2 انجام دهید:

gcloud auth login

export org_id=$(gcloud organizations list --format='value(ID)')
export BILLING_ACCOUNT_ID=$(gcloud billing accounts list --format='value(ACCOUNT_ID)')
export folder1=[FOLDER1 NAME]
export folder2=[FOLDER2 NAME]
export hostproject=[HOST PROJECT NAME]
export serviceproject=[SERVICE PROJECT NAME]
export regionname=[REGION NAME]
export zonename=[COMPUTE ZONE NAME]

gcloud resource-manager folders create --display-name=$folder1 --organization=$org_id
export folder1_id=$(gcloud resource-manager folders list --organization=$org_id --filter="displayName=$folder1" --format="value(ID)")
gcloud resource-manager folders create --display-name=$folder2 --organization=$org_id
export folder2_id=$(gcloud resource-manager folders list --organization=$org_id --filter="displayName=$folder2" --format="value(ID)")

در داخل Cloud Shell، موارد زیر را برای ایجاد پروژه میزبان در folder1 انجام دهید:

gcloud projects create  --name=$hostproject --folder=$folder1_id

موارد زیر را خواهید دید. برای ایجاد پروژه با شناسه پروژه جدید، Y را فشار دهید.

No project ID provided.

Use [NEW-PROJECT-ID] as project ID (Y/n)?

شناسه پروژه را یادداشت کنید. در داخل Cloud Shell، موارد زیر را برای خروجی گرفتن از آن به hostproject_id انجام دهید:

export hostproject_id=[HOSTPROJECT ID]

در داخل Cloud Shell، موارد زیر را برای پیوند دادن پروژه میزبان به حساب صورتحساب انجام دهید:

gcloud billing projects link $hostproject_id \
--billing-account=$BILLING_ACCOUNT_ID

در داخل Cloud Shell، موارد زیر را برای ایجاد پروژه سرویس در folder2 انجام دهید:

gcloud projects create  --name=$serviceproject --folder=$folder2_id

موارد زیر را خواهید دید. برای ایجاد پروژه با شناسه پروژه جدید، Y را فشار دهید.

No project ID provided.

Use [NEW-PROJECT-ID] as project ID (Y/n)?

شناسه پروژه را یادداشت کنید. در داخل Cloud Shell، موارد زیر را برای خروجی گرفتن آن به serviceproject_id انجام دهید:

export serviceproject_id=[SERVICEPROJECT ID]

در داخل Cloud Shell، موارد زیر را برای پیوند دادن پروژه سرویس به حساب صورتحساب انجام دهید:

gcloud billing projects link $serviceproject_id \
--billing-account=$BILLING_ACCOUNT_ID

ایجاد تگ‌های تحت مدیریت IAM

یک برچسب (tag) یک جفت کلید-مقدار است که می‌تواند به یک سازمان، پوشه یا پروژه پیوست شود. برای جزئیات بیشتر به ایجاد و مدیریت برچسب‌ها و مجوزهای مورد نیاز مراجعه کنید.

ما یک تگ در سطح سازمان، http-tags ایجاد می‌کنیم. هدف از این تگ، استفاده از Cloud NGFW است. ما دامنه را به یک شبکه واحد محدود نمی‌کنیم - این تگ به صورت سراسری (global scoped) است. و بعداً این تگ را به ماشین‌های مجازی ایجاد شده در پروژه سرویس تحت folder2 اعمال خواهیم کرد.

درون Cloud Shell، موارد زیر را انجام دهید:

gcloud resource-manager tags keys create http_tags \
    --parent=organizations/$org_id \
    --purpose GCE_FIREWALL \
    --purpose-data organization=auto

ما از شناسه کلید برچسب برای حاشیه‌نویسی ماشین مجازی در حین ایجاد استفاده خواهیم کرد. در داخل Cloud Shell، برای دریافت شناسه کلید برچسب، موارد زیر را انجام دهید:

export http_tags_id=$(gcloud resource-manager tags keys describe $org_id/http_tags --format="value(name)")
echo $http_tags_id

درون Cloud Shell، برای ایجاد دو مقدار تگ جدید، http_server و http_client ، موارد زیر را انجام دهید:

 gcloud resource-manager tags values create http_server \
      --parent $org_id/http_tags
 gcloud resource-manager tags values create http_client \
      --parent $org_id/http_tags

ما از شناسه تگ و شناسه مقدار تگ برای حاشیه‌نویسی ماشین مجازی در حین ایجاد استفاده خواهیم کرد. در داخل Cloud Shell، برای دریافت شناسه مقدار تگ http_server و http_client ، موارد زیر را انجام دهید:

export http_tags_http_server_id=$(gcloud resource-manager tags values describe $org_id/http_tags/http_server --format="value(name)")
echo $http_tags_http_server_id

export http_tags_http_client_id=$(gcloud resource-manager tags values describe $org_id/http_tags/http_client --format="value(name)")
echo $http_tags_http_client_id

فعال کردن APIها در پروژه میزبان و پروژه سرویس

درون Cloud Shell، موارد زیر را انجام دهید:

gcloud services enable compute.googleapis.com --project=$serviceproject_id
gcloud services enable compute.googleapis.com --project=$hostproject_id

Create a VPC in the host project

در پروژه میزبان، یک شبکه VPC با حالت زیرشبکه سفارشی ایجاد کنید، موارد زیر را در Cloud Shell انجام دهید:

gcloud compute networks create mynet \
    --subnet-mode=custom \
    --project=$hostproject_id

ایجاد زیرشبکه‌ها در پروژه میزبان

در داخل Cloud Shell، برای ایجاد یک زیرشبکه IPV4، موارد زیر را انجام دهید:

gcloud compute networks subnets create mysubnet \
    --network=mynet \
    --range=10.0.0.0/28 \
    --region=$regionname \
    --project=$hostproject_id

فعال کردن Shared VPC در پروژه میزبان

در داخل Cloud Shell، برای فعال کردن Shared VPC در پروژه میزبان، موارد زیر را انجام دهید:

gcloud compute shared-vpc enable $hostproject_id

پروژه سرویس را برای VPC اشتراکی در پروژه میزبان ضمیمه کنید

در داخل Cloud Shell، موارد زیر را برای اتصال پروژه سرویس برای Shared VPC در پروژه میزبان انجام دهید:

gcloud compute shared-vpc associated-projects add $serviceproject_id --host-project=$hostproject_id 

ایجاد Cloud Router و Cloud NAT در پروژه میزبان

Cloud NAT برای دسترسی به اینترنت و دانلود و نصب برنامه‌ها توسط ماشین‌های مجازی استفاده می‌شود.

gcloud compute routers create $regionname-cr \
   --network=mynet \
   --region=$regionname \
   --project=$hostproject_id
gcloud compute routers nats create $regionname-nat \
    --router=$regionname-cr \
    --region=$regionname \
    --nat-all-subnet-ip-ranges \
    --auto-allocate-nat-external-ips \
    --project=$hostproject_id

ایجاد نمونه‌ها در پروژه سرویس

در پروژه سرویس، دو نمونه در زیرشبکه‌هایی که اخیراً در VPC مشترک در hostproject ایجاد کرده‌اید، ایجاد کنید. یک نمونه http-server نام دارد و برچسب http_tags را با مقدار http_server حاشیه‌نویسی می‌کنیم. نمونه دیگر http-client نام دارد و برچسب http_tags را با مقدار http_client حاشیه‌نویسی می‌کنیم. دستور(های) زیر را در Cloud Shell اجرا کنید:

gcloud compute instances create http-client \
    --project=$serviceproject_id \
   --subnet=projects/$hostproject_id/regions/$regionname/subnetworks/mysubnet \
    --zone=$zonename \
    --no-address \
    --resource-manager-tags=$http_tags_id=$http_tags_http_client_id

gcloud compute instances create http-server \
    --project=$serviceproject_id \
    --subnet=projects/$hostproject_id/regions/$regionname/subnetworks/mysubnet \
    --zone=$zonename \
    --no-address \
    --resource-manager-tags=$http_tags_id=$http_tags_http_server_id \
    --metadata startup-script='#! /bin/bash
    sudo apt-get update
    sudo apt-get install apache2 -y
    a2enmod ssl
    sudo a2ensite default-ssl
    echo "I am a Http Server." | \
    tee /var/www/html/index.html
    systemctl restart apache2'

آی‌پی داخلی http-server را یادداشت کنید. ما از آن در مرحله بعدی تست قانون فایروال استفاده خواهیم کرد.

export http_server_ip=$(gcloud compute instances describe http-server --zone $zonename --format='value(networkInterfaces[0].networkIP)' --project $serviceproject_id)
echo $http_server_ip

۵. یک سیاست فایروال شبکه سراسری در پروژه میزبان ایجاد کنید

ما یک سیاست فایروال شبکه سراسری در پروژه میزبان ایجاد خواهیم کرد و آن را به VPC مشترک در پروژه میزبان مرتبط خواهیم کرد.

gcloud config set project $hostproject_id
gcloud compute network-firewall-policies create  mynet-fw-policy \
--global \
--project=$hostproject_id
gcloud compute network-firewall-policies associations create \
    --firewall-policy=mynet-fw-policy \
    --network=mynet \
    --name=mynet-fw-policy \
    --global-firewall-policy \
    --project=$hostproject_id

برای اینکه به IAP اجازه دهید به ماشین‌های مجازی شما متصل شود، یک قانون فایروال در سیاست فایروال شبکه ایجاد کنید:

  • برای تمام نمونه‌های ماشین مجازی که می‌خواهید با استفاده از IAP به آنها دسترسی داشته باشید، اعمال می‌شود.
  • اجازه ورود ترافیک از محدوده IP 35.235.240.0/20 را می‌دهد. این محدوده شامل تمام آدرس‌های IP است که IAP برای ارسال TCP استفاده می‌کند.
gcloud compute network-firewall-policies rules create 1000 \
    --action=ALLOW \
    --firewall-policy=mynet-fw-policy \
    --description="mynet-allow-iap" \
    --direction=INGRESS \
    --src-ip-ranges=35.235.240.0/20 \
    --layer4-configs=tcp:22  \
    --global-firewall-policy \
    --project=$hostproject_id

در کنسول، می‌توانید به پروژه میزبان بروید و سیاست فایروال شبکه سراسری تازه ایجاد شده را در بخش سیاست فایروال پیدا کنید. می‌توانید قانون فایروال تازه ایجاد شده را در سیاست فایروال شبکه بررسی کنید. این لینک کنسول است که شما را به آنجا می‌رساند. لطفاً مطمئن شوید که انتخابگر پروژه را در کنسول به پروژه میزبان تغییر می‌دهید.

۶. دسترسی از ماشین مجازی http-client به ماشین مجازی http-server را آزمایش کنید

به ماشین مجازی با نام http-client از طریق SSH متصل شوید و بررسی کنید که آیا می‌تواند به http-server در پورت http 80 دسترسی پیدا کند یا خیر.

درون Cloud Shell، موارد زیر را انجام دهید:

gcloud compute ssh \
    --zone=$zonename "http-client" \
    --tunnel-through-iap \
    --project=$serviceproject_id

برای دسترسی به وب سرور از curl استفاده کنید.

curl -m 10 [http_server_ip]

نتیجه دستور curl را مشاهده خواهید کرد. هیچ قانون فایروال ورودی برای اجازه دادن به پورت ۸۰ برای http-server وجود ندارد.

اتصال پس از 10000 میلی ثانیه به پایان رسید.

با خروج از جلسه SSH به Cloud Shell برگردید.

exit

۷. ایجاد سیاست سلسله مراتبی فایروال و قوانین فایروال

ما یک سیاست فایروال سلسله مراتبی در folder1 ایجاد خواهیم کرد و این سیاست را به folder1 مرتبط خواهیم کرد. قوانین فایروال در این سیاست به پروژه میزبان تحت folder1 اعمال خواهد شد.

ایجاد سیاست سلسله مراتبی فایروال

gcloud compute firewall-policies create \
  --folder=$folder1_id \
  --short-name=my-folder1-fw-policy

ایجاد قانون فایروال در سیاست سلسله مراتبی فایروال

این قانون به ماشین‌های مجازی با مقدار برچسب http_tags/http_client اجازه می‌دهد تا به ماشین‌های مجازی با مقدار برچسب http_tags/http_server در پورت tcp 80 دسترسی داشته باشند.

gcloud compute firewall-policies rules create 100 \
  --organization=$org_id \
  --firewall-policy my-folder1-fw-policy \
  --direction=INGRESS \
  --layer4-configs=tcp:80 \
  --action=allow \
  --src-secure-tags=$org_id/http_tags/http_client \
  --target-secure-tags=$org_id/http_tags/http_server \
  --description=folder1-allow-http

سیاست سلسله مراتبی فایروال را با پوشه ۱ مرتبط کنید

gcloud compute firewall-policies associations create \
   --firewall-policy=my-folder1-fw-policy \
   --folder=$folder1_id \
   --name=my-folder1-fw-policy\
   --organization=$org_id

در کنسول، می‌توانید به folder1 بروید و سیاست سلسله مراتبی فایروال تازه ایجاد شده را در زیر بخش سیاست فایروال پیدا کنید. سیاست فایروال در "سیاست‌های فایروال واقع در این پوشه" نشان داده شده است. می‌توانید قانون فایروال تازه ایجاد شده را در سیاست سلسله مراتبی فایروال بررسی کنید. این لینک کنسول شما را به آنجا می‌رساند. لطفاً مطمئن شوید که انتخابگر پروژه را در کنسول به folder1 تغییر می‌دهید.

۸. دسترسی از ماشین مجازی http-client به ماشین مجازی http-server را آزمایش کنید

سیاست‌های مؤثر فایروال اعمال‌شده بر VPC مشترک در پروژه میزبان را بررسی کنید.

درون Cloud Shell، موارد زیر را انجام دهید:

gcloud compute networks get-effective-firewalls mynet --project=$hostproject_id

شما سیاست سلسله مراتبی ارثی فایروال را به این شکل خواهید دید:

TYPE: org-firewall
FIREWALL_POLICY_NAME: <NUMBER_FOR_YOUR_FW_POLICY>
FIREWALL_POLICY_PRIORITY: 
PRIORITY: 100
ACTION: ALLOW
DIRECTION: INGRESS
DISABLED: False
IP_RANGES:

You will see the network firewall policy to the VPC like this:
TYPE: network-firewall-policy
FIREWALL_POLICY_NAME: mynet-fw-policy
FIREWALL_POLICY_PRIORITY: 1000
PRIORITY: 1000
ACTION: ALLOW
DIRECTION: INGRESS
DISABLED: False
IP_RANGES: 35.235.240.0/20

به ماشین مجازی با نام http-client از طریق SSH متصل شوید و بررسی کنید که آیا می‌تواند به http-server در پورت http 80 دسترسی پیدا کند یا خیر.

درون Cloud Shell، موارد زیر را انجام دهید:

gcloud compute ssh \
    --zone=$zonename "http-client" \
    --tunnel-through-iap \
    --project=$serviceproject_id

برای دسترسی به وب سرور از curl استفاده کنید.

curl [http_server_ip]

خواهید دید که دستور curl با موفقیت پاسخ را از http-server برمی‌گرداند.

I am a Http Server.

قانون فایروال Ingress از سیاست فایروال سلسله مراتبی، دسترسی از http-client به http-server را در پورت ۸۰ مجاز می‌کند.

با خروج از جلسه SSH به Cloud Shell برگردید.

exit

۹. تمیز کردن

پاکسازی ماشین‌های مجازی در حال سرویس‌دهی پروژه

درون Cloud Shell، موارد زیر را انجام دهید:

gcloud compute instances delete http-server --zone $zonename --project=$serviceproject_id
gcloud compute instances delete http-client --zone $zonename --project=$serviceproject_id

پاکسازی سیاست سلسله مراتبی فایروال

درون Cloud Shell، موارد زیر را انجام دهید:

gcloud compute firewall-policies associations delete my-folder1-fw-policy \
   --firewall-policy=my-folder1-fw-policy \
   --organization=$org_id
gcloud compute firewall-policies rules delete 100 \
  --organization=$org_id \
  --firewall-policy=my-folder1-fw-policy
gcloud compute firewall-policies delete my-folder1-fw-policy \
  --organization=$org_id

پاک‌سازی برچسب‌ها در سطح سازمان

درون Cloud Shell، موارد زیر را انجام دهید:

gcloud resource-manager tags values delete $http_tags_http_server_id
gcloud resource-manager tags values delete $http_tags_http_client_id
gcloud resource-manager tags keys delete $http_tags_id

پروژه میزبان را تمیز کنید

درون Cloud Shell، موارد زیر را انجام دهید:

gcloud compute shared-vpc associated-projects remove $serviceproject_id --host-project=$hostproject_id 
gcloud compute shared-vpc disable $hostproject_id
gcloud projects delete $hostproject_id

پروژه خدماتی را تمیز کنید

درون Cloud Shell، موارد زیر را انجام دهید:

gcloud projects delete $serviceproject_id

پوشه‌ها را تمیز کنید

درون Cloud Shell، موارد زیر را انجام دهید:

gcloud resource-manager folders delete $folder1_id
gcloud resource-manager folders delete $folder2_id

۱۰. تبریک

شما با موفقیت سیاست فایروال سلسله مراتبی را با برچسب‌های تحت مدیریت IAM آزمایش کردید.