حماية تعزيز مستوى بيانات Kubernetes الخاص بك
توضح هذه الصفحة كيف يمكن استخدام مجموعة توصيات الأمان الخاصة بـ Microsoft Defender for Cloud المخصصة لتعزيز مستوى بيانات Kubernetes.
تلميح
للحصول على قائمة بتوصيات الأمان التي قد تظهر لمجموعات Kubernetes والعقد، راجعتوصيات الحاوية.
قم بإعداد حماية حمل العمل الخاص بك
يتضمن Microsoft Defender for Cloud مجموعة من التوصيات المتوفرة بمجرد تثبيت نهج Azure ل Kubernetes.
المتطلبات الأساسية
- قم بإضافةقواعد FQDN/application المطلوبة لنهج Azure.
- (بالنسبة لمجموعات غير AKS) قم بتوصيل مجموعة Kubernetes موجودة بـ Azure Arc.
تمكين تعزيز مستوى بيانات Kubernetes
يمكنك تمكين نهج Azure ل Kubernetes بإحدى طريقتين:
- تمكين لكافة المجموعات الحالية والمستقبلية باستخدام إعدادات الخطة/الموصل
- نشر نهج Azure ل Kubernetes على المجموعات الموجودة
تمكين نهج Azure ل Kubernetes لجميع المجموعات الحالية والمستقبلية باستخدام إعدادات الخطة/الموصل
إشعار
عند تمكين هذا الإعداد، يتم تثبيت نهج Azure لقرون Kubernetes على نظام المجموعة. يؤدي القيام بذلك إلى تخصيص كمية صغيرة من وحدة المعالجة المركزية والذاكرة لاستخدامها. قد يصل هذا التخصيص إلى الحد الأقصى للسعة، ولكنه لا يؤثر على بقية وحدة المعالجة المركزية والذاكرة على المورد.
إشعار
تمكين AWS عبر الموصل غير مدعوم بسبب وجود قيود في EKS تتطلب من مسؤول نظام المجموعة إضافة أذونات لدور IAM جديد على نظام المجموعة نفسه.
تمكين اشتراكات Azure أو في أماكن العمل
عند تمكين Microsoft Defender for Containers، يتم تمكين إعداد "نهج Azure ل Kubernetes" بشكل افتراضي لخدمة Azure Kubernetes، ولتجمعات Kubernetes الممكنة في Azure Arc في الاشتراك ذي الصلة. إذا قمت بتعطيل الإعداد على التكوين الأولي، يمكنك تمكينه بعد ذلك يدويا.
إذا قمت بتعطيل إعدادات "نهج Azure ل Kubernetes" ضمن خطة الحاويات، يمكنك اتباع الخطوات التالية لتمكينه عبر جميع المجموعات في اشتراكك:
قم بتسجيل الدخول إلى بوابة Azure.
انتقل إلى Microsoft Defender for Cloud>Environment settings.
حدد الاشتراك ذا الصلة.
في صفحة خطط Defender، قم بالتأكد من تبديل الحاويات إلى تشغيل.
حدد الإعدادات.
في صفحة الإعدادات والمراقبة، قم بتبديل "نهج Azure ل Kubernetes" إلى تشغيل.
تمكين مشاريع GCP
عند تمكين Microsoft Defender for Containers على موصل GCP، يتم تمكين إعداد "ملحق نهج Azure ل Azure Arc" بشكل افتراضي لمحرك Google Kubernetes في المشروع ذي الصلة. إذا قمت بتعطيل الإعداد على التكوين الأولي، يمكنك تمكينه بعد ذلك يدويا.
إذا قمت بتعطيل إعدادات "ملحق نهج Azure ل Azure Arc" ضمن موصل GCP، يمكنك اتباع الخطوات التالية لتمكينه على موصل GCP.
نشر نهج Azure ل Kubernetes على المجموعات الموجودة
يمكنك تكوين نهج Azure ل Kubernetes يدويا على مجموعات Kubernetes الموجودة من خلال صفحة التوصيات. بمجرد التمكين، تصبح التوصيات المتصلبة متاحة (تتطلب بعض التوصيات تكوينا آخر للعمل).
إشعار
بالنسبة إلى AWS، لا يمكن القيام بالإلحاق على نطاق واسع باستخدام الموصل، ولكن يمكن تثبيته على جميع المجموعات الموجودة أو على مجموعات معينة باستخدام توصية مجموعات Kubernetes التي تدعم Azure Arc يجب أن يكون ملحق نهج Azure لملحق Kubernetes مثبتا.
لنشر نهج Azure ل Kubernetes إلى مجموعات محددة:
من صفحة التوصيات، ابحث عن التوصية ذات الصلة:
أسمانجوني-
"Azure Kubernetes Service clusters should have the Azure Policy add-on for Kubernetes installed"
GCP -
"GKE clusters should have the Azure Policy extension"
.AWS و المحلي -
"Azure Arc-enabled Kubernetes clusters should have the Azure policy extension for Kubernetes extension installed"
.تلميح
يتم تضمين التوصية في عناصر تحكم أمان مختلفة، ولا يهم أي عنصر تحدده في الخطوة التالية.
من أي من عناصر التحكم في الأمان، قم بتحديد التوصية لمشاهدة الموارد التي يمكنك تثبيت الوظيفة الإضافية عليها.
حدد المجموعة ذات الصلة، وحدد معالجة.
عرض وتكوين مجموعة التوصيات
بعد حوالي 30 دقيقة من اكتمال تثبيت Azure Policy for Kubernetes، يعرض Defender for Cloud الحالة الصحية للمجموعات للتوصيات التالية، كل منها في عنصر تحكم الأمان ذي الصلة كما هو موضح:
إشعار
إذا كنت تقوم بتثبيت نهج Azure ل Kubernetes للمرة الأولى، فستظهر هذه التوصيات كإضافات جديدة في قائمة التوصيات.
تلميح
تتضمن بعض التوصيات على معلمات يجب تخصيصها عبر Azure Policy لاستخدامها بشكل فعال. على سبيل المثال، للاستفادة من التوصية يجب توزيع صور الحاوية من السجلات الموثوق بها فحسب، ويتعين عليك تحديد سجلاتك الموثوق بها. إذا لم تقم بإدخال المعلمات الضرورية للتوصيات التي تتطلب التكوين، فسيتم عرض أحمال العمل الخاصة بك على أنها غير سليمة.
إشعار
يتم نشر مكونات Microsoft مثل مستشعر Defender وعامل مراقبة Azure (AMA) في مساحة اسم نظام kube بشكل افتراضي. يضمن هذا الإعداد عدم وضع علامة عليها على أنها غير متوافقة في توصيات مستوى البيانات. ومع ذلك، قد يتم وضع علامة على أدوات المورد التابعة لجهة خارجية المثبتة في مساحة اسم مختلفة على أنها غير متوافقة. لاستبعاد موردي الجهات الخارجية من هذه التوصيات، يمكنك إضافة مساحة الاسم الخاصة بهم إلى قائمة الاستبعاد.
الاسم الخاص بالتوصية | عنصر التحكم في الأمان | التَكوين مطلوب |
---|---|---|
يجب فرض حدود CPU والذاكرة في الحاوية | يجب حماية التطبيقات من هجمات DDoS | نعم |
يجب توزيع صور الحاوية فقط من السجلات الموثوقة | علاج الثغرات الأمنية | نعم |
يجب فرض أقل امتيازات على قدرات Linux للحاويات | يجب إدارة الوصـول والأذونات | نعم |
يجب أن تستخدم الحاويات ملفات تعريف AppArmor المسموح بها فحسب | إصلاح تكوينات الأمان | نعم |
يجب أن تستمع الخدمات على المنافذ المسموح بها فحسب | يجب تقييد الوصول غير المصرح به إلى الشبكة | نعم |
يجب تقييد استخدام شبكات المضيفين ومنافذهم | يجب تقييد الوصول غير المصرح به إلى الشبكة | نعم |
يجب أن يقتصر استخدام عمليات تحميل وحدة تخزين pod HostPath على قائمة معروفة | يجب إدارة الوصـول والأذونات | نعم |
يجب تجنب الحاوية التي تتمتع بزيادة الامتيازات | يجب إدارة الوصـول والأذونات | لا |
يجب تجنب الحاويات التي تشارك مساحات أسماء المضيف الحساسة | يجب إدارة الوصـول والأذونات | لا |
يجب فرض نظام ملفات الجذر غير القابل للتغيير (للقراءة فقط) للحاويات | يجب إدارة الوصـول والأذونات | لا |
يجب أن تكون مجموعات Kubernetes متاحة فقط عبر HTTPS | تشفير البيانات عند النقل | لا |
يجب أن تقوم مجموعات Kubernetes بتعطيل بيانات اعتماد API للتحميل التلقائي | يجب إدارة الوصـول والأذونات | لا |
يجب ألا تستخدم مجموعات Kubernetes مساحة الاسم الافتراضية | تنفيذ أفضل ممارسات الأمان | لا |
يجب ألا تمنح مجموعات Kubernetes إمكانيات أمان CAPSYSADMIN | يجب إدارة الوصـول والأذونات | لا |
يجب تجنب الحاويات عالية الامتيازات | يجب إدارة الوصـول والأذونات | لا |
يجب تجنب تشغيل الحاويات كمستخدم جذر | يجب إدارة الوصـول والأذونات | لا |
للحصول على توصيات مع المعلمات التي تحتاج إلى تخصيص، تحتاج إلى تعيين المعلمات:
فيما يتعلق بتعيين المعلمات:
قم بتسجيل الدخول إلى بوابة Azure.
انتقل إلى Microsoft Defender for Cloud>Environment settings.
حدد الاشتراك ذا الصلة.
من قائمة Defender for Cloud، قم بتحديدSecurity policy.
حدد المهمة ذات الصلة. التعيين الافتراضي هو
ASC default
.قم بفتح علامة التبويب Parameters وقم بتعديل القيم كما هو مطلوب.
حدد Review + save.
حدد حفظ.
لتنفيذ أي من التوصيات:
لمعرفة التوصيات التي تنطبق على المجموعات الخاصة بك:
افتح صفحة مخزون أصول Defender for Cloud وقم بتعيين عامل تصفية نوع المورد إلى خدمات Kubernetes.
حدد مجموعة للتحقيق في التوصيات المتوفرة لها ومراجعتها.
عند عرض توصية من مجموعة حماية حمل العمل، يتم سرد عدد القرون المتأثرة ("مكونات Kubernetes") جنبا إلى جنب مع نظام المجموعة. للحصول على قائمة بالوحدات المحددة، حدد نظام المجموعة ثم حدد Take action.
لاختبار التنفيذ، استخدم عمليتي توزيع Kubernetes الواردة أدناه:
أحدهما للتوزيع الصحي، يتوافق مع مجموعة توصيات حماية حمل العمل.
والآخر هو لنشر غير صحي، غير متوافق مع أي من التوصيات.
انشر مثال ملفات .yaml كما هي، أو استخدمها كمرجع لمعالجة حمل العمل الخاص بك.
مثال بشأن التوزيع الصحي ملف .yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: redis-healthy-deployment
labels:
app: redis
spec:
replicas: 3
selector:
matchLabels:
app: redis
template:
metadata:
labels:
app: redis
annotations:
container.apparmor.security.beta.kubernetes.io/redis: runtime/default
spec:
containers:
- name: redis
image: <customer-registry>.azurecr.io/redis:latest
ports:
- containerPort: 80
resources:
limits:
cpu: 100m
memory: 250Mi
securityContext:
privileged: false
readOnlyRootFilesystem: true
allowPrivilegeEscalation: false
runAsNonRoot: true
runAsUser: 1000
---
apiVersion: v1
kind: Service
metadata:
name: redis-healthy-service
spec:
type: LoadBalancer
selector:
app: redis
ports:
- port: 80
targetPort: 80
مثال بشأن التوزيع غير الصحي ملف .yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: redis-unhealthy-deployment
labels:
app: redis
spec:
replicas: 3
selector:
matchLabels:
app: redis
template:
metadata:
labels:
app: redis
spec:
hostNetwork: true
hostPID: true
hostIPC: true
containers:
- name: redis
image: redis:latest
ports:
- containerPort: 9001
hostPort: 9001
securityContext:
privileged: true
readOnlyRootFilesystem: false
allowPrivilegeEscalation: true
runAsUser: 0
capabilities:
add:
- NET_ADMIN
volumeMounts:
- mountPath: /test-pd
name: test-volume
readOnly: true
volumes:
- name: test-volume
hostPath:
# directory location on host
path: /tmp
---
apiVersion: v1
kind: Service
metadata:
name: redis-unhealthy-service
spec:
type: LoadBalancer
selector:
app: redis
ports:
- port: 6001
targetPort: 9001
الخطوات التالية
في هذه المقالة، تعلمت كيف يمكن تكوين تقوية وحدة بيانات Kubernetes.
للاطّلاع على المواد ذات الصلة، راجع الصفحة التالية: