1. مقدمة
الخادم الوكيل الآمن للويب في السحابة الإلكترونية
إنّ Cloud SWP هي خدمة تستند إلى السحابة الإلكترونية في المقام الأول، وتوفِّر خادمًا وكيلاً آمنًا للويب لمساعدتك في تأمين حركة بيانات الويب الصادرة (HTTP/S). يمكنك ضبط برامجك على استخدام Cloud SWP بشكل صريح كخادم وكيل. يمكن أن تنشأ طلبات الويب من المصادر التالية:
- مثيلات الأجهزة الافتراضية
- الحاويات
- يشير هذا المصطلح إلى بيئة بدون خادم تستخدم موصِّلاً بدون خادم.
- أعباء العمل من خلال تبادل المعلومات بين شبكات VPC
- أعباء العمل خارج Google Cloud المتصلة بشبكة VPN أو Cloud Interconnect
توفِّر عملية محو بيانات السحابة الإلكترونية سياسات مرنة ودقيقة استنادًا إلى الهويات وتطبيقات الويب التي تعتمِد على السحابة الإلكترونية أولاً.
المزايا
في ما يلي بعض الأمثلة على المزايا التي يمكن أن توفّرها ميزة Cloud SWP للمؤسسات:
نقل البيانات إلى Google Cloud
تساعدك ميزة Cloud SWP في نقل البيانات إلى Google Cloud مع الاحتفاظ بسياسات الأمان والمتطلبات الحالية لحركة بيانات الويب الصادرة. يمكنك تجنُّب استخدام حلول الجهات الخارجية التي تتطلب وحدة تحكُّم إدارة أخرى أو تعديل ملفات الإعداد يدويًا.
الوصول إلى خدمات ويب خارجية موثوق بها
تتيح لك خدمة Cloud SWP تطبيق سياسات وصول دقيقة على حركة بيانات الويب الخارجة حتى تتمكّن من تأمين شبكتك. عليك إنشاء وتحديد هويات العمل أو التطبيقات، ثم تطبيق السياسات.
الوصول الخاضع للمراقبة إلى خدمات الويب غير الموثوق بها
يمكنك استخدام Cloud SWP لتوفير وصول مُراقب إلى خدمات الويب غير الموثوق بها. تحدِّد خدمة Cloud SWP الزيارات التي لا تتوافق مع السياسة وتسجِّلها في Cloud Logging (تسجيل الدخول). يمكنك بعد ذلك مراقبة استخدام الإنترنت واكتشاف التهديدات التي تتعرض لها شبكتك والاستجابة للتهديدات.
عناصر تحكّم مفصَّلة في السياسات لـ Google APIs
يمكنك استخدام Cloud SWP لتوفير سياسات دقيقة بشأن Google APIs. على سبيل المثال، يمكنك ضبط السياسات على مستوى الحزمة/الكائنات التي تعتمد لغة التعبير الشائعة (CEL).
الميزات المتاحة
توفِّر أداة Cloud SWP الميزات التالية:
خدمة الخادم الوكيل الفاضح
يجب أن يتم ضبط العملاء صراحةً لاستخدام الخادم الوكيل. يعزل خادم Cloud SWP الوكيل العملاء عن الإنترنت من خلال إنشاء اتصالات TCP جديدة نيابةً عن العميل.
التوسيع التلقائي للخوادم الوكيلة لبرنامج Cloud SWP Envoy
تتيح التعديل التلقائي لحجم مجموعة الخادم الوكيل في Envoy وسعة المجموعة في منطقة معيّنة، ما يتيح تحقيق أداء متّسق خلال الفترات التي يزداد فيها الطلب بأقلّ تكلفة.
السياسات المعيارية للوصول إلى الخروج
تتوافق أداة Cloud SWP على وجه التحديد مع سياسات الخروج التالية:
- هوية المصدر استنادًا إلى علامات الأمان أو حسابات الخدمة أو عناوين IP
- الوجهات المستندة إلى عناوين URL وأسماء المضيفين
- الطلبات المستندة إلى الطرق أو العناوين أو عناوين URL. يمكن تحديد عناوين URL باستخدام القوائم أو أحرف البدل أو الأنماط.
- التشفير التام بين الأطراف: قد يتم نقل أنفاق العميل الوكيل عبر بروتوكول أمان طبقة النقل (TLS). تتوافق ميزة Cloud SWP أيضًا مع بروتوكول HTTP/S CONNECT لاتصالات بروتوكول أمان طبقة النقل (TLS) التي يبدأها العميل من طرف إلى طرف بالخادم الوجهة.
دمج مبسّط لترجمة عنوان الشبكة في السحابة الإلكترونية
توفِّر آلية ترجمة عنوان الشبكة في السحابة الإلكترونية تلقائيًا عناوين IP عامة إضافية عند زيادة مجموعة الخوادم الوكيلة التي تخدم حركة بيانات التبديل في السحابة الإلكترونية (SWP).
إنّ عناوين IP العامة الثابتة واليدوية هي أيضًا خيار للمستخدمين الذين يريدون أن يكون لديهم عناوين IP معروفة للمخرج.
دمج سجلات تدقيق السحابة الإلكترونية وحزمة عمليات Google Cloud
تعمل سجلات تدقيق Cloud وحزمة عمليات Google Cloud على تسجيل الأنشطة الإدارية وطلبات الوصول إلى الموارد ذات الصلة ببرنامج Cloud SWP. وتسجّل أيضًا المقاييس وسجلات المعاملات للطلبات التي يعالجها الخادم الوكيل.
فحص بروتوكول أمان طبقة النقل (TLS)
يوفِّر خادم وكيل الويب الآمن خدمة فحص بروتوكول أمان طبقة النقل (TLS) التي تتيح لك اعتراض عدد زيارات بروتوكول أمان طبقة النقل (TLS) وفحص الطلب المُشفَّر وفرض سياسات الأمان.
- تكامُل محكم مع خدمة مرجع التصديق (CAS)، وهي مستودع متاح وقابل للتوسع بدرجة كبيرة للمراجع المصدقة الخاصة.
- إمكانية استخدام جذرك الخاص إذا لزم الأمر يمكنك أيضًا استخدام هيئة إصدار شهادات الجذر الحالية لتوقيع شهادات CA التابعة التابعة لهيئة CAS. إذا كنت تفضل ذلك، يمكنك إنشاء شهادة جذر جديدة داخل CAS.
- معايير فك التشفير الدقيقة باستخدام SessionMatcher وApplicationMatcher ضمن قواعد سياسة خادم وكيل الويب الآمن وتتضمن هذه المعايير المضيفين المطابقين الموجودين في قوائم عناوين URL والتعبيرات العادية ونطاقات عناوين IP والتعبيرات المتشابهة. وإذا لزم الأمر، يمكن دمج المعايير مع التعبيرات المنطقية.
- يمكن ضبط كل سياسة من سياسات خادم وكيل الويب الآمن من خلال سياسة فحص بروتوكول أمان طبقة النقل (TLS) الخاصة بها ومجمّع مرجع التصديق. يمكن أن تتشارك عدة سياسات لخادم وكيل الويب الآمن بدلاً من ذلك سياسة فحص واحدة لبروتوكول أمان طبقة النقل (TLS).
ما ستتعرَّف عليه
- كيفية نشر وإدارة عملية محو بيانات السحابة الإلكترونية
المتطلبات
- معرفة نشر المثيلات وتهيئة مكونات الشبكة
- معلومات حول إعداد جدار الحماية لـ VPC
2. بيئة الاختبار
سيعتمد هذا الدرس التطبيقي حول الترميز على شبكة VPC واحدة. سيخرج مورد حوسبة في هذه البيئة باستخدام عملية محو بيانات الخدمة من السحابة الإلكترونية كما هو موضح في المخطّط أدناه.
في هذا التمرين المعملي، سيكون هناك جهازان افتراضيان لأعباء العمل.
سيتم ضبط العميل أ على إرسال كل طلبات HTTP/HTTPS إلى عملية محو بيانات الخدمة على السحابة الإلكترونية.
لن يتم ضبط العميل ب على إرسال طلبات HTTP/HTTPS بشكل صريح إلى عملية محو بيانات الخدمة على السحابة الإلكترونية، ولكن بدلاً من ذلك يمكنه استخدام ترجمة عنوان الشبكة في السحابة الإلكترونية مع حركة البيانات المرتبطة بالإنترنت.
3- قبل البدء
يتطلّب الدرس التطبيقي حول الترميز مشروعًا واحدًا.
داخل Cloud Shell، تأكَّد من إعداد رقم تعريف مشروعك.
export project_id=`gcloud config list --format="value(core.project)"` export project_number=`gcloud projects describe $project_id --format="value(projectNumber)"` export region=us-west1 export zone=us-west1-a export prefix=codelab-swp export member="serviceAccount:service-$project_number@gcp-sa-networksecurity.iam.gserviceaccount.com"
4. تفعيل واجهات برمجة التطبيقات
تفعيل واجهات برمجة التطبيقات لاستخدام المنتجات
gcloud services enable networksecurity.googleapis.com gcloud services enable certificatemanager.googleapis.com gcloud services enable networkservices.googleapis.com
5- إنشاء شبكة VPC وشبكة فرعية وشبكة فرعية للخادم الوكيل فقط
شبكة VC
أنشِئ codelab-swp-vpc VPC:
gcloud compute networks create $prefix-vpc --subnet-mode=custom
الشبكة الفرعية
أنشئ الشبكات الفرعية المعنية في المنطقة المحددة:
gcloud compute networks subnets create $prefix-vpc-subnet \ --range=10.10.10.0/24 --network=$prefix-vpc --region=$region
الشبكة الفرعية للخادم الوكيل فقط
أنشئ شبكة فرعية للخادم الوكيل فقط في المنطقة المحدّدة:
gcloud compute networks subnets create $prefix-proxy-only-subnet --purpose=REGIONAL_MANAGED_PROXY --role=ACTIVE --region=$region --network=$prefix-vpc --range=172.16.0.0/23
6- إنشاء قواعد جدار حماية
للسماح لعمليات الشراء داخل التطبيق بالاتصال بمثيلات الأجهزة الافتراضية، أنشِئ قاعدة جدار حماية تعمل على:
- ينطبق ذلك على جميع مثيلات الأجهزة الافتراضية التي تريد أن تتوفّر إمكانية الوصول إليها من خلال استخدام الشراء داخل التطبيق.
- يسمح بالزيارات الواردة من نطاق IP 35.235.240.0/20. يحتوي هذا النطاق على جميع عناوين IP التي يستخدمها بروتوكول IAP لإعادة توجيه بروتوكول التحكم بالنقل.
من cloudshell:
gcloud compute firewall-rules create $prefix-allow-iap-proxy \ --direction=INGRESS \ --priority=1000 \ --network=$prefix-vpc \ --action=ALLOW \ --rules=tcp:22 \ --source-ranges=35.235.240.0/20
7. إنشاء Cloud Router ترجمة عنوان الشبكة في السحابة الإلكترونية (NAT)
إنشاء Cloud Router لتطبيق Cloud NAT (ترجمة عنوان الشبكة).
gcloud compute routers create ${prefix}-cr \ --region=$region \ --network=${prefix}-vpc
إنشاء بوابة NAT في السحابة الإلكترونية للعميل "ب".
gcloud compute routers nats create $prefix-nat-gw-$region \ --router=$prefix-cr \ --router-region=$region \ --auto-allocate-nat-external-ips \ --nat-all-subnet-ip-ranges
8. إنشاء سياسة أمان المدخل
إنشاء ملف yaml يحتوي على معلومات ذات صلة بالسياسة:
cat > /tmp/policy.yaml << EOF description: Policy to allow .com traffic, then (/index.html), and finally TLS. name: projects/${project_id}/locations/${region}/gatewaySecurityPolicies/${prefix}-policy EOF
شغّل الأمر gcloud لإنشاء السياسة من ملف yaml:
gcloud network-security gateway-security-policies import ${prefix}-policy --source=/tmp/policy.yaml --location=${region}
9. إنشاء قاعدة سياسة أمان المدخل
أنشئ ملف yaml يحتوي على القواعد. يتم تمثيل هذه القواعد بلغة التعبير الشائعة (CEL). ستستخدم هذه الميزة الاختبارية قاعدة بسيطة تتيح الزيارات إلى نطاقات .com وتحظر جميع النطاقات الأخرى:
cat > /tmp/rule-com.yaml << EOF name: projects/${project_id}/locations/${region}/gatewaySecurityPolicies/${prefix}-policy/rules/rule-com enabled: true priority: 1 description: Allow .com traffic basicProfile: ALLOW sessionMatcher: host().endsWith('com') EOF
يمكننا الآن ربط القاعدة بسياسة أمان البوابة:
gcloud network-security gateway-security-policies rules import rule-com --source=/tmp/rule-com.yaml --location=${region} --gateway-security-policy=${prefix}-policy
10. إنشاء شهادة وتحميلها إلى Cloud Certificate Manager
إنشاء شهادة لإنهاء حركة بيانات حمل العمل:
openssl req -x509 -newkey rsa:2048 -keyout /tmp/key.pem -out /tmp/cert.pem -days 365 -subj '/CN=www.codelab-swp.com' -nodes -addext \ "subjectAltName = DNS:www.codelab-swp.com"
حمِّل الشهادة إلى Cloud Certificate Manager حتى تتمكّن ميزة "عملية إيقاف الخدمة" من الرجوع إليها في سياسة مدخل الأمان.
gcloud certificate-manager certificates create ${prefix}-cert --location=${region} --private-key-file=/tmp/key.pem --certificate-file=/tmp/cert.pem
11. إنشاء بوابة عملية محو بيانات المستخدم
أنشئ ملف yaml لبوابة SWP للإشارة إلى المعلومات السابقة مثل الشهادة وسياسة أمان البوابة والشبكة والشبكة الفرعية.
cat > /tmp/gateway.yaml << EOF name: projects/${project_id}/locations/${region}/gateways/${prefix}-gateway type: SECURE_WEB_GATEWAY addresses: [10.10.10.50] ports: [443] certificateUrls: [projects/${project_id}/locations/${region}/certificates/${prefix}-cert] gatewaySecurityPolicy: projects/${project_id}/locations/${region}/gatewaySecurityPolicies/${prefix}-policy network: projects/${project_id}/global/networks/${prefix}-vpc subnetwork: projects/${project_id}/regions/${region}/subnetworks/${prefix}-vpc-subnet EOF
إنشاء البوابة:
gcloud network-services gateways import ${prefix}-swp --source=/tmp/gateway.yaml --location=${region}
تأكَّد من إنشاء البوابة:
gcloud network-services gateways describe ${prefix}-swp --location ${region}
12. إنشاء مثيلات الحوسبة
بما أنّ Cloud SWP هو خادم وكيل صريح، نحتاج إلى تحديد عنوان IP للخادم الوكيل بشكل صريح للزيارات الواردة من حِمل العمل. سيتم ضبط متغيّر البيئة لمثيل الحوسبة clientA. لن يفعل ClientB ذلك.
إنشاء مثيلات الحوسبة ClientA وClientB:
gcloud compute instances create clienta \ --subnet=$prefix-vpc-subnet \ --no-address \ --private-network-ip=10.10.10.10 \ --zone $zone \ --metadata startup-script='#! /bin/bash apt-get update sudo echo http_proxy=https://10.10.10.50:443/ >> /etc/environment sudo echo https_proxy=https://10.10.10.50:443/ >> /etc/environment '
gcloud compute instances create clientb \ --subnet=$prefix-vpc-subnet \ --no-address \ --private-network-ip=10.10.10.200 \ --zone $zone \ --metadata startup-script='#! /bin/bash apt-get update '
13. اختبار مطابقة الجلسات
بروتوكول النقل الآمن (SSH) إلى "clienta" حوسبة افتراضي تم إنشاؤه مؤخرًا. يحتوي هذا الجهاز الافتراضي على المتغيّر البيئي مضبوطًا على استخدام Cloud SWP.
من cloudshell:
gcloud compute ssh clienta --zone=$zone --tunnel-through-iap
تنفيذ بعض طلبات البحث على الويب للتحقّق من صحة الوظيفة نحتاج إلى خادم وكيل غير آمن لأنّنا أنشأنا شهادة موقعة ذاتيًا لهذا التمرين المعملي:
curl https://google.com --proxy-insecure
المخرجات المتوقعة:
davidtu@clienta:~$ curl https://google.com --proxy-insecure <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"> <TITLE>301 Moved</TITLE></HEAD><BODY> <H1>301 Moved</H1> The document has moved <A HREF="https://www.google.com/">here</A>. </BODY></HTML>
كما ترى، كان الطلب "ناجحًا". ومن المتوقّع أن تظهر لنا عملية إعادة التوجيه 301 بسبب إعادة توجيه الموقع الإلكتروني إلى https://www.google.com.
يؤدي تشغيل الأمر التالي إلى توفير سجلات مطوّلة تحتوي على تفاصيل حول الاتصال:
curl https://google.com --proxy-insecure -v
تمييز بعض النتائج لعرض تفاصيل اتصال الخادم الوكيل والشهادات والوجهة
davidtu@clienta:~$ curl https://google.com --proxy-insecure -v * Uses proxy env variable https_proxy == 'https://10.10.10.50:443/' * Trying 10.10.10.50:443... * Connected to 10.10.10.50 (10.10.10.50) port 443 (#0) * ALPN, offering http/1.1 * successfully set certificate verify locations: * CAfile: /etc/ssl/certs/ca-certificates.crt * CApath: /etc/ssl/certs * TLSv1.3 (OUT), TLS handshake, Client hello (1): * TLSv1.3 (IN), TLS handshake, Server hello (2): * TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8): * TLSv1.3 (IN), TLS handshake, Certificate (11): * TLSv1.3 (IN), TLS handshake, CERT verify (15): * TLSv1.3 (IN), TLS handshake, Finished (20): * TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1): * TLSv1.3 (OUT), TLS handshake, Finished (20): * SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384 * ALPN, server accepted to use http/1.1 * Proxy certificate: * subject: CN=www.codelab-swp.com * start date: Dec 12 17:16:35 2022 GMT * expire date: Dec 12 17:16:35 2023 GMT * issuer: CN=www.codelab-swp.com * SSL certificate verify result: self signed certificate (18), continuing anyway. * allocate connect buffer! * Establish HTTP proxy tunnel to google.com:443 > CONNECT google.com:443 HTTP/1.1 > Host: google.com:443 > User-Agent: curl/7.74.0 > Proxy-Connection: Keep-Alive > * TLSv1.3 (IN), TLS handshake, Newsession Ticket (4): * TLSv1.3 (IN), TLS handshake, Newsession Ticket (4): < HTTP/1.1 200 OK < date: Mon, 12 Dec 2022 19:22:04 GMT < * Proxy replied 200 to CONNECT request * CONNECT phase completed! ...
يمكنك تجربة نطاقات com .أخرى للتحقّق من الوظائف.
لنجرب الآن بعض النطاقات الأخرى التي لا تتبع com. للتحقق من سلوك الحظر الافتراضي:
curl https://wikipedia.org --proxy-insecure
المخرجات المتوقعة:
curl: (56) Received HTTP code 403 from proxy after CONNECT
وبالمثل، راجِع التسجيل المطوَّل للمخرجات وتأكَّد من أنّ Cloud SWP تحظر هذه الزيارات:
curl https://wikipedia.org --proxy-insecure -v
davidtu@clienta:~$ curl https://wikipedia.org --proxy-insecure -v * Uses proxy env variable https_proxy == 'https://10.10.10.50:443/' * Trying 10.10.10.50:443... * Connected to 10.10.10.50 (10.10.10.50) port 443 (#0) * ALPN, offering http/1.1 * successfully set certificate verify locations: * CAfile: /etc/ssl/certs/ca-certificates.crt * CApath: /etc/ssl/certs * TLSv1.3 (OUT), TLS handshake, Client hello (1): * TLSv1.3 (IN), TLS handshake, Server hello (2): * TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8): * TLSv1.3 (IN), TLS handshake, Certificate (11): * TLSv1.3 (IN), TLS handshake, CERT verify (15): * TLSv1.3 (IN), TLS handshake, Finished (20): * TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1): * TLSv1.3 (OUT), TLS handshake, Finished (20): * SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384 * ALPN, server accepted to use http/1.1 * Proxy certificate: * subject: CN=www.codelab-swp.com * start date: Dec 12 17:16:35 2022 GMT * expire date: Dec 12 17:16:35 2023 GMT * issuer: CN=www.codelab-swp.com * SSL certificate verify result: self signed certificate (18), continuing anyway. * allocate connect buffer! * Establish HTTP proxy tunnel to wikipedia.org:443 > CONNECT wikipedia.org:443 HTTP/1.1 > Host: wikipedia.org:443 > User-Agent: curl/7.74.0 > Proxy-Connection: Keep-Alive > * TLSv1.3 (IN), TLS handshake, Newsession Ticket (4): * TLSv1.3 (IN), TLS handshake, Newsession Ticket (4): < HTTP/1.1 403 Forbidden < content-length: 13 < content-type: text/plain < date: Mon, 12 Dec 2022 19:35:09 GMT < connection: close < * Received HTTP code 403 from proxy after CONNECT * CONNECT phase completed! * Closing connection 0 curl: (56) Received HTTP code 403 from proxy after CONNECT
يمكنك تجربة نطاقات أخرى أيضًا للتحقق من السلوك.
إنهاء جلسة بروتوكول النقل الآمن (SSH) إلى "العميل" وبدء اتصال SSH جديد بـ "clientb".
gcloud compute ssh clientb --zone=$zone --tunnel-through-iap
شغِّل بعض أوامر curl للتحقّق من السلوك:
curl https://google.com
من المفترض أن يعمل هذا على النحو المتوقَّع في Clientb VM:
davidtu@clientb:~$ curl https://google.com <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"> <TITLE>301 Moved</TITLE></HEAD><BODY> <H1>301 Moved</H1> The document has moved <A HREF="https://www.google.com/">here</A>. </BODY></HTML>
إجراء الاختبار على نطاق مؤسسة:
curl https://wikipedia.org
ويعمل ذلك على النحو المتوقّع لأنّ العميل لا يستخدم ميزة Cloud SWP:
davidtu@clientb:~$ curl https://wikipedia.org <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>301 Moved Permanently</title> </head><body> <h1>Moved Permanently</h1> <p>The document has moved <a href="https://www.wikipedia.org/">here</a>.</p> </body></html>
يمكنك اختبار إرسال حركة البيانات بشكل صريح من خلال Cloud SWP:
curl -x https://10.10.10.50:443/ https://wikipedia.org --proxy-insecure
يتضح لنا أنّه تم رفض حركة البيانات هذه من خلال سياسة Cloud SWP:
davidtu@clientb:~$ curl -x https://10.10.10.50:443/ https://wikipedia.org --proxy-insecure curl: (56) Received HTTP code 403 from proxy after CONNECT
لقد تحقّقت من أنّه يتم فرض حركة البيانات التي تستفيد من Cloud SWP على سياسة الأمان التي تم ضبطها. يُسمح بالزيارات المتجهة إلى .com، ويتم رفض جميع الوجهات الأخرى.
اخرج من العميل.
14. تعديل قاعدة سياسة أمان المدخل من أجل ApplicationMatching
لنعدّل القاعدة لتتطابق مع التفاصيل على مستوى التطبيق. سننشئ قاعدة للنظر في مسار الطلب ولن نسمح به إلا إذا كان يتطابق مع index.html.
cat > /tmp/rule-com.yaml << EOF name: projects/${project_id}/locations/${region}/gatewaySecurityPolicies/${prefix}-policy/rules/rule-com enabled: true priority: 1 description: Allow .com traffic with path index.html basicProfile: ALLOW sessionMatcher: host().endsWith('com') applicationMatcher: request.path.matches('index.html') EOF
يمكننا الآن ربط القاعدة المُعدَّلة بسياسة أمان المدخل:
gcloud network-security gateway-security-policies rules import rule-com --source=/tmp/rule-com.yaml --location=${region} --gateway-security-policy=${prefix}-policy
15. اختبار قاعدة ApplicationMatcher
بروتوكول النقل الآمن إلى clienta compute VM. يحتوي هذا الجهاز الافتراضي على المتغيّر البيئي مضبوطًا على استخدام Cloud SWP.
من cloudshell:
gcloud compute ssh clienta --zone=$zone --tunnel-through-iap
تنفيذ بعض طلبات البحث على الويب للتحقّق من صحة الوظيفة نحتاج إلى خادم وكيل غير آمن لأنّنا أنشأنا شهادة موقعة ذاتيًا لهذا التمرين المعملي:
curl http://google.com --proxy-insecure
لاحظ أن هذا الاستعلام سيفشل عند اجتيازه سابقًا.
Access denied
أي مسار طلب إلى جانب "index.html" رسالة الخطأ 403. يُرجى عدم التردّد في اختبار ذلك الأمر.
قم بتعديل طلب البحث لتضمين المسار /index.html
curl http://google.com/index.html --proxy-insecure
من المفترض أن يكون هذا الطلب ناجحًا:
davidtu@clienta:~$ curl http://google.com/index.html --proxy-insecure <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"> <TITLE>301 Moved</TITLE></HEAD><BODY> <H1>301 Moved</H1> The document has moved <A HREF="https://www.google.com/index.html">here</A>. </BODY></HTML>
ومن المتوقّع أن تظهر لنا عملية إعادة التوجيه 301 نظرًا إلى أنّ الموقع الإلكتروني يعيد التوجيه إلى http://www.google.com/index.html.
لاحظ أن هذا طلب HTTP. بعد ذلك، ستحتاج إلى تفعيل ميزة محو بيانات الخدمة (SWP) للحصول على إمكانات فحص بروتوكول أمان طبقة النقل (TLS).
بعد ذلك، شغِّل طلب البحث نفسه ولكن عبر بروتوكول أمان طبقة النقل (TLS):
curl -k https://google.com/index.html --proxy-insecure
المخرجات المتوقعة:
curl: (56) Received HTTP code 403 from proxy after CONNECT
من المفترَض أن يتعذّر هذا الطلب لأنّ عملية محو بيانات الخدمة لم يتم ضبطها لفحص بروتوكول أمان طبقة النقل (TLS) ولا يمكنها تقييم المسار وفقًا لقاعدة applicationMatcher.
يُرجى الخروج من Centa.
16. تفعيل فحص بروتوكول أمان طبقة النقل (TLS)
بدون فحص بروتوكول أمان طبقة النقل (TLS)، لن تتم مطابقة applicationMatcher مع عدد زيارات HTTPS.
"applicationMatcher" يسمح بالفلترة على ما يلي:
- ربط العناوين
- طريقة الطلب
- طلب المضيف
- مسار الطلب
- طلب البحث
- مخطط الطلبات
- عنوان URL للطلب الكامل
- طلب وكيل المستخدم
إنشاء حساب الخدمة
سيحصل حساب الخدمة هذا على الأذونات لإنشاء شهادات لفحص بروتوكول أمان طبقة النقل (TLS) في ميزة SWP.
gcloud beta services identity create \ --service=networksecurity.googleapis.com \ --project=$project_id
التأكّد من تفعيل خدمة CAS
gcloud services enable privateca.googleapis.com
إنشاء مجموعة مصادر تصديق
gcloud privateca pools create $prefix-ca-pool \ --tier=devops \ --project=$project_id \ --location=$region
إنشاء مرجع تصديق جذر
مرجع تصديق مستخدَم لتوقيع الشهادة
gcloud privateca roots create $prefix-root-ca --pool=$prefix-ca-pool \ --location=$region \ --auto-enable \ --subject="CN=my-swp-ca, O=SWP LLC"
إنشاء ملف سياسة إصدار الشهادات
cat > /tmp/tls-issuance-policy.yaml << EOF maximumLifetime: 1209600s baselineValues: caOptions: isCa: false keyUsage: extendedKeyUsage: serverAuth: true EOF
إنشاء ملف yaml لفحص بروتوكول أمان طبقة النقل (TLS)
cat > /tmp/tls-inspection-policy.yaml << EOF caPool: projects/$project_id/locations/$region/caPools/$prefix-ca-pool name: projects/$project_id/locations/$region/tlsInspectionPolicies/$prefix-tls-inspection EOF
إنشاء سياسة فحص بروتوكول أمان طبقة النقل (TLS)
gcloud network-security tls-inspection-policies import $prefix-tls-inspection \ --source=/tmp/tls-inspection-policy.yaml \ --location=$region
تعديل مجموعة مصادر الشهادات (CA) لاستخدام سياسة إصدار الشهادات
gcloud privateca pools update $prefix-ca-pool --issuance-policy=/tmp/tls-issuance-policy.yaml --location=$region
منح الأذونات
ويسمح ذلك لحساب الخدمة باستخدام مجموعة شهادات CA لإنشاء شهادات.
gcloud privateca pools add-iam-policy-binding $prefix-ca-pool \ --member=$member \ --role='roles/privateca.certificateManager' \ --location=$region
تعديل ملف yaml للسياسة ليشمل فحص بروتوكول أمان طبقة النقل (TLS)
cat > /tmp/policy.yaml << EOF description: some policy description name: projects/${project_id}/locations/${region}/gatewaySecurityPolicies/${prefix}-policy tlsInspectionPolicy: projects/${project_id}/locations/${region}/tlsInspectionPolicies/${prefix}-tls-inspection EOF
شغِّل الأمر لتطبيق السياسة المعدّلة.
gcloud network-security gateway-security-policies import ${prefix}-policy --source=/tmp/policy.yaml --location=${region}
تعديل القواعد لتضمين فحص بروتوكول أمان طبقة النقل (TLS)
بعد ذلك، حدِّد القواعد التي يجب أن تتضمّن فحص TLS "enabtlsInspectionEnabled: true" .
cat > /tmp/rule-com.yaml << EOF name: projects/${project_id}/locations/${region}/gatewaySecurityPolicies/${prefix}-policy/rules/rule-com enabled: true priority: 1 description: Allow .com traffic with path index.html basicProfile: ALLOW sessionMatcher: host().endsWith('com') applicationMatcher: request.path.matches('index.html') tlsInspectionEnabled: true EOF
شغِّل الأمر لتطبيق القاعدة المُعدَّلة.
gcloud network-security gateway-security-policies rules import rule-com --source=/tmp/rule-com.yaml --location=${region} --gateway-security-policy=${prefix}-policy
17. اختبار فحص بروتوكول أمان طبقة النقل (TLS)
بروتوكول النقل الآمن إلى clienta compute VM. يحتوي هذا الجهاز الافتراضي على المتغيّر البيئي مضبوطًا على استخدام Cloud SWP.
من cloudshell:
gcloud compute ssh clienta --zone=$zone --tunnel-through-iap
شغِّل طلب بحث الويب السابق للتأكّد مما إذا كانت عملية محو بيانات الخدمة تُجري فحص بروتوكول أمان طبقة النقل (TLS) لاسترداد المسار
curl -k https://google.com/index.html --proxy-insecure
هذه المرة، من المفترض أن تكون ناجحة لأنّ عملية محو بيانات الخدمة يمكنها تقييم ApplicationMatcher.
المخرجات المتوقعة:
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"> <TITLE>301 Moved</TITLE></HEAD><BODY> <H1>301 Moved</H1> The document has moved <A HREF="https://www.google.com/index.html">here</A>. </BODY></HTML>
لقد أعددنا بنجاح عملية محو بيانات السحابة الإلكترونية لفحص بروتوكول أمان طبقة النقل (TLS) وتقييم منطق applicationMatcher.
اخرج من العميل.
18 خطوات التنظيف
من Cloud Shell، أزِل مدخل عملية محو بيانات الخدمة (SWP) وسياسة الأمان والشهادات والمثيلات وCloud NAT وCloud Router:
gcloud -q network-services gateways delete ${prefix}-swp --location=${region} gcloud -q network-security gateway-security-policies rules delete rule-com --location=${region} --gateway-security-policy=${prefix}-policy gcloud -q network-security gateway-security-policies delete ${prefix}-policy --location=${region} gcloud -q certificate-manager certificates delete ${prefix}-cert --location=${region} gcloud -q network-security tls-inspection-policies delete $prefix-tls-inspection --location=$region gcloud -q privateca roots disable $prefix-root-ca --pool=$prefix-ca-pool --location=$region gcloud -q privateca roots delete $prefix-root-ca --pool=$prefix-ca-pool --location=$region --ignore-active-certificates --skip-grace-period gcloud -q privateca pools delete $prefix-ca-pool --location=$region gcloud -q compute instances delete clienta --zone=$zone gcloud -q compute instances delete clientb --zone=$zone gcloud -q compute routers nats delete ${prefix}-nat-gw-${region} \ --router=$prefix-cr --router-region=$region gcloud -q compute routers delete `gcloud compute routers list --regions=$region --format="value(NAME)" | grep -e swg-autogen -e codelab-swp` --region=$region
إزالة الشبكات الفرعية وقواعد البرامج الثابتة وشبكات VPC:
gcloud -q compute networks subnets delete $prefix-vpc-subnet \ --region $region gcloud -q compute networks subnets delete $prefix-proxy-only-subnet \ --region=$region gcloud -q compute firewall-rules delete $prefix-allow-iap-proxy gcloud -q compute networks delete $prefix-vpc
19. تهانينا
تهانينا على إكمال الدرس التطبيقي حول الترميز. لقد ضبطت "خادم وكيل الويب الآمن على السحابة الإلكترونية" ونشره على Google Cloud بنجاح.
المواضيع التي تناولناها
- برنامج Cloud SWP ومزاياه