تأمين مجموعات Azure Kubernetes Service (AKS) باستخدام نهج Azure

يمكنك تطبيق نهج الأمان المضمنة وفرضها على مجموعات Azure Kubernetes Service (AKS) باستخدام نهج Azure. يساعد نهج Azure على فرض المعايير التنظيمية وتقييم التوافق على نطاق واسع. بعد تثبيت الوظيفة الإضافية لنهج Azure ل AKS، يمكنك تطبيق تعريفات نهج فردية أو مجموعات من تعريفات النهج تسمى المبادرات (تسمى أحيانا مجموعات النهج) على مجموعتك. راجع التعريفات المضمنة لنهج Azure ل AKS للحصول على قائمة كاملة بتعريفات نهج مبادرة AKS.

توضح هذه المقالة كيفية تطبيق تعريفات النهج على نظام المجموعة الخاصة بك والتحقق من أن يتم فرض هذه التعيينات.

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

تعيين التعريف أو المبادرة لخدمة النهج المضمَّن

يمكنك تطبيق تعريف نهج أو مبادرة في مدخل Microsoft Azure باستخدام الخطوات التالية:

  1. انتقل إلى خدمة Azure Policy في مدخل Microsoft Azure تسمى Policy.
  2. في الجزء الأيسر من صفحة خدمة نهج Azure، حدد Definitions.
  3. ضمن الفئات، حدد Kubernetes.
  4. اختر تعريف الخدمة أو المبادرة التي تريد تطبيقها. على سبيل المثال، حدد مبادرة معايير أساس أمان نظام مجموعة Kubernetes لأحمال العمل المستندة إلى Linux.
  5. حدد تعيين.
  6. قم بتعيين Scope إلى مجموعة الموارد لمجموعة AKS مع تمكين الوظيفة الإضافية Azure Policy.
  7. حدد صفحة المعلمات وقم بتحديثالتأثير من auditإلى حظر توزيعات النشر الجديدة التي تنتهك deny مبادرة الخط الأساسي. يمكنك أيضا إضافة مساحات أسماء إضافية لاستبعادها من التقييم. على سبيل المثال، احتفظ بالقيم الافتراضية.
  8. حدد Review + create>Create لإرسال تعيين النهج.

قم بإنشاء وتعيين تعريف النهج المخصص

يسمح لك النهج المخصص بتعريف قواعد استخدام Azure. على سبيل المثال، يمكنك فرض الأنواع التالية من القواعد:

  • الممارسات الأمنية
  • إدارة التكلفة
  • قواعد خاصة بالمؤسسة (مثل التسمية أو المواقع)

قبل إنشاء النهج المخصص، تحقق من قائمة الأنماط والعينات الشائعة لمعرفة ما إذا كانت حالتك مغطاة بالفعل.

تعريفات النهج المخصصة مكتوبة في JSON. لمعرفة المزيد حول إنشاء النهج المخصص، راجع بنية تعريف نهج خدمة Azureوإنشاء تعريف النهج المخصص.

إشعار

يستخدم نهج Azure الآن خاصية جديدة تعرف باسم templateInfo تسمح لك بتعريف نوع المصدر لقالب القيد. عند تعريف templateInfo في تعريفات النهج، لا يتعين عليك تعريف constraintTemplate أو خصائص القيد. لا تزال بحاجة إلى تعريف apiGroups والأنواع. لمزيد من المعلومات حول هذا الموضوع، راجع فهم تأثيرات نهج Azure.

بمجرد إنشاء تعريف النهج المخصص، راجع تعيين تعريف نهج لمعاينة خطوة بخطوة لتعيين النهج إلى مجموعة Kubernetes الخاصة بك.

التحقق من صحة تشغيل نهج Azure

  • تأكد من تطبيق تعيينات النهج على نظام المجموعة باستخدام الأمر التالي kubectl get .

    kubectl get constrainttemplates
    

    إشعار

    قد تستغرق تعيينات النهج ما يصل إلى 20 دقيقة للمزامنة في كل نظام مجموعة.

    يجب أن يكون الإخراج مشابها لإخراج المثال التالي:

    NAME                                     AGE
    k8sazureallowedcapabilities              23m
    k8sazureallowedusersgroups               23m
    k8sazureblockhostnamespace               23m
    k8sazurecontainerallowedimages           23m
    k8sazurecontainerallowedports            23m
    k8sazurecontainerlimits                  23m
    k8sazurecontainernoprivilege             23m
    k8sazurecontainernoprivilegeescalation   23m
    k8sazureenforceapparmor                  23m
    k8sazurehostfilesystem                   23m
    k8sazurehostnetworkingports              23m
    k8sazurereadonlyrootfilesystem           23m
    k8sazureserviceallowedports              23m
    

التحقق من الرفض المميز

دعونا ننظر إلى اختبار أول ما يحدث عند جدولة سياق الأمان من privileged: true. من هذا السياق الأمني تصعد الامتيازات. لا تسمح المبادرة بالقرون المميزة، لذلك يتم رفض الطلب، ما يؤدي إلى رفض النشر.

  1. أنشئ ملفا باسم nginx-privileged.yaml والصقه في بيان YAML التالي.

    apiVersion: v1
    kind: Pod
    metadata:
      name: nginx-privileged
    spec:
      containers:
        - name: nginx-privileged
          image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine
          securityContext:
            privileged: true
    
  2. إنشاء الجراب باستخدام kubectl apply الأمر وتحديد اسم بيان YAML الخاص بك.

    kubectl apply -f nginx-privileged.yaml
    

    كما هو متوقع، فشل جدولة الجراب، كما هو موضح في إخراج المثال التالي:

    Error from server ([denied by azurepolicy-container-no-privilege-00edd87bf80f443fa51d10910255adbc4013d590bec3d290b4f48725d4dfbdf9] Privileged container is not allowed: nginx-privileged, securityContext: {"privileged": true}): error when creating "privileged.yaml": admission webhook "validation.gatekeeper.sh" denied the request: [denied by azurepolicy-container-no-privilege-00edd87bf80f443fa51d10910255adbc4013d590bec3d290b4f48725d4dfbdf9] Privileged container is not allowed: nginx-privileged, securityContext: {"privileged": true}
    

    لا تصل القرن إلى مرحلة الجدولة، لذلك لا توجد موارد لحذفها قبل الانتقال.

اختبار إنشاء قرن غير مبرمج

في المثال السابق، حاولت صورة الحاوية تلقائيًا استخدام الجذر لربط NGINX إلى المنفذ 80. ترفض مبادرة النهج هذا الطلب، لذلك يفشل بدء تشغيل الحاوية. الآن، دعونا نحاول تشغيل نفس جراب NGINX دون وصول متميز.

  1. أنشئ ملفا باسم nginx-unprivileged.yaml والصقه في بيان YAML التالي.

    apiVersion: v1
    kind: Pod
    metadata:
      name: nginx-unprivileged
    spec:
      containers:
        - name: nginx-unprivileged
          image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine
    
  2. إنشاء الجراب باستخدام kubectl apply الأمر وتحديد اسم بيان YAML الخاص بك.

    kubectl apply -f nginx-unprivileged.yaml
    
  3. تحقق من حالة الجراب باستخدام kubectl get pods الأمر .

    kubectl get pods
    

    يجب أن يكون الإخراج مشابها للإخراج المثال التالي، والذي يظهر أن الجراب تمت جدولته بنجاح ولديه حالة تشغيل:

    NAME                 READY   STATUS    RESTARTS   AGE
    nginx-unprivileged   1/1     Running   0          18s
    

    يوضح هذا المثال مبادرة الأساس التي تؤثر فقط على عمليات التوزيع التي تنتهك النهج في المجموعة. تستمر عمليات التوزيع المسموح بها في الوظيفة.

  4. احذف حاوية NGINX غير المميزة kubectl delete باستخدام الأمر وحدد اسم بيان YAML الخاص بك.

    kubectl delete -f nginx-unprivileged.yaml
    

تعطيل النهج أو مبادرة

يمكنك إزالة مبادرة الأساس في مدخل Microsoft Azure باستخدام الخطوات التالية:

  1. انتقل إلى جزء النهج على مدخل Microsoft Azure.
  2. حدد الواجبات.
  3. حدد الزر ... بجوار معايير أساس أمان مجموعة Kubernetes لمبادرة حمل العمل المستندة إلى Linux.
  4. حدد حذف التعيين.

الخطوات التالية

لمزيد من المعلومات حول كيفية عمل Azure Policy، راجع المقالات التالية: