حماية تعزيز مستوى بيانات Kubernetes الخاص بك

توضح هذه الصفحة كيف يمكن استخدام مجموعة توصيات الأمان الخاصة بـ Microsoft Defender for Cloud المخصصة لتعزيز مستوى بيانات Kubernetes.

تلميح

للحصول على قائمة بتوصيات الأمان التي قد تظهر لمجموعات Kubernetes والعقد، راجعتوصيات الحاوية.

قم بإعداد حماية حمل العمل الخاص بك

يتضمن Microsoft Defender for Cloud مجموعة من التوصيات المتوفرة بمجرد تثبيت نهج Azure ل Kubernetes.

المتطلبات الأساسية

تمكين تعزيز مستوى بيانات Kubernetes

يمكنك تمكين نهج Azure ل Kubernetes بإحدى طريقتين:

تمكين نهج Azure ل Kubernetes لجميع المجموعات الحالية والمستقبلية باستخدام إعدادات الخطة/الموصل

إشعار

عند تمكين هذا الإعداد، يتم تثبيت نهج Azure لقرون Kubernetes على نظام المجموعة. يؤدي القيام بذلك إلى تخصيص كمية صغيرة من وحدة المعالجة المركزية والذاكرة لاستخدامها. قد يصل هذا التخصيص إلى الحد الأقصى للسعة، ولكنه لا يؤثر على بقية وحدة المعالجة المركزية والذاكرة على المورد.

إشعار

تمكين AWS عبر الموصل غير مدعوم بسبب وجود قيود في EKS تتطلب من مسؤول نظام المجموعة إضافة أذونات لدور IAM جديد على نظام المجموعة نفسه.

تمكين اشتراكات Azure أو في أماكن العمل

عند تمكين Microsoft Defender for Containers، يتم تمكين إعداد "نهج Azure ل Kubernetes" بشكل افتراضي لخدمة Azure Kubernetes، ولتجمعات Kubernetes الممكنة في Azure Arc في الاشتراك ذي الصلة. إذا قمت بتعطيل الإعداد على التكوين الأولي، يمكنك تمكينه بعد ذلك يدويا.

إذا قمت بتعطيل إعدادات "نهج Azure ل Kubernetes" ضمن خطة الحاويات، يمكنك اتباع الخطوات التالية لتمكينه عبر جميع المجموعات في اشتراكك:

  1. قم بتسجيل الدخول إلى بوابة Azure.

  2. انتقل إلى Microsoft Defender for Cloud>Environment settings.

  3. حدد الاشتراك ذا الصلة.

  4. في صفحة خطط Defender، قم بالتأكد من تبديل الحاويات إلى تشغيل.

  5. حدد الإعدادات.

    لقطة شاشة تعرض زر الإعدادات في خطة Defender.

  6. في صفحة الإعدادات والمراقبة، قم بتبديل "نهج 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 إلى مجموعات محددة:

  1. من صفحة التوصيات، ابحث عن التوصية ذات الصلة:

    • أسمانجوني- "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". لقطة شاشة تعرض توصية مجموعات خدمة Azure Kubernetes.

      تلميح

      يتم تضمين التوصية في عناصر تحكم أمان مختلفة، ولا يهم أي عنصر تحدده في الخطوة التالية.

  2. من أي من عناصر التحكم في الأمان، قم بتحديد التوصية لمشاهدة الموارد التي يمكنك تثبيت الوظيفة الإضافية عليها.

  3. حدد المجموعة ذات الصلة، وحدد معالجة.

    لقطة شاشة توضح كيفية تحديد نظام المجموعة للمعالجة.

عرض وتكوين مجموعة التوصيات

بعد حوالي 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 يجب إدارة الوصـول والأذونات لا
يجب تجنب الحاويات عالية الامتيازات يجب إدارة الوصـول والأذونات لا
يجب تجنب تشغيل الحاويات كمستخدم جذر يجب إدارة الوصـول والأذونات لا

للحصول على توصيات مع المعلمات التي تحتاج إلى تخصيص، تحتاج إلى تعيين المعلمات:

فيما يتعلق بتعيين المعلمات:

  1. قم بتسجيل الدخول إلى بوابة Azure.

  2. انتقل إلى Microsoft Defender for Cloud>Environment settings.

  3. حدد الاشتراك ذا الصلة.

  4. من قائمة Defender for Cloud، قم بتحديدSecurity policy.

  5. حدد المهمة ذات الصلة. التعيين الافتراضي هو ASC default.

  6. قم بفتح علامة التبويب Parameters وقم بتعديل القيم كما هو مطلوب.

    لقطة شاشة توضح مكان تعديل معلمات إحدى التوصيات في حزمة حماية وحدة بيانات Kubernetes.

  7. حدد Review + save.

  8. حدد حفظ.

لتنفيذ أي من التوصيات:

  1. افتح صفحة تفاصيل التوصية وحدد Deny:

    لقطة شاشة تعرض خيار الرفض لمعلمة نهج Azure.

    يتم فتح الجزء لتعيين النطاق.

  2. قم بتعيين النطاق وحدد تغيير للرفض.

لمعرفة التوصيات التي تنطبق على المجموعات الخاصة بك:

  1. افتح صفحة مخزون أصول Defender for Cloud وقم بتعيين عامل تصفية نوع المورد إلى خدمات Kubernetes.

  2. حدد مجموعة للتحقيق في التوصيات المتوفرة لها ومراجعتها.

عند عرض توصية من مجموعة حماية حمل العمل، يتم سرد عدد القرون المتأثرة ("مكونات Kubernetes") جنبا إلى جنب مع نظام المجموعة. للحصول على قائمة بالوحدات المحددة، حدد نظام المجموعة ثم حدد Take action.

لقطة شاشة توضح مكان عرض القرون المتأثرة لتوصية Kubernetes.

لاختبار التنفيذ، استخدم عمليتي توزيع 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.

للاطّلاع على المواد ذات الصلة، راجع الصفحة التالية: