أفضل الممارسات لأمان المجموعة والترقيات في Azure Kubernetes Service (AKS)
نظراً لأنك تدير المجموعات في Azure Kubernetes Service (AKS)، فإن عبء العمل وأمان البيانات هو أحد الاعتبارات الرئيسية. عند تشغيل مجموعات متعددة المستأجرين باستخدام العزل المنطقي، فإنك تحتاج بشكل خاص إلى تأمين الوصول إلى الموارد وعبء العمل. قلل من مخاطر التعرض للهجوم من خلال تطبيق آخر تحديثات أمان Kubernetes وOS للعقدة.
تركز هذه المقالة على كيفية تأمين مجموعة AKS الخاصة بك. ستتعلم كيفية:
- استخدم معرف Microsoft Entra والتحكم في الوصول المستند إلى دور Kubernetes (Kubernetes RBAC) لتأمين الوصول إلى خادم API.
- قم بتأمين وصول الحاوية إلى موارد العقدة.
- قم بترقية مجموعة AKS إلى أحدث إصدار من Kubernetes.
- حافظ على تحديث العقد وقم بتطبيق تصحيحات الأمان تلقائياً.
يمكنك أيضاً قراءة أفضل ممارسات إدارة صورة الحاوية وأمان pod.
تمكين حماية المخاطر
إرشادات أفضل الممارسات
يمكنك تمكين Defender for Containers للمساعدة في تأمين حاوياتك. يمكن لـ Defender for Containers تقييم تكوينات نظام المجموعة وتقديم توصيات الأمان، وتشغيل عمليات فحص الثغرات الأمنية، وتوفير الحماية والتنبيه في الوقت الحقيقي لعقد Kubernetes ومجموعاتها.
وصول آمن إلى خادم API وعقد المجموعة
إرشادات أفضل الممارسات
تتمثل إحدى أهم الطرق لتأمين مجموعتك في تأمين الوصول إلى خادم Kubernetes API. للتحكم في الوصول إلى خادم API، قم بتكامل Kubernetes RBAC مع معرف Microsoft Entra. باستخدام عناصر التحكم هذه، يمكنك تأمين AKS بنفس طريقة تأمين الوصول إلى اشتراكات Azure الخاصة بك.
يوفر خادم Kubernetes API نقطة اتصال واحدة لطلبات تنفيذ الإجراءات داخل نظام المجموعة. لتأمين الوصول إلى خادم API ومراجعته، قم بتقييد الوصول وتوفير أدنى مستويات الأذونات الممكنة. على الرغم من أن هذا النهج ليس فريداً بالنسبة إلى Kubernetes، إلا إنه مهم بشكل خاص عندما تقوم بعزل مجموعة AKS منطقياً للاستخدام متعدد المستأجرين.
يوفر معرف Microsoft Entra حل إدارة هوية جاهز للمؤسسات يتكامل مع مجموعات AKS. نظراً لأن Kubernetes لا يوفر حلاً لإدارة الهوية، فقد تتعرض لضغوط شديدة لتقييد الوصول إلى خادم واجهة برمجة التطبيقات بشكل دقيق. باستخدام مجموعات Microsoft Entra المتكاملة في AKS، يمكنك استخدام حسابات المستخدم والمجموعة الحالية لمصادقة المستخدمين على خادم API.
باستخدام Kubernetes RBAC وتكامل معرف Microsoft Entra، يمكنك تأمين خادم API وتوفير الحد الأدنى من الأذونات المطلوبة لمجموعة موارد محددة النطاق، مثل مساحة اسم واحدة. يمكنك منح مستخدمي Microsoft Entra مختلفين أو مجموعات أدوار Kubernetes مختلفة. باستخدام الأذونات متعدد المستويات، يمكنك تقييد الوصول إلى خادم واجهة برمجة التطبيقات وتوفير مسار تدقيق واضح للإجراءات التي تم تنفيذها.
أفضل ممارسة موصى بها هي استخدام المجموعات لتوفير الوصول إلى الملفات والمجلدات بدلاً من الهويات الفردية. على سبيل المثال، استخدم عضوية مجموعة معرف Microsoft Entra لربط المستخدمين بأدوار Kubernetes بدلا من المستخدمين الفرديين. مع تغير عضوية مجموعة المستخدم، تتغير أذونات الوصول إلى مجموعة AKS وفقاً لذلك.
في غضون ذلك، لنفترض أنك تربط المستخدم الفردي مباشرة بدور ما وتغيرت وظيفته. أثناء تحديث عضوية مجموعة Microsoft Entra، لن يتم تحديث أذوناتها على نظام مجموعة AKS. في هذا السيناريو، ينتهي الأمر بالمستخدم بأذونات أكثر مما يحتاج إليه.
لمزيد من المعلومات حول تكامل Microsoft Entra وKubernetes RBAC وAzure RBAC، راجع أفضل الممارسات للمصادقة والتخويل في AKS.
تقييد الوصول إلى واجهة برمجة تطبيقات بيانات تعريف المثيل
إرشادات أفضل الممارسات
أضف نهج شبكة في جميع مساحات أسماء المستخدم لحظر خروج الجراب إلى نقطة نهاية بيانات التعريف.
إشعار
لتنفيذ نهج الشبكة، قم بتضمين السمة --network-policy azure
عند إنشاء نظام مجموعة AKS. استخدم الأمر التالي لإنشاء نظام المجموعة: az aks create -g myResourceGroup -n myManagedCluster --network-plugin azure --network-policy azure --generate-ssh-keys
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: restrict-instance-metadata
spec:
podSelector:
matchLabels: {}
policyTypes:
- Egress
egress:
- to:
- ipBlock:
cidr: 10.10.0.0/0#example
except:
- 169.254.169.254/32
تأمين وصول الحاوية إلى الموارد
إرشادات أفضل الممارسات
تقييد الوصول إلى الإجراءات التي يمكن للحاويات القيام بها. قم بتوفير أقل عدد من الأذونات، وتجنب استخدام الوصول إلى الجذر أو التصعيد المميز.
بنفس الطريقة التي يجب أن تمنح بها المستخدمين أو المجموعات الحد الأدنى من الامتيازات المطلوبة، يجب أيضاً قصر الحاويات على الإجراءات والعمليات الضرورية فقط. لتقليل مخاطر الهجوم، تجنب تكوين التطبيقات والحاويات التي تتطلب تصعيد الامتيازات أو الوصول إلى الجذر.
لمزيد من التحكم الدقيق في إجراءات الحاوية، يمكنك أيضاً استخدام ميزات أمان Linux المضمنة مثل AppArmor وseccomp. لمزيد من المعلومات، راجع تأمين وصول الحاوية إلى الموارد.
قم بالتحديث بانتظام إلى أحدث إصدار من Kubernetes
إرشادات أفضل الممارسات
للبقاء على اطلاع بالميزات الجديدة وإصلاحات الأخطاء، قم بترقية إصدار Kubernetes بانتظام في مجموعة AKS الخاصة بك.
تطلق Kubernetes ميزات جديدة بوتيرة أسرع من أنظمة البنية التحتية التقليدية. تتضمن تحديثات Kubernetes ما يلي:
- الميزات الجديدة
- إصلاحات الأخطاء أو الأمان
تنتقل الميزات الجديدة عادةً خلال حالة ألفا وبيتا قبل أن تصبح مستقرة. بمجرد الاستقرار، تكون متاحة بشكل عام ويوصى باستخدامها في الإنتاج. تتيح لك دورة إصدار ميزة Kubernetes الجديدة تحديث Kubernetes دون مواجهة تغييرات متقطعة أو ضبط عمليات التوزيع والقوالب الخاصة بك.
يدعم AKS ثلاثة إصدارات ثانوية من Kubernetes. بمجرد تقديم إصدار تصحيح ثانوي جديد، يتم إيقاف أقدم إصدار ثانوي وإصدارات التصحيح المدعومة. تحدث تحديثات Kubernetes الصغرى على أساس دوري. للبقاء ضمن الدعم، تأكد من أن لديك عملية إدارة للتحقق من الترقيات الضرورية. لمزيد من المعلومات، راجع إصدارات Kubernetes المدعومة AKS.
للتحقق من الإصدارات المتوفرة للمجموعة الخاصة بك، استخدم الأمر az aks get-Upges كما هو موضح في المثال التالي:
az aks get-upgrades --resource-group myResourceGroup --name myAKSCluster --output table
يمكنك بعد ذلك ترقية مجموعة AKS الخاصة بك باستخدام الأمر az aks Upgrade. عملية الترقية بأمان:
- يغلق ويستنزف عقدة واحدة في كل مرة.
- جدولة pods على العقد المتبقية.
- ينشر عقدة جديدة تعمل بأحدث إصدارات نظام التشغيل وKubernetes.
هام
اختبر إصدارات ثانوية جديدة في بيئة اختبار مطور وتحقق من أن عبء العمل الخاص بك يظل سليماً باستخدام إصدار Kubernetes الجديد.
قد يبطل Kubernetes واجهات برمجة التطبيقات (مثل الإصدار 1.16) التي تعتمد عليها أحمال عملك. عند إدخال الإصدارات الجديدة في الإنتاج، ضع في اعتبارك استخدام مجموعات عقدة متعددة في إصدارات منفصلة وقم بترقية مجموعات فردية واحدة في كل مرة لنشر التحديث بشكل تدريجي عبر مجموعة. في حالة تشغيل مجموعات متعددة، قم بترقية مجموعة واحدة في كل مرة لمراقبة التأثير أو التغييرات بشكل تدريجي.
az aks upgrade --resource-group myResourceGroup --name myAKSCluster --kubernetes-version KUBERNETES_VERSION
لمزيد من المعلومات عن الترقيات في AKS، راجع إصدارات Kubernetes المدعومة في AKS وترقية مجموعة AKS.
معالجة تحديثات عقدة Linux
كل مساء، تحصل عقد Linux في AKS على تصحيحات أمان من خلال قناة تحديث التوزيعات الخاصة بها. يتم تكوين هذا السلوك تلقائياً حيث يتم نشر العقد في مجموعة AKS. لتقليل الانقطاع والتأثير المحتمل لأحمال العمل قيد التشغيل، لا يتم إعادة تمهيد العقد تلقائيًا إذا تطلب تصحيح الأمان أو تحديث النواة ذلك. لمزيد من المعلومات عن كيفية معالجة عمليات إعادة تمهيد العقد، راجع تطبيق تحديثات الأمان والنواة على العقد في AKS.
ترقية صورة العقدة
تقوم الترقيات غير المراقبة بتطبيق تحديثات على نظام تشغيل عقدة Linux، لكن الصورة المستخدمة لإنشاء عقد للمجموعة الخاصة بك تظل دون تغيير. إذا تمت إضافة عقدة Linux جديدة إلى نظام المجموعة الخاص بك، فسيتم استخدام الصورة الأصلية لإنشاء العقدة. ستتلقى هذه العقدة الجديدة جميع تحديثات الأمان والنواة المتوفرة أثناء الفحص التلقائي كل ليلة، ولكنها ستظل غير مصححة حتى تكتمل جميع عمليات التحقق وإعادة التشغيل. يمكنك استخدام ترقية صورة العقدة للتحقق من صور العقدة التي يستخدمها نظام المجموعة الخاصة بك وتحديثها. لمزيد من المعلومات حول ترقية صورة العقدة، راجع ترقية صورة عقدة خدمة Azure Kubernetes (AKS).
معالجة تحديثات عقدة Windows Server
بالنسبة لعقد Windows Server، قم بإجراء عملية ترقية لصورة العقدة بانتظام لتطويق وتفريغ pods بأمان وتوزيع العقد المحدثة.
Azure Kubernetes Service