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

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

ما ستتعلمه
- كيفية إنشاء سياسة جدار حماية بين الشبكات
- كيفية إنشاء العلامات واستخدامها مع سياسة جدار الحماية بين الشبكات
- كيفية استخدام العلامات عبر تبادل المعلومات بين شبكات VPC
المتطلبات
- مشروع على السحابة الإلكترونية من 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 org_id=[org] export region=us-central1 export zone=us-central1-a export prefix=fwpolicy
3- إنشاء شبكة VPC وشبكة فرعية
شبكة السحابة الخاصة الافتراضية (VPC)
أنشئ fwpolicy-vpc1:
gcloud compute networks create $prefix-vpc1 --subnet-mode=custom
الشبكات الفرعية
أنشئ الشبكات الفرعية المعنية في المنطقة المحدّدة:
gcloud compute networks subnets create $prefix-vpc1-subnet \ --range=10.0.0.0/24 --network=$prefix-vpc1 --region=$region
Cloud NAT
أنشئ أجهزة توجيه Cloud Router وبوابات Cloud NAT لشبكة fwpolicy-pc1:
gcloud compute routers create $prefix-vpc1-cr \ --region=$region --network=$prefix-vpc1 gcloud compute routers nats create $prefix-vpc1-cloudnat \ --router=$prefix-vpc1-cr --router-region=$region \ --auto-allocate-nat-external-ips \ --nat-all-subnet-ip-ranges
4. إنشاء مثيلات
أنشئ قاعدة جدار حماية تسمح بزيارات SSH الواردة من نطاقات IAP في حال لم يتم تحديدها بعد كجزء من عملية إعداد IAP:
gcloud compute firewall-rules create allow-ssh-ingress-from-iap-vpc1 \ --direction=INGRESS \ --action=allow \ --network=$prefix-vpc1 \ --rules=tcp:22 \ --source-ranges=35.235.240.0/20
أنشئ مثيلات العميل وخادم الويب fwpolicy-vpc1:
gcloud compute instances create $prefix-vpc1-www \
--subnet=$prefix-vpc1-subnet --no-address --zone $zone \
--metadata startup-script='#! /bin/bash
apt-get update
apt-get install apache2 -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'
gcloud compute instances create $prefix-vpc1-client \
--subnet=$prefix-vpc1-subnet --no-address --zone $zone
بما أنّه لم يتم تحديد أي قواعد جدار حماية لشبكة VPC (بخلاف قاعدة السماح ببروتوكول SSH التي كان من المفترض أن يتم إنشاؤها عند إعداد IAP وفقًا لبداية هذا القسم)، وبما أنّه يتم تلقائيًا رفض جميع الزيارات الواردة، لن تتمكّن الأجهزة الافتراضية للعميل من الوصول إلى خوادم الويب المعنية. للتأكّد من أنّ الطلب سينتهي مهلته، افتح نافذة جديدة وابدأ جلسة SSH إلى الجهاز الظاهري fwpolicy-vpc1-client وحاوِل إرسال طلب curl إلى خادم الويب:
user@fwpolicy-vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2
الناتج المتوقّع:
curl: (28) Connection timed out after 2001 milliseconds
يمكنك اختياريًا التأكّد من عدم توفّر أي قواعد جدار حماية لشبكة VPC محدّدة لـ fwpolicy-vpc1 من خلال Cloud Shell:
gcloud compute firewall-rules list --filter="network:$prefix-vpc1"
5- سياسة جدار الحماية بين الشبكات العالمية
إنشاء سياسة جدار حماية بين الشبكات العالمية:
gcloud compute network-firewall-policies create \ $prefix-example --description \ "firewall-policy-description" --global
أضِف قاعدة تسمح بزيارات الويب:
gcloud compute network-firewall-policies rules create 500 \
--action allow \
--description "allow-web" \
--layer4-configs tcp:80,tcp:443 \
--firewall-policy $prefix-example \
--src-ip-ranges 10.0.0.0/16 \
--global-firewall-policy --enable-logging
صف سياسة جدار حماية بين الشبكات وتأكَّد من أنّ القاعدة قد تم added بنجاح:
gcloud compute network-firewall-policies describe \
$prefix-example --global
الناتج المتوقّع (انتقِل للأعلى إلى بداية الناتج، مع العلم أنّه يتم عرض القواعد الضمنية أيضًا):
creationTimestamp: '2022-09-23T12:46:53.677-07:00'
description: "firewall-policy-description"
fingerprint: Np1Rup09Amc=
id: '7021772628738421698'
kind: compute#firewallPolicy
name: fwpolicy-example
ruleTupleCount: 13
rules:
- action: allow
description: allow-web
direction: INGRESS
disabled: false
enableLogging: true
kind: compute#firewallPolicyRule
match:
layer4Configs:
- ipProtocol: tcp
ports:
- '80'
- ipProtocol: tcp
ports:
- '443'
srcIpRanges:
- 10.0.0.0/16
priority: 500
ruleTupleCount: 5
...
اربط سياسة جدار الحماية بين الشبكات بـ fwpolicy-vpc1:
gcloud compute network-firewall-policies associations create \
--firewall-policy $prefix-example \
--network $prefix-vpc1 \
--name $prefix-vpc1-association \
--global-firewall-policy
تأكَّد من تطبيقها بنجاح على شبكة fwpolicy-vpc1:
gcloud compute networks get-effective-firewalls $prefix-vpc1
الناتج المتوقّع (يُرجى العِلم أنّه في حال وجود سياسات جدار حماية هرمية لها الأولوية، سيتم عرض القواعد ذات الصلة في الأعلى):
TYPE FIREWALL_POLICY_NAME PRIORITY ACTION DIRECTION IP_RANGES network-firewall-policy fwpolicy-example 500 ALLOW INGRESS 10.0.0.0/16 network-firewall-policy fwpolicy-example 2147483645 GOTO_NEXT INGRESS ::/0 network-firewall-policy fwpolicy-example 2147483647 GOTO_NEXT INGRESS 0.0.0.0/0 network-firewall-policy fwpolicy-example 2147483644 GOTO_NEXT EGRESS ::/0 network-firewall-policy fwpolicy-example 2147483646 GOTO_NEXT EGRESS 0.0.0.0/0
تأكَّد من تطبيقها بنجاح على خادم الويب fwpolicy-vpc1 أيضًا:
gcloud compute instances network-interfaces \ get-effective-firewalls $prefix-vpc1-www --zone $zone
يكون الناتج المتوقّع مشابهًا للأمر السابق (جدران الحماية الفعّالة fwpolicy-vpc1):
TYPE FIREWALL_POLICY_NAME PRIORITY ACTION DIRECTION IP_RANGES network-firewall-policy fwpolicy-example 500 ALLOW INGRESS 10.0.0.0/16 network-firewall-policy fwpolicy-example 2147483645 GOTO_NEXT INGRESS ::/0 network-firewall-policy fwpolicy-example 2147483647 GOTO_NEXT INGRESS 0.0.0.0/0 network-firewall-policy fwpolicy-example 2147483644 GOTO_NEXT EGRESS ::/0 network-firewall-policy fwpolicy-example 2147483646 GOTO_NEXT EGRESS 0.0.0.0/0
ارجع إلى جلسة SSH الخاصة بـ vpc1-client وحاوِل تنفيذ curl مرة أخرى (يُرجى العِلم أنّ الأمر أدناه يفترض استخدام fwpolicy كبادئة، لذا يُرجى تعديل الأمر curl وفقًا لذلك في حال استخدام اسم مختلف):
user@vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2 Page on vpc1-www in network vpc1 zone us-central1-a
من Cloud Shell، تحقَّق من تطبيق سياسة جدار الحماية بين الشبكات على fwpolicy-vpc1:
gcloud compute network-firewall-policies describe \ $prefix-example --global
الناتج المتوقّع (انتقِل للأعلى إلى بداية الناتج):
--- associations: - attachmentTarget: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/fwpolicy-vpc1 name: fwpolicy-vpc1-association ...
6. العلامات المُدارة من "إدارة الهوية وإمكانية الوصول" (IAM)
العلامة هي زوج مفتاح/قيمة يمكن إرفاقه بمؤسسة أو مجلد أو مشروع. اطّلِع على المقالتَين إنشاء العلامات وإدارتها والأذونات المطلوبة للحصول على مزيد من التفاصيل.
يتيح لك دور tagAdmin إنشاء علامات جديدة وتعديل العلامات الحالية وحذفها. يمكن لمشرف المؤسسة منح هذا الدور. من Cloud Shell، عدِّل سياسة "إدارة الهوية وإمكانية الوصول" لإضافة دور tagAdmin إلى المستخدم. استخدِم صفحة مرجع الأذونات للاطّلاع على الأذونات المضمَّنة في كل دور محدّد مسبقًا.
gcloud organizations add-iam-policy-binding $org_id \ --member user:[user@example.com] --role roles/resourcemanager.tagAdmin
نفِّذ الأمر أدناه للتحقّق من المستخدمين الذين لديهم دور resourcemanager.tagAdmin:
gcloud organizations get-iam-policy $org_id --flatten=bindings \ --filter=bindings.role:roles/resourcemanager.tagAdmin
أنشئ مفتاح علامة جديدًا:
gcloud resource-manager tags keys create tags-vpc1 \ --parent organizations/$org_id \ --purpose GCE_FIREWALL \ --purpose-data network=$project_id/$prefix-vpc1
الناتج المتوقّع:
Waiting for TagKey [tags-vpc1] to be created...done. createTime: '2022-09-23T20:49:01.162228Z' etag: PwvmFuHO4wK1y6c5Ut2n5w== name: tagKeys/622132302133 namespacedName: ORGANIZATION_ID/tags-vpc1 parent: organizations/ORGANIZATION_ID purpose: GCE_FIREWALL purposeData: network: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/6749205358365096383 shortName: tags-vpc1 updateTime: '2022-09-23T20:49:03.873776Z'
إنشاء قيم علامات جديدة:
gcloud resource-manager tags values create web-servers \ --parent=$org_id/tags-vpc1 gcloud resource-manager tags values create web-clients \ --parent=$org_id/tags-vpc1
تأكَّد من إنشاء قيم العلامات بنجاح:
gcloud resource-manager tags values list \ --parent=$org_id/tags-vpc1
الناتج المتوقّع:
NAME SHORT_NAME DESCRIPTION tagValues/349564376683 web-servers tagValues/780363571446 web-clients
من Cloud Shell، صف قاعدة سياسة جدار حماية بين الشبكات الحالية للتأكّد من عدم استخدام العلامات:
gcloud compute network-firewall-policies rules describe 500 \
--firewall-policy $prefix-example \
--global-firewall-policy
الناتج المتوقّع:
---
action: allow
description: allow-web
direction: INGRESS
disabled: false
enableLogging: true
kind: compute#firewallPolicyRule
match:
layer4Configs:
- ipProtocol: tcp
ports:
- '80'
- ipProtocol: tcp
ports:
- '443'
srcIpRanges:
- 10.0.0.0/16
priority: 500
ruleTupleCount: 5
من Cloud Shell، عدِّل القاعدة للسماح فقط بالزيارات من مفتاح العلامة vpc1-tags/web-clients، وثبِّت القاعدة على مثيلات باستخدام مفتاح العلامة vpc1-tags/web-servers.
gcloud compute network-firewall-policies rules update 500 \
--firewall-policy $prefix-example \
--src-secure-tags $org_id/tags-vpc1/web-clients \
--target-secure-tags $org_id/tags-vpc1/web-servers \
--global-firewall-policy
من Cloud Shell، صف قاعدة سياسة جدار الحماية بين الشبكات الحالية للتأكّد من تطبيق العلامات بنجاح وأنّه تم الإبلاغ عنها على أنّها فعّالة:
gcloud compute network-firewall-policies rules describe 500 \
--firewall-policy $prefix-example \
--global-firewall-policy
الناتج المتوقّع:
---
action: allow
description: allow-web
direction: INGRESS
disabled: false
enableLogging: false
kind: compute#firewallPolicyRule
match:
layer4Configs:
- ipProtocol: tcp
ports:
- '80'
- ipProtocol: tcp
ports:
- '443'
srcIpRanges:
- 10.0.0.0/16
srcSecureTags:
- name: tagValues/479619031616
state: EFFECTIVE
priority: 500
ruleTupleCount: 7
targetSecureTags:
- name: tagValues/230424970229
state: EFFECTIVE
من Cloud Shell، لننتحقق من تطبيق القاعدة على vpc1:
gcloud compute networks get-effective-firewalls $prefix-vpc1
الناتج المتوقّع:
network-firewall-policy fwpolicy-example 500 ALLOW INGRESS 10.0.0.0/16 network-firewall-policy fwpolicy-example 2147483645 GOTO_NEXT INGRESS ::/0 network-firewall-policy fwpolicy-example 2147483647 GOTO_NEXT INGRESS 0.0.0.0/0 network-firewall-policy fwpolicy-example 2147483644 GOTO_NEXT EGRESS ::/0 network-firewall-policy fwpolicy-example 2147483646 GOTO_NEXT EGRESS 0.0.0.0/0
تأكَّد من أنّه على الرغم من أنّ سياسة جدار حماية بين الشبكات لا تزال مرتبطة بشبكة سحابة VPC، لم يتم تطبيق القاعدة التي تسمح بحركة المرور على الموقع الإلكتروني على خادم ويب بعد الآن، لأنّه لم تتم إضافة العلامة إلى الآلات الافتراضية:
gcloud compute instances network-interfaces \ get-effective-firewalls $prefix-vpc1-www --zone $zone
الناتج المتوقّع (يُرجى العِلم أنّه لا يتم عرض قاعدة جدار الحماية ذات الأولوية 500):
network-firewall-policy fwpolicy-example 2147483645 GOTO_NEXT INGRESS ::/0 network-firewall-policy fwpolicy-example 2147483647 GOTO_NEXT INGRESS 0.0.0.0/0 network-firewall-policy fwpolicy-example 2147483644 GOTO_NEXT EGRESS ::/0 network-firewall-policy fwpolicy-example 2147483646 GOTO_NEXT EGRESS 0.0.0.0/0
منح دور "مستخدم العلامة" للعلامة والمستخدم المحدّدين استخدِم صفحة مرجع الأذونات للاطّلاع على الأذونات المضمَّنة في كل دور محدّد مسبقًا.
gcloud resource-manager tags keys add-iam-policy-binding \ $org_id/tags-vpc1 \ --member user:[email] --role roles/resourcemanager.tagUser gcloud projects add-iam-policy-binding $project_id \ --member user:[email] --role roles/resourcemanager.tagUser
تأكَّد من أنّه تمت إضافة الدور بنجاح:
gcloud resource-manager tags keys get-iam-policy $org_id/tags-vpc1 gcloud projects get-iam-policy $project_id --flatten=bindings \ --filter=bindings.role:roles/resourcemanager.tagUser
الناتج المتوقّع:
bindings: - members: - user:[user] role: roles/resourcemanager.tagUser ...
طبِّق العلامة على الجهاز الظاهري fwpolicy-vpc1-www:
gcloud resource-manager tags bindings create \ --location $zone \ --tag-value $org_id/tags-vpc1/web-servers \ --parent \ //compute.googleapis.com/projects/$project_id/zones/$zone/instances/$prefix-vpc1-www
الناتج المتوقّع:
Waiting for TagBinding for parent [//compute.googleapis.com/projects/PROJECT_ID/zones/us-central1-a/instances/38369703403698502] and tag value [tagValues/34 9564376683] to be created with [operations/rctb.us-central1-a.6144808968019372877]...done. done: true metadata: '@type': type.googleapis.com/google.cloud.resourcemanager.v3.CreateTagBindingMetadata name: operations/rctb.us-central1-a.6144808968019372877 response: '@type': type.googleapis.com/google.cloud.resourcemanager.v3.TagBinding name: tagBindings/%2F%2Fcompute.googleapis.com%2Fprojects%2FPROJECT_NUMBER%2Fzones%2Fus-central1-a%2Finstances%2F38369703403698502/tagValues/349564376683 parent: //compute.googleapis.com/projects/PROJECT_NUMBER/zones/us-central1-a/instances/38369703403698502 tagValue: tagValues/349564376683
تحقَّق من عمليات الربط:
gcloud resource-manager tags bindings list --location $zone --effective --parent //compute.googleapis.com/projects/$project_id/zones/$zone/instances/$prefix-vpc1-www
الناتج المتوقّع:
namespacedTagKey: ORGANIZATION_ID/tags-vpc1 namespacedTagValue: ORGANIZATION_ID/tags-vpc1/web-servers tagKey: tagKeys/622132302133 tagValue: tagValues/349564376683
تحقَّق من قواعد جدار الحماية السارية مرة أخرى:
gcloud compute instances network-interfaces \ get-effective-firewalls $prefix-vpc1-www --zone $zone
الناتج المتوقّع:
network-firewall-policy fwpolicy-example 490 ALLOW INGRESS 10.0.0.0/16 network-firewall-policy fwpolicy-example 2147483645 GOTO_NEXT INGRESS ::/0 network-firewall-policy fwpolicy-example 2147483647 GOTO_NEXT INGRESS 0.0.0.0/0 network-firewall-policy fwpolicy-example 2147483644 GOTO_NEXT EGRESS ::/0 network-firewall-policy fwpolicy-example 2147483646 GOTO_NEXT EGRESS 0.0.0.0/0
ارجع إلى علامة التبويب الخاصة بجلسة SSH fwpolicy-vpc1-client وحاوِل تنفيذ الأمر curl:
user@fwpolicy-vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2
هل تمكّنت من الاتصال؟
للتأكّد من ذلك، عدِّل القاعدة لإزالة معايير CIDR المصدر من خلال Cloud Shell.
gcloud compute network-firewall-policies rules update 500 \
--firewall-policy $prefix-example \
--src-ip-ranges "" \
--global-firewall-policy
gcloud compute network-firewall-policies rules describe 500 \
--firewall-policy $prefix-example \
--global-firewall-policy
action: allow
description: allow-web
direction: INGRESS
disabled: false
enableLogging: false
kind: compute#firewallPolicyRule
match:
layer4Configs:
- ipProtocol: tcp
ports:
- '80'
- ipProtocol: tcp
ports:
- '443'
srcSecureTags:
- name: tagValues/479619031616
state: EFFECTIVE
priority: 490
ruleTupleCount: 7
targetSecureTags:
- name: tagValues/230424970229
state: EFFECTIVE
عُد إلى علامة التبويب الخاصة بجلسة SSH fwpolicy-vpc1-client وأعِد المحاولة:
user@fwpolicy-vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2
من المفترض أن تنتهي مهلة الاتصال هذه المرة، لأنّه لم تتم إضافة العلامة إلى fwpolicy-vpc1-client. من Cloud Shell، أضِفها وحاوِل مرة أخرى.
gcloud resource-manager tags bindings create \ --location $zone \ --tag-value $org_id/tags-vpc1/web-clients \ --parent \ //compute.googleapis.com/projects/$project_id/zones/$zone/instances/$prefix-vpc1-client
ارجع إلى علامة تبويب جلسة SSH fwpolicy-vpc1-client وأعِد المحاولة، ومن المفترض أن تنجح هذه المرة.
user@fwpolicy-vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2
7. علامات مُدارة من "إدارة الهوية وإمكانية الوصول" (IAM) عبر تبادل المعلومات بين شبكات VPC
من Cloud Shell، أنشئ شبكة VPC جديدة وشبكة فرعية وعميل، وأعِدّ تبادل المعلومات بين شبكات VPC:
gcloud compute networks create $prefix-vpc2 --subnet-mode=custom
gcloud compute networks subnets create $prefix-vpc2-subnet \
--range=10.0.1.0/24 --network=$prefix-vpc2 --region=$region
gcloud compute instances create $prefix-vpc2-client \
--subnet=$prefix-vpc2-subnet --no-address --zone $zone
gcloud compute networks peerings create vpc1-to-vpc2 \
--network=$prefix-vpc1 \
--peer-project $project_id \
--peer-network $prefix-vpc2
gcloud compute networks peerings create vpc2-to-vpc1 \
--network=$prefix-vpc2 \
--peer-project $project_id \
--peer-network $prefix-vpc1
أنشئ قاعدة جدار حماية تسمح بزيارات SSH الواردة من نطاقات IAP في حال لم يتم تحديدها بعد كجزء من عملية إعداد IAP:
gcloud compute firewall-rules create allow-ssh-ingress-from-iap-vpc2 \ --direction=INGRESS \ --action=allow \ --network=$prefix-vpc2 \ --rules=tcp:22 \ --source-ranges=35.235.240.0/20
على الرغم من أنّ العلامات هي عناصر على مستوى المؤسسة، ترتبط مفاتيح العلامات بشبكة VPC معيّنة، وبالتالي لا يمكن تطبيقها على الأجهزة الافتراضية في شبكات مختلفة. وبالتالي، يجب إنشاء مفتاح وقيمة علامة جديدَين ينطبقان على vpc2:
gcloud resource-manager tags keys create tags-vpc2 \ --parent organizations/$org_id \ --purpose GCE_FIREWALL \ --purpose-data network=$project_id/$prefix-vpc2 gcloud resource-manager tags values create web-clients \ --parent=$org_id/tags-vpc2
طبِّق العلامة الجديدة على الجهاز الظاهري fwpolicy-vpc2-client:
gcloud resource-manager tags bindings create \ --location $zone \ --tag-value $org_id/tags-vpc2/web-clients \ --parent \ //compute.googleapis.com/projects/$project_id/zones/$zone/instances/$prefix-vpc2-client
يمكنك اختياريًا إدراج روابط fwpolicy-vpc2-client:
gcloud resource-manager tags bindings list --location $zone --effective --parent //compute.googleapis.com/projects/$project_id/zones/$zone/instances/$prefix-vpc2-client
الناتج المتوقّع:
namespacedTagKey: ORGANIZATION_ID/tags-vpc2 namespacedTagValue: ORGANIZATION_ID/tags-vpc2/web-clients tagKey: tagKeys/916316350251 tagValue: tagValues/633150043992
من Cloud Shell، صف قاعدة سياسة جدار الحماية بين الشبكات الحالية للتأكّد من عدم استخدام العلامات الجديدة:
gcloud compute network-firewall-policies rules describe 500 \
--firewall-policy $prefix-example \
--global-firewall-policy
الناتج المتوقّع:
---
action: allow
description: allow-web
direction: INGRESS
disabled: false
enableLogging: true
kind: compute#firewallPolicyRule
match:
layer4Configs:
- ipProtocol: tcp
ports:
- '80'
- ipProtocol: tcp
ports:
- '443'
srcSecureTags:
- name: tagValues/479619031616
state: EFFECTIVE
priority: 500
ruleTupleCount: 6
targetSecureTags:
- name: tagValues/230424970229
state: EFFECTIVE
عدِّل قاعدة جدار الحماية الحالية للسماح بالعلامات من شبكة VPC المتصلة:
gcloud compute network-firewall-policies rules update 500 \
--firewall-policy $prefix-example \
--src-secure-tags $org_id/tags-vpc1/web-clients,$org_id/tags-vpc2/web-clients \
--global-firewall-policy
صف قاعدة جدار الحماية للتأكّد من تطبيقها بنجاح والإبلاغ عنها على أنّها فعّالة:
gcloud compute network-firewall-policies rules describe 500 \
--firewall-policy $prefix-example \
--global-firewall-policy
الناتج المتوقّع:
---
action: allow
description: allow-web
direction: INGRESS
disabled: false
enableLogging: false
kind: compute#firewallPolicyRule
match:
layer4Configs:
- ipProtocol: tcp
ports:
- '80'
- ipProtocol: tcp
ports:
- '443'
srcSecureTags:
- name: tagValues/479619031616
state: EFFECTIVE
- name: tagValues/633150043992
state: EFFECTIVE
priority: 500
ruleTupleCount: 7
targetSecureTags:
- name: tagValues/230424970229
state: EFFECTIVE
ابحث عن عنوان IP الخاص بـ fwpolicy-vpc1-www من خلال أمر gcloud أدناه:
gcloud compute instances list --filter=vpc1-www
اتصِل بالجهاز fwpolicy-vpc2-client من خلال بروتوكول النقل الآمن (SSH) وحاوِل تنفيذ الأمر curl على عنوان IP الخاص بالجهاز fwpolicy-vpc1:
user@fwpolicy-vpc2-client$ curl [fwpolicy-vpc1-www_IP] --connect-timeout 2
من المفترض أن تتمكّن من الاتصال بالخادم fwpolicy-vpc1-www. انتقِل إلى القسم التالي للاطّلاع على خطوات التنظيف.
8. خطوات التنظيف
من Cloud Shell، أزِل المثيلات وCloud NAT وCloud Router:
gcloud -q compute instances delete $prefix-vpc2-client --zone=$zone gcloud -q compute instances delete $prefix-vpc1-client --zone=$zone gcloud -q compute instances delete $prefix-vpc1-www --zone=$zone gcloud -q compute routers nats delete $prefix-vpc1-cloudnat \ --router=$prefix-vpc1-cr --router-region=$region gcloud -q compute routers delete $prefix-vpc1-cr --region=$region
إزالة سياسة جدار الحماية بين الشبكات العالمية والعلامات:
gcloud -q resource-manager tags values delete \
$org_id/tags-vpc2/web-clients
gcloud -q resource-manager tags keys delete $org_id/tags-vpc2
gcloud -q resource-manager tags values delete \
$org_id/tags-vpc1/web-servers
gcloud -q resource-manager tags values delete \
$org_id/tags-vpc1/web-clients
gcloud -q resource-manager tags keys delete $org_id/tags-vpc1
gcloud -q compute network-firewall-policies associations delete \
--firewall-policy $prefix-example \
--name $prefix-vpc1-association \
--global-firewall-policy
gcloud -q compute network-firewall-policies delete \
$prefix-example --global
gcloud -q compute firewall-rules delete allow-ssh-ingress-from-iap-vpc1
gcloud -q compute firewall-rules delete allow-ssh-ingress-from-iap-vpc2
اتّبِع الخطوات أدناه في حال تم تغيير أدوار tagAdmin وtagUsers:
gcloud organizations remove-iam-policy-binding $org_id \ --member user:[email] --role roles/resourcemanager.tagAdmin gcloud organizations remove-iam-policy-binding $org_id \ --member user:[email] --role roles/resourcemanager.tagUser
أخيرًا، أزِل عمليات تبادل المعلومات بين شبكات VPC والشبكات الفرعية وشبكات VPC:
gcloud -q compute networks peerings delete vpc1-to-vpc2 \
--network $prefix-vpc1
gcloud -q compute networks peerings delete vpc2-to-vpc1 \
--network $prefix-vpc2
gcloud -q compute networks subnets delete $prefix-vpc1-subnet \
--region $region
gcloud -q compute networks subnets delete $prefix-vpc2-subnet \
--region $region
gcloud -q compute networks delete $prefix-vpc1
gcloud -q compute networks delete $prefix-vpc2
9- تهانينا!
تهانينا، لقد نجحت في إعداد سياسة جدار حماية بين الشبكات العالمية والتحقّق من صحتها باستخدام إعدادات العلامات.