أصبحت نماذج الأمن القائمة على الحدود التقليدية، التي تُصور غالباً كهندسة القلعة والخندق، عفا عليها الزمن. في البيئات الحديثة الأصلية للسحابة، تكون أحمال العمل مؤقتة، والحدود الشبكية ضبابية، وتأتي التهديدات من داخل الشبكة وخارجها. يتطلب هذا التحول الانتقال نحو هندسة الثقة الصفرية (ZTA). في هذا السياق، عبارة "لا تثق أبداً، تحقق دائماً" ليست مجرد شعار، بل هي مطلب هندسي أساسي.
من التركيز على الشبكة إلى التركيز على الهوية
تاريخياً، اعتمدت التحكم في الوصول على عناوين IP والمناطق الشبكية. إذا كان الطلب صادرًا من الشبكة المحلية للشركة، فإنه كان يُعتبر موثوقاً. في بيئة الخدمات المصغرة، يفشل هذا النهج. تقوم الحاويات بتوسيع النطاق أفقياً، وتتغير عناوين IP للأقراص المؤقتة باستمرار، وتتواصل الخدمات عبر الشبكات العامة والخاصة.
تنقل الثقة الصفرية التركيز من الشبكة إلى هوية الكيان الذي يقدم الطلب. سواء كان ذلك الكيان مستخدماً، أو تطبيقاً، أو خدمة أخرى، يجب التحقق من هويته، وتفويضه، والتحقق منه باستمرار قبل الوصول إلى أي بيانات. يضمن هذا المفهوم، الذي يُشار إليه غالباً بـ "الوكيل الواعي للهوية" أو "بروتوكول TLS المتبادل (mTLS)"، أنه حتى إذا تم اختراق خدمة ما، لا يمكن للمهاجم التحرك بسهولة إلى خدمات أخرى لأنه يفتقر إلى الاعتماديات المناسبة.
دور شبكة الخدمات
إن تنفيذ الثقة الصفرية يدوياً لكل خدمة مصغرة أمر عرضة للأخطاء وغير قابل للتوسع. هنا تصبح شبكات الخدمات مثل Istio أو Linkerd مكونات بنية تحتية حرجة. توفر شبكة الخدمات طبقة بنية تحتية مخصصة لتواصل الخدمة مع الخدمة، وتتعامل مع التشفير، والمصادقة، والتفويض بشكل شفاف دون الحاجة إلى تغييرات في كود منطق التطبيق.
الآلية الأساسية للأمن المتمحور حول الهوية في شبكة الخدمات هي بروتوكول TLS المتبادل (mTLS). على عكس TLS القياسي، حيث تثبت الخادم فقط هويتها للعميل، يتطلب mTLS من كلا الطرفين تقديم شهادات. في نظام بيئي للخدمات المصغرة، عادة ما تصدر هذه الشهادات من سلطة الشهادات (CA) التي تديرها لوحة التحكم لشبكة الخدمات.
التنفيذ العملي باستخدام Istio
لننظر في كيفية فرض سياسة mTLS صارمة في شبكة خدمات Istio. بشكل افتراضي، تعمل العديد من العناقيد في وضع "PERMISSIVE" (تسامح)، الذي يسمح بحركة المرور النصية العادية وTLS. للحصول على وضعية ثقة صفرية حقيقية، يجب فرض وضع "STRICT" (صارم).
يحدد تكوين YAML التالي سياسة PeerAuthentication التي تنطبق على مساحة الاسم بأكملها، مما يتطلب تشفير ومصادقة جميع حركة المرور الواردة والصادرة:
apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
name: default
namespace: production
spec:
mtls:
mode: STRICT
بالإضافة إلى ذلك، لضمان أن الخدمات يمكنها التواصل فقط مع الأقران المصرح لهم، نقوم بتنفيذ AuthorizationPolicy. يمنع هذا الحركة الجانبية من خلال رفض أي حركة مرور لا تتطابق صراحةً مع القواعد المحددة.
apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
name: require-jwt
namespace: production
spec:
selector:
matchLabels:
app: frontend-service
action: ALLOW
rules:
- from:
- source:
requestPrincipals: ["cluster.local/ns/default/sa/backend-service"]
في هذا المثال، سيقبل frontend-service الطلبات فقط إذا كانت صادرة من حساب backend-service، والذي يتم التحقق منه عبر JWT موقع. يتم رفض أي مصدر آخر، حتى لو كان داخل نفس عنقود Kubernetes.
التحقق المستمر والهويات قصيرة العمر
يتجاوز تنفيذ الثقة الصفرية القوي المصادقة في الاتصال الأولي. فهو يتضمن التحقق المستمر من الثقة. تستخدم الهياكل الحديثة المتمحورة حول الهوية شهادات قصيرة العمر (على سبيل المثال، صالحة لمدة ساعة إلى ساعتين) تصدرها سلطة CA موزعة. يقلل هذا من حجم الانفجار في حالة اختراق شهادة. إذا تم تسريب المفتاح الخاص، فإنه ينتهي صلاحيته بسرعة، مما يحد من نافذة الفرصة المتاحة للمهاجم.
علاوة على ذلك، يسمح التكامل مع مزودي الهوية الخارجيين (IdPs) بالتحكم الدقيق في الوصول استناداً إلى سمات المستخدم، والأدوار، والسياق. هذا مهم بشكل خاص لبوابات API التي تعرض الخدمات المصغرة الداخلية للمستهلكين الخارجيين.
الخاتمة
إن تنفيذ الثقة الصفرية في الخدمات المصغرة هو رحلة، وليس وجهة. يتطلب تحولاً ثقافياً نحو الدفاع متعدد الطبقات واعتماد أدوات متمحورة حول الهوية مثل شبكات الخدمات. من خلال فرض TLS المتبادل، وسياسات التفويض الصارمة، والاعتماديات قصيرة العمر، يمكن للمنظمات تقليل سطح الهجوم بشكل كبير ومنع الحركة الجانبية. مع تقدمنا أكثر في عصر الحوسبة الموزعة، لم يعد جعل الهوية هي الحد الجديد خياراً—it هو أمر ضروري لمعمارية البرمجيات المرنة.