1. مقدمة
سياسات جدار الحماية للشبكة
جدران الحماية هي اللبنات الأساسية لبيئة سحابة إلكترونية آمنة. في السابق، طرحنا سياسات جدار الحماية على مستوى المؤسسة والمجلدات، مع عدم تغيير جدران الحماية المستندة إلى سحابة VPC. في هذا الإصدار، سنوسّع نطاق بنية سياسة جدار الحماية إلى مستوى سحابة VPC، كما سنُجري العديد من التحسينات على الدعم الحالي لسياسة جدار الحماية، وذلك من أجل توفير دعم موحد لجدار الحماية في التدرّج الهرمي لموارد Google Cloud وتقديم تجربة متسقة للمستخدمين في إدارة عناصر التحكم في سياسة جدار الحماية بطريقة آمنة ومرنة وقابلة للتوسع.
تعمل سياسة جدار الحماية للشبكة كحاوية لقواعد جدار الحماية. لا يتم فرض القواعد المحدّدة في سياسة جدار الحماية للشبكة في أي مكان إلى أن يتم ربط السياسة بشبكة VPC. يمكن لكل شبكة VPC أن تكون لها سياسة جدار حماية واحدة مرتبطة بها. تتوافق سياسات جدار الحماية للشبكة مع العلامات المُدارة لإدارة الهوية وإمكانية الوصول (أو العلامات فقط) في قواعد جدار الحماية، والتي تحل محل علامات الشبكة الحالية ويمكن استخدامها لتوفير الهوية لأعباء العمل.
تؤدي مشاركة سياسة جدار الحماية للشبكة عبر الشبكات والتكامل مع العلامات المُدارة لإدارة الهوية وإمكانية الوصول إلى تبسيط عملية تهيئة جدران الحماية وإدارتها إلى حد كبير.
مع طرح سياسة جدار الحماية للشبكة، أصبحت سياسات جدار الحماية في Google Cloud تتكوّن الآن من العناصر التالية:
- سياسة جدار الحماية الهرمي
- قواعد جدار الحماية لبرنامج VC
- سياسة جدار حماية الشبكة ( عالمية وإقليمية)
تتوفّر سياسات جدار الحماية الهرمي في عُقد المؤسسة والمجلدات ضمن التسلسل الهرمي للموارد، في حين يتم تطبيق قواعد جدار الحماية لـ 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 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 وشبكة فرعية
شبكة VC
إنشاء 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
أنشئ أجهزة توجيه السحابة الإلكترونية وبوابات "ترجمة عنوان الشبكة" في السحابة الإلكترونية لـ 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 الواردة من نطاقات عمليات الشراء داخل التطبيق في حال لم يتم تحديدها بعد كجزء من إعداد الشراء داخل التطبيق:
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 التي كان يجب إنشاؤها عند ضبط الشراء داخل التطبيق مع بداية هذا القسم)، ويتم تلقائيًا رفض جميع زيارات الدخول، لن تتمكّن مثيلات العميل من الوصول إلى خوادم الويب المعنيّة. للتحقّق من انتهاء مهلة الطلب، افتح نافذة جديدة وابدأ جلسة SSH على المثيل fwpolicy-vpc1-client وجرِّب خادم الويب:
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 وجرِّب إجراء تجعيد الصوت مرة أخرى (يُرجى العلم أنّ الأمر أدناه يفترض أنّه تم استخدام 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- علامات إدارة الهوية وإمكانية الوصول
العلامة هي زوج المفتاح/القيمة التي يمكن إرفاقها بمؤسسة أو مجلد أو مشروع. راجِع إنشاء العلامات وإدارتها والأذونات المطلوبة للحصول على مزيد من التفاصيل.
يتيح لك دور TagAdmin إنشاء علامات جديدة وتعديل العلامات الحالية وحذفها. ويمكن لمشرف المؤسسة منح هذا الدور. من Cloud Shell، عدِّل سياسة "إدارة الهوية وإمكانية الوصول" لإضافة دور "مشرف العلامة" إلى المستخدِم. استخدِم صفحة مرجع الأذونات لمعرفة الأذونات التي يتم تضمينها في كل دور محدَّد مسبقًا.
gcloud organizations add-iam-policy-binding $org_id \ --member user:[user@example.com] --role roles/resourcemanager.tagAdmin
شغِّل الأمر أدناه للتحقّق من المستخدمين الذين لديهم دور resourcesmanager.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 وحاوِل تنفيذ ما يلي:
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 وشبكة فرعية وعميل جديدة، واضبط تبادل المعلومات بين الشبكات في 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 الواردة من نطاقات عمليات الشراء داخل التطبيق في حال لم يتم تحديدها بعد كجزء من إعداد الشراء داخل التطبيق:
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 وجرِّب عنوان 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. تهانينا!
تهانينا، لقد تمت تهيئة سياسة جدار حماية الشبكة العامة والتحقّق منها بنجاح من خلال إعداد العلامات.