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. تحتوي هذه العلامة على عنصر تحكّم في الوصول إلى إدارة الهوية وإمكانية الوصول، كما يشير الاسم، والذي يحدّد المستخدمين الذين يمكنهم تنفيذ إجراءات معيّنة على العلامة. على سبيل المثال، تسمح أذونات "إدارة الهوية وإمكانية الوصول" بتحديد المستخدمين الأساسيين الذين يمكنهم منح قيم للعلامات والمستخدمين الأساسيين الذين يمكنهم إرفاق العلامات بالموارد. بعد تطبيق علامة على مورد، يمكن لقواعد جدار حماية الشبكة استخدامها للسماح بمرور البيانات أو رفضها.
تلتزم التصنيفات بنموذج الموارد المكتسَبة في Google Cloud، ما يعني أنّه يتم نقل التصنيفات وقِيمها على مستوى التسلسل الهرمي من التصنيفات الرئيسية. ونتيجةً لذلك، يمكن إنشاء العلامات في مكان واحد ثم استخدامها من قِبل المجلدات والمشاريع الأخرى في التدرّج الهرمي للموارد. يُرجى الانتقال إلى هذه الصفحة للحصول على مزيد من التفاصيل حول العلامات والقيود المفروضة على الوصول.
يجب عدم الخلط بين العلامات وعلامات الشبكة، فالعلامات الأخيرة هي سلاسل يمكن إضافتها إلى نُسخ Compute Engine، وهي مرتبطة بالنُسخ وتختفي عند إيقافها. قد تتضمّن قواعد جدار حماية VPC علامات الشبكة، ولكن بما أنّها لا تُعتبر موارد سحابة، فهي لا تخضع لإدارة الوصول في "إدارة الهوية وإمكانية الوصول".
يُرجى العلم أنّه يتم استخدام العلامات والعلامات الخاضعة لإدارة الهوية وإمكانية الوصول بالتبادل في هذا المستند.
التطبيق الذي ستصممه
يتألّف هذا الدليل التعليمي من جزأين: يوضّح الجزء الأول سياسات جدار الحماية للشبكة والعلامات باستخدام شبكة VPC واحدة، ويوضّح الجزء الثاني كيفية استخدام العلامات في شبكات VPC المشابهة وفقًا للرسم البياني أدناه. وبالتالي، يتطلب هذا الدليل التعليمي إنشاء مشروع واحد وإنشاء شبكات VPC متعددة.
ما ستتعرّف عليه
- كيفية إنشاء سياسة جدار حماية الشبكة
- كيفية إنشاء العلامات واستخدامها مع سياسة جدار حماية الشبكة
- كيفية استخدام العلامات من خلال ميزة "تبادل المعلومات بين شبكات VPC"
المتطلبات
- مشروع Google Cloud
- معرفة بنشر النُسخ وضبط مكوّنات الشبكات
- معلومات عن إعداد جدار الحماية في 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- العلامات الخاضعة لإدارة "إدارة الهوية وإمكانية الوصول"
العلامة هي زوج مفتاح/قيمة يمكن إرفاقه بمؤسسة أو مجلد أو مشروع. اطّلِع على إنشاء العلامات وإدارتها والأذونات المطلوبة للحصول على مزيد من التفاصيل.
يتيح لك دور "مشرف العلامات" إنشاء علامات جديدة وتعديل العلامات الحالية وحذفها. يمكن لمشرف المؤسسة منح هذا الدور. من 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- العلامات التي تتبع "إدارة الهوية وإمكانية الوصول" من خلال تبادل المعلومات بين شبكات VPC
من Cloud Shell، أنشئ شبكة سحابة إلكترونية خاصة افتراضية وشبكة فرعية جديدة وإعدادات تبادل المعلومات بين شبكات 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. تهانينا!
تهانينا، لقد نجحت في ضبط سياسة جدار حماية شبكة شاملة والتحقّق منها باستخدام إعدادات العلامات.