Understand Azure Policy for Kubernetes clusters

يقوم Azure Policy بتوسيع Gatekeeper v3، وهو إخطار على الويب لوحدة تحكم القبول ل Open Policy Agent (OPA)، لتطبيق عمليات الإنفاذ والضمانات على نطاق واسع على مكونات نظام المجموعة بطريقة مركزية ومتسقة. تتضمن مكونات نظام المجموعة وحدات الجراب والحاويات ومساحات الأسماء.

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

يعتمد نهج Azure ل Kubernetes بيئات نظام المجموعة التالية:

هام

تم إهمال نموذج Helm للمكون الإضافي لنهج Azure والمكون الإضافي لـ AKS Engine. اتبع الإرشادات لإزالة الوظائف الإضافية.

نظرة عامة

من خلال تثبيت الوظيفة الإضافية أو ملحق نهج Azure على مجموعات Kubernetes الخاصة بك، يسن نهج Azure الوظائف التالية:

  • التحقق من خدمة نهج Azure لتعيينات النهج إلى نظام المجموعة.
  • نشر تعريفات النهج في نظام المجموعة كقالب قيد وموارد مخصصة للقيد أو كمورد قالب تحول (اعتمادا على محتوى تعريف النهج).
  • يبلغ عن تفاصيل التدقيق والتوافق مرة أخرى إلى خدمة Azure Policy.

لتمكين Azure Policy واستخدامه مع مجموعة Kubernetes الخاصة بك، اتخذ الإجراءات التالية:

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

    إشعار

    للحصول على المشكلات الشائعة في التثبيت، راجع استكشاف الأخطاء وإصلاحها - الوظيفة الإضافية لنهج Azure.

  2. إنشاء نموذج تعريف نهج Azure ل Kubernetes أو استخدامه

  3. تعيين تعريف إلى نظام مجموعة Kubernetes

  4. انتظر التحقق من الصحة

  5. التسجيل واستكشاف الأخطاء وإصلاحها

  6. مراجعة القيود والتوصيات في قسم الأسئلة المتداولة

تثبيت وظيفة Azure Policy الإضافية لـ AKS

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

  1. قم بتسجيل موفري الموارد وميزات الإصدار الأولي.

    • مدخل Microsoft Azure:

      Microsoft.PolicyInsights تسجيل موفري الموارد. للاطلاع على الخطوات، راجع موفري الموارد وأنواعها.

    • Azure CLI:

      # Log in first with az login if you're not using Cloud Shell
      
      # Provider register: Register the Azure Policy provider
      az provider register --namespace Microsoft.PolicyInsights
      
  2. تحتاج إلى الإصدار 2.12.0 من Azure CLI أو تثبيتها وتكوينها لاحقًا. قم بتشغيل az --version للعثور على الإصدار. إذا كنت بحاجة إلى التثبيت أو الترقية، فراجع تثبيت Azure CLI.

  3. يجب أن يكون نظام مجموعة AKS إصدار Kubernetes مدعوما في خدمة Azure Kubernetes (AKS). استخدم البرنامج النصي التالي للتحقق من صحة إصدار نظام المجموعة AKS الخاص بك:

    # Log in first with az login if you're not using Cloud Shell
    
    # Look for the value in kubernetesVersion
    az aks list
    
  4. افتح المنافذ لملحق Azure Policy. يستخدم ملحق Azure Policy هذه المجالات والمنافذ لجلب تعريفات النهج وتعييناته والإبلاغ عن توافق نظام المجموعة مرة أخرى إلى نهج Azure.

    النطاق المنفذ
    data.policy.core.windows.net 443
    store.policy.core.windows.net 443
    login.windows.net 443
    dc.services.visualstudio.com 443

بعد اكتمال المتطلبات الأساسية، قم بتثبيت الوظيفة الإضافية لنهج Azure في مجموعة AKS التي تريد إدارتها.

  • مدخل Azure

    1. قم بتشغيل خدمة AKS في مدخل Microsoft Azure عن طريق تحديد جميع الخدمات،ثم البحث عن خدمات Kubernetesوتحديدها.

    2. حدد إحدى مجموعات AKS الخاصة بك.

    3. حدد Policies على الجانب الأيسر من صفحة خدمة Kubernetes.

    4. في الصفحة الرئيسية، حدد الزر تمكين الوظيفة الإضافية.

  • Azure CLI

    # Log in first with az login if you're not using Cloud Shell
    
    az aks enable-addons --addons azure-policy --name MyAKSCluster --resource-group MyResourceGroup
    

للتحقق من أن تثبيت الوظيفة الإضافية كان ناجحا وأن azure-policyوبوابات الجرابات قيد التشغيل، قم بتشغيل الأمر التالي:

# azure-policy pod is installed in kube-system namespace
kubectl get pods -n kube-system

# gatekeeper pod is installed in gatekeeper-system namespace
kubectl get pods -n gatekeeper-system

وأخيرًا، تحقق من تثبيت أحدث وظيفة إضافية عن طريق تشغيل أمر Azure CLI هذا، واستبدال <rg> باسم مجموعة الموارد الخاصة بك و<cluster-name> مع اسم نظام مجموعة AKS الخاص بك: az aks show --query addonProfiles.azurepolicy -g <rg> -n <cluster-name>. يجب أن تبدو النتيجة مشابهة للإخراج التالي للمجموعات التي تستخدم أساسيات الخدمة:

{
  "config": null,
  "enabled": true,
  "identity": null
}

والإخراج التالي للمجموعات باستخدام الهوية المدارة:

 {
   "config": null,
   "enabled": true,
   "identity": {
     "clientId": "########-####-####-####-############",
     "objectId": "########-####-####-####-############",
     "resourceId": "<resource-id>"
   }
 }

تثبيت ملحق نهج Azure ل Kubernetes الممكنة في Azure Arc

يتيح نهج Azure لـKubernetes إدارة حالة التوافق لمجموعات Kubernetes والإبلاغ عنها من مكان واحد. باستخدام ملحق نهج Azure لمجموعات Kubernetes الممكنة بواسطة Arc، يمكنك التحكم في مكونات نظام مجموعة Kubernetes التي تدعم Arc، مثل الحجيرات والحاويات.

توضح هذه المقالة كيفية إنشاء، وإظهار حالة الملحق، وحذف نهج Azure لملحق Kubernetes.

للحصول على نظرة عامة على النظام الأساسي للملحقات، راجع ملحقات نظام مجموعة Azure Arc.

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

إذا قمت بالفعل بنشر نهج Azure ل Kubernetes على مجموعة Azure Arc باستخدام Helm مباشرة دون ملحقات، فاتبع الإرشادات لحذف مخطط Helm. بعد الانتهاء من الحذف، يمكنك بعد ذلك المتابعة.

  1. تأكد من أن مجموعة Kubernetes الخاصة بك هي توزيع مدعوم.

    إشعار

    يتم دعم نهج Azure لملحق Arc على توزيعات Kubernetes التالية.

  2. تأكد من استيفاء جميع المتطلبات الأساسية الشائعة لملحقات Kubernetes المدرجة هنا بما في ذلك توصيل مجموعتك ب Azure Arc.

    إشعار

    يتم دعم ملحق نهج Azure لمجموعات Kubernetes الممكنة في Arc في هذه المناطق.

  3. افتح المنافذ لملحق Azure Policy. يستخدم ملحق Azure Policy هذه المجالات والمنافذ لجلب تعريفات النهج وتعييناته والإبلاغ عن توافق نظام المجموعة مرة أخرى إلى نهج Azure.

    النطاق المنفذ
    data.policy.core.windows.net 443
    store.policy.core.windows.net 443
    login.windows.net 443
    dc.services.visualstudio.com 443
  4. قبل تثبيت ملحق Azure Policy أو تمكين أي من ميزات الخدمة، يجب أن يقوم اشتراكك بتمكين Microsoft.PolicyInsights موفري الموارد.

    إشعار

    لتمكين موفر الموارد، اتبع الخطوات الواردة في موفري الموارد وأنواعهم أو قم بتشغيل الأمر Azure CLI أو Azure PowerShell.

    • Azure CLI

      # Log in first with az login if you're not using Cloud Shell
      # Provider register: Register the Azure Policy provider
      az provider register --namespace 'Microsoft.PolicyInsights'
      
    • Azure PowerShell

      # Log in first with Connect-AzAccount if you're not using Cloud Shell
      
      # Provider register: Register the Azure Policy provider
      Register-AzResourceProvider -ProviderNamespace 'Microsoft.PolicyInsights'
      

إنشاء ملحق نهج Azure

إشعار

لاحظ ما يلي لإنشاء ملحق نهج Azure:

  • يتم تمكين الترقية التلقائية بشكل افتراضي والتي ستقوم بتحديث الإصدار الثانوي لملحق نهج Azure إذا تم نشر أي تغييرات جديدة.
  • سيتم نشر أي متغيرات وكيل تم تمريرها كمعلمات إلى connectedk8s إلى ملحق نهج Azure لدعم الوكيل الصادر.

لإنشاء مثيل ملحق، لمجموعة Arc الممكنة، قم بتشغيل الأمر التالي استبدال <> بقيمك:

az k8s-extension create --cluster-type connectedClusters --cluster-name <CLUSTER_NAME> --resource-group <RESOURCE_GROUP> --extension-type Microsoft.PolicyInsights --name <EXTENSION_INSTANCE_NAME>

مثال:

az k8s-extension create --cluster-type connectedClusters --cluster-name my-test-cluster --resource-group my-test-rg --extension-type Microsoft.PolicyInsights --name azurepolicy

مثال على الإخراج:

{
  "aksAssignedIdentity": null,
  "autoUpgradeMinorVersion": true,
  "configurationProtectedSettings": {},
  "configurationSettings": {},
  "customLocationSettings": null,
  "errorInfo": null,
  "extensionType": "microsoft.policyinsights",
  "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/my-test-rg/providers/Microsoft.Kubernetes/connectedClusters/my-test-cluster/providers/Microsoft.KubernetesConfiguration/extensions/azurepolicy",
 "identity": {
    "principalId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "tenantId": null,
    "type": "SystemAssigned"
  },
  "location": null,
  "name": "azurepolicy",
  "packageUri": null,
  "provisioningState": "Succeeded",
  "releaseTrain": "Stable",
  "resourceGroup": "my-test-rg",
  "scope": {
    "cluster": {
      "releaseNamespace": "kube-system"
    },
    "namespace": null
  },
  "statuses": [],
  "systemData": {
    "createdAt": "2021-10-27T01:20:06.834236+00:00",
    "createdBy": null,
    "createdByType": null,
    "lastModifiedAt": "2021-10-27T01:20:06.834236+00:00",
    "lastModifiedBy": null,
    "lastModifiedByType": null
  },
  "type": "Microsoft.KubernetesConfiguration/extensions",
  "version": "1.1.0"
}

عرض ملحق نهج Azure

للتحقق من نجاح إنشاء مثيل الملحق، وفحص بيانات تعريف الملحق، قم بتشغيل الأمر التالي استبدال <> بقيمك:

az k8s-extension show --cluster-type connectedClusters --cluster-name <CLUSTER_NAME> --resource-group <RESOURCE_GROUP> --name <EXTENSION_INSTANCE_NAME>

مثال:

az k8s-extension show --cluster-type connectedClusters --cluster-name my-test-cluster --resource-group my-test-rg --name azurepolicy

للتحقق من أن تثبيت الملحق كان ناجحا وأن azure-policy وبوابات الجرابات قيد التشغيل، قم بتشغيل الأمر التالي:

# azure-policy pod is installed in kube-system namespace
kubectl get pods -n kube-system

# gatekeeper pod is installed in gatekeeper-system namespace
kubectl get pods -n gatekeeper-system

حذف ملحق نهج Azure

لحذف مثيل الملحق، قم بتشغيل الأمر التالي استبدال <> بقيمك:

az k8s-extension delete --cluster-type connectedClusters --cluster-name <CLUSTER_NAME> --resource-group <RESOURCE_GROUP> --name <EXTENSION_INSTANCE_NAME>

إنشاء تعريف للنهج

تتبع بنية لغة Azure Policy لإدارة Kubernetes بنية تعريفات النهج الموجودة. هناك ملفات تعريف نموذجية متاحة لتعيينها في مكتبة النهج المضمنة في نهج Azure التي يمكن استخدامها لتنظيم مكونات نظام المجموعة.

يدعم نهج Azure ل Kubernetes أيضا إنشاء تعريف مخصص على مستوى المكون لكل من مجموعات خدمة Azure Kubernetes ومجموعات Kubernetes الممكنة في Azure Arc. تتوفر نماذج قالب القيد وقالب الطفرة في مكتبة مجتمع Gatekeeper. يمكن استخدام ملحق VS Code لنهج Azure للمساعدة في ترجمة قالب قيد موجود أو قالب تحول إلى تعريف نهج نهج Azure مخصص.

باستخدام وضع موفر الموارد ، Microsoft.Kubernetes.Dataيتم استخدام تدقيق التأثيرات والرفض وتعطيلها وتحورها لإدارة مجموعات Kubernetes الخاصة بك.

يجب أن يوفر التدقيقوالرفض خصائص التفاصيل الخاصة بالعمل مع إطار عمل قيود OPA وGatekeeper v3.

كجزء من خصائص details.templateInfo أو details.constraintInfo في تعريف النهج، يمرر نهج Azure قيمة URI أو Base64Encoded لهذه CustomResourceDefinitions (CRD) إلى الوظيفة الإضافية. Rego هي اللغة التي يدعمها OPA و Gatekeeper للتحقق من صحة طلب إلى مجموعة Kubernetes. من خلال دعم معيار موجود لإدارة Kubernetes، يجعل نهج Azure من الممكن إعادة استخدام القواعد الموجودة وإقرانها بنهج Azure للحصول على تجربة تقارير توافق سحابية موحدة. لمزيد من المعلومات، راجع ما هو ريجو؟.

تحديد تعريف للنهج

لتعيين تعريف نهج لمجموعة Kubernetes الخاصة بك، يجب تعيين عمليات تعيين نهج التحكم في الوصول المستندة إلى دور Azure (Azure RBAC) المناسبة. أدوار Azure المضمنة المساهم في نهج المواردوالمالك لديهم هذه العمليات. لمعرفة المزيد، راجع أذونات Azure RBAC في سياسة Azure.

ابحث عن تعريفات النهج المضمنة لإدارة نظام المجموعة باستخدام مدخل Azure بالخطوات التالية. إذا كنت تستخدم تعريف نهج مخصص، فابحث عنه حسب الاسم أو الفئة التي قمت بإنشائه بها.

  1. بدء تشغيل خدمة نهج Azure في مدخل Microsoft Azure. حدد كافة الخدمات في الجزء الأيمن ثم ابحث عن النهج وحدده.

  2. في الجزء الأيسر من صفحة خدمة نهج Azure، حدد Definitions.

  3. من مربع القائمة المنسدلة Category، استخدم Select all لمسح عامل التصفية ثم حدد Kubernetes.

  4. حدد تعريف النهج، ثم حدد الزر تعيين.

  5. تعيين النطاق إلى مجموعة إدارة أو اشتراك أو مجموعة موارد الكتلة Kubernetes حيث سيتم تطبيق تعيين النهج.

    إشعار

    عند تعيين Azure Policy لتعريف Kubernetes، يجب أن يتضمن النطاق مورد نظام المجموعة.

  6. امنح تعيين النهج اسمًا ووصفًا يمكنك استخدامهما لتعريفه بسهولة.

  7. تعيين فرض النهج إلى إحدى القيم التالية:

    • ممكن - فرض النهج على نظام المجموعة. يتم رفض طلبات قبول Kubernetes ذات الانتهاكات.

    • معطل - لا تفرض النهج على نظام المجموعة. لا يتم رفض طلبات قبول Kubernetes ذات الانتهاكات. لا تزال نتائج تقييم التوافق متوفرة. عند طرح تعريفات نهج جديدة لتشغيل المجموعات، يكون الخيار Disabled مفيدا لاختبار تعريف النهج حيث لا يتم رفض طلبات القبول ذات الانتهاكات.

  8. حدد التالي.

  9. تعيين قيم المعلمات

    • لاستبعاد مساحات أسماء Kubernetes من تقييم النهج، حدد قائمة مساحات الأسماء في استثناءات مساحة الاسم للمعلمة. يوصى باستبعاد: kube-system، gatekeeper-system، وazure-arc.
  10. حدد "Review + create".

بدلًا من ذلك، استخدم "Assign a policy - Portal quickstart" للبحث عن نهج Kubernetes وتعيينه. ابحث عن تعريف نهج Kubernetes بدلا من نموذج أجهزة التدقيق الظاهرية.

هام

تتوفر تعريفات النهج المضمنة لمجموعات Kubernetes في فئة Kubernetes. للحصول على قائمة بتعريفات النهج المضمنة، راجع نماذج Kubernetes.

تقييم النهج

تتحقق الوظيفة الإضافية من خدمة نهج Azure من التغييرات في تعيينات النهج كل 15 دقيقة. في أثناء دورة التحديث هذه، تتحقق الوظيفة الإضافية من التغييرات. تؤدي هذه التغييرات إلى إنشاء قوالب القيود والقيود أو تحديثها أو حذفها.

في مجموعة Kubernetes، إذا كانت مساحة الاسم تحتوي على التسمية المناسبة لنظام المجموعة، فلن يتم رفض طلبات القبول ذات الانتهاكات. لا تزال نتائج تقييم التوافق متوفرة.

  • أنظمة مجموعة Kubernetes المُمكّنة في Azure Arc: admission.policy.azure.com/ignore

إشعار

بينما قد يكون لدى مسؤول نظام المجموعة إذن لإنشاء وتحديث قوالب القيود وموارد القيود التي تم تثبيتها بواسطة الوظيفة الإضافية لنهج Azure، فإن هذه ليست سيناريوهات مدعومة حيث تتم الكتابة فوق التحديثات اليدوية. يستمر Gatekeeper في تقييم النهج التي كانت موجودة قبل تثبيت الوظيفة الإضافية وتعيين تعريفات نهج Azure.

كل 15 دقيقة، تستدعي الوظيفة الإضافية فحصًا كاملًا للمجموعة. بعد جمع تفاصيل الفحص الكامل وأي تقييمات في الوقت الحقيقي بواسطة Gatekeeper لمحاولة إجراء تغييرات على نظام المجموعة، تقوم الوظيفة الإضافية بالإبلاغ عن النتائج مرة أخرى إلى نهج Azure لتضمينها في تفاصيل التوافق مثل أي تعيين لنهج Azure. يتم إرجاع نتائج تعيينات النهج النشطة فقط في أثناء دورة التدقيق. يمكن أيضًا أن ينظر إلى نتائج التدقيق على أنها انتهاكات مدرجة في حقل الحالة للقيد الفاشل. للحصول على تفاصيل حول الموارد غير المتوافقة، راجع تفاصيل المكون لأوضاع موفر الموارد.

إشعار

يتضمن كل تقرير توافق في Azure Policy لمجموعات Kubernetes جميع الانتهاكات خلال آخر 45 دقيقة. يشير الطابع الزمني إلى وقت حدوث انتهاك.

بعض الاعتبارات الأخرى:

  • إذا تم تسجيل اشتراك نظام المجموعة مع Microsoft Defender for Cloud، فسيتم تطبيق نهج Microsoft Defender for Cloud Kubernetes على نظام المجموعة تلقائيًا.

  • عند تطبيق نهج رفض على نظام المجموعة مع موارد Kubernetes الموجودة، يستمر تشغيل أي مورد موجود مسبقا غير متوافق مع النهج الجديد. عندما تتم إعادة جدولة المورد غير المتوافق على عقدة مختلفة، يحظر Gatekeeper إنشاء المورد.

  • عندما يكون لدى نظام المجموعة نهج رفض يتحقق من صحة الموارد، لا يحصل المستخدم على رسالة رفض عند إنشاء نشر. على سبيل المثال، ضع في اعتبارك توزيع Kubernetes الذي يحتوي على مجموعات النسخ المتماثلة والقرون. عندما ينفذ kubectl describe deployment $MY_DEPLOYMENTالمستخدم ، فإنه لا يرجع رسالة رفض كجزء من الأحداث. ومع ذلك، ترجع kubectl describe replicasets.apps $MY_DEPLOYMENT الأحداث المقترنة بالرفض.

إشعار

يمكن تضمين حاويات التهيئة أثناء تقييم النهج. لمعرفة ما إذا كانت حاويات التهيئة مضمنة، راجع CRD لمعرفة ما يلي أو إعلان مشابه:

input_containers[c] {
   c := input.review.object.spec.initContainers[_]
}

تعارضات قالب القيد

إذا كانت قوالب القيد لها نفس اسم بيانات تعريف المورد، ولكن تعريف النهج يشير إلى المصدر في مواقع مختلفة، تعتبر تعريفات النهج متعارضة. مثال: يشير تعريفان للنهج إلى نفس template.yaml الملف المخزن في مواقع مصدر مختلفة مثل مخزن قوالب نهج Azure (store.policy.core.windows.net) وGitHub.

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

تسجيل الدخول

كوحدة تحكم/حاوية Kubernetes، يحتفظ كل من azure-policy وجرابات gatekeeper بالسجلات في مجموعة Kubernetes. بشكل عام، يمكن استخدام سجلات نهج Azure لاستكشاف المشكلات المتعلقة باستيعاب النهج وإصلاحها في نظام المجموعة وإعداد تقارير التوافق. يمكن استخدام سجلات جراب gatekeeper-controller-manager لاستكشاف أخطاء رفض وقت التشغيل وإصلاحها. يمكن استخدام سجلات جراب gatekeeper-audit لاستكشاف أخطاء عمليات تدقيق الموارد الموجودة وإصلاحها. يمكن عرض السجلات في صفحة Insights الخاصة بمجموعة Kubernetes. لمزيد من المعلومات، راجع مراقبة أداء مجموعة Kubernetes باستخدام Azure Monitor للحاويات.

لعرض سجلات الوظائف الإضافية، استخدم kubectl:

# Get the azure-policy pod name installed in kube-system namespace
kubectl logs <azure-policy pod name> -n kube-system

# Get the gatekeeper pod name installed in gatekeeper-system namespace
kubectl logs <gatekeeper pod name> -n gatekeeper-system

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

لمزيد من المعلومات، راجع تصحيح أخطاء Gatekeeper في وثائق Gatekeeper.

عرض البيانات الاصطناعية لـGatekeeper

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

  1. إعداد kubeconfig لنظام المجموعة.

    بالنسبة إلى نظام مجموعة Azure Kubernetes Service، استخدم Azure CLI التالي:

    # Set context to the subscription
    az account set --subscription <YOUR-SUBSCRIPTION>
    
    # Save credentials for kubeconfig into .kube in your home folder
    az aks get-credentials --resource-group <RESOURCE-GROUP> --name <CLUSTER-NAME>
    
  2. اختبار اتصال نظام المجموعة.

    تشغيل الأمر kubectl cluster-info. يحتوي التشغيل الناجح على استجابة كل خدمة بعنوان URL للمكان الذي يتم تشغيله فيه.

عرض قوالب قيود الوظيفة الإضافية

لعرض قوالب القيد التي تم تنزيلها بواسطة الوظيفة الإضافية، قم بتشغيل kubectl get constrainttemplates. قوالب القيد التي تبدأ بـk8sazure هي تلك التي تم تثبيتها بواسطة الوظيفة الإضافية.

عرض قوالب طفرة الوظيفة الإضافية

لعرض قوالب الطفرة التي تم تنزيلها بواسطة الوظيفة الإضافية، قم بتشغيل kubectl get assignو kubectl get assignmetadataو.kubectl get modifyset

الحصول على تعيينات نهج Azure

لتحديد التعيين بين قالب قيد تم تنزيله إلى نظام المجموعة وتعريف النهج، استخدم kubectl get constrainttemplates <TEMPLATE> -o yaml. تبدو النتائج مماثلة للمخرج التالي:

apiVersion: templates.gatekeeper.sh/v1beta1
kind: ConstraintTemplate
metadata:
    annotations:
    azure-policy-definition-id: /subscriptions/<SUBID>/providers/Microsoft.Authorization/policyDefinitions/<GUID>
    constraint-template-installed-by: azure-policy-addon
    constraint-template: <URL-OF-YAML>
    creationTimestamp: "2021-09-01T13:20:55Z"
    generation: 1
    managedFields:
    - apiVersion: templates.gatekeeper.sh/v1beta1
    fieldsType: FieldsV1
...

<SUBID> هو معرف الاشتراك و<GUID> هو معرف تعريف النهج المعين. <URL-OF-YAML> هو الموقع المصدر لقالب القيد الذي تم تنزيل الوظيفة الإضافية لتثبيته على نظام المجموعة.

بمجرد أن يكون لديك أسماء قوالب القيود التي تم تنزيلها من الوظيفة الإضافية، يمكنك استخدام الاسم لمشاهدة القيود ذات الصلة. استخدم kubectl get <constraintTemplateName> للحصول على القائمة. القيود المثبتة بواسطة الوظيفة الإضافية تبدأ بـazurepolicy-.

عرض تفاصيل القيد

يحتوي القيد على تفاصيل حول الانتهاكات والتعيينات لتعريف النهج والتعيين. لمراجعة التفاصيل، استخدم kubectl get <CONSTRAINT-TEMPLATE> <CONSTRAINT> -o yaml. تبدو النتائج مماثلة للمخرج التالي:

apiVersion: constraints.gatekeeper.sh/v1beta1
kind: K8sAzureContainerAllowedImages
metadata:
  annotations:
    azure-policy-assignment-id: /subscriptions/<SUB-ID>/resourceGroups/<RG-NAME>/providers/Microsoft.Authorization/policyAssignments/<ASSIGNMENT-GUID>
    azure-policy-definition-id: /providers/Microsoft.Authorization/policyDefinitions/<DEFINITION-GUID>
    azure-policy-definition-reference-id: ""
    azure-policy-setdefinition-id: ""
    constraint-installed-by: azure-policy-addon
    constraint-url: <URL-OF-YAML>
  creationTimestamp: "2021-09-01T13:20:55Z"
spec:
  enforcementAction: deny
  match:
    excludedNamespaces:
    - kube-system
    - gatekeeper-system
    - azure-arc
  parameters:
    imageRegex: ^.+azurecr.io/.+$
status:
  auditTimestamp: "2021-09-01T13:48:16Z"
  totalViolations: 32
  violations:
  - enforcementAction: deny
    kind: Pod
    message: Container image nginx for container hello-world has not been allowed.
    name: hello-world-78f7bfd5b8-lmc5b
    namespace: default
  - enforcementAction: deny
    kind: Pod
    message: Container image nginx for container hello-world has not been allowed.
    name: hellow-world-89f8bfd6b9-zkggg

استكشاف أخطاء المكون الإضافي وإصلاحها

لمزيد من المعلومات حول استكشاف أخطاء الوظيفة الإضافية ل Kubernetes وإصلاحها، راجع قسم Kubernetes في مقالة استكشاف الأخطاء وإصلاحها في نهج Azure.

للحصول على ملحق Azure Policy للمشكلات المتعلقة بملحق Arc، انتقل إلى:

بالنسبة للمشكلات المتعلقة بنهج Azure، انتقل إلى:

الوظيفة الإضافية لنهج Azure ل AKS Changelog

تحتوي الوظيفة الإضافية لنهج Azure ل AKS على رقم إصدار يشير إلى إصدار صورة الوظيفة الإضافية. نظرا إلى تقديم دعم الميزة حديثا في الوظيفة الإضافية، يتم زيادة رقم الإصدار.

سيساعدك هذا القسم على تحديد إصدار الوظيفة الإضافية المثبت على نظام المجموعة الخاص بك ومشاركة جدول تاريخي لإصدار Azure Policy Add-On المثبت لكل نظام مجموعة AKS.

تحديد إصدار الوظيفة الإضافية المثبت على نظام المجموعة

تستخدم الوظيفة الإضافية لنهج Azure مخطط تعيين الإصدار الدلالي القياسي لكل إصدار. لتحديد إصدار Azure Policy Add-On المستخدم، يمكنك تشغيل الأمر التالي: kubectl get pod azure-policy-<unique-pod-identifier> -n kube-system -o json | jq '.spec.containers[0].image'

لتحديد إصدار Gatekeeper الذي تستخدمه الوظيفة الإضافية لنهج Azure، يمكنك تشغيل الأمر التالي: kubectl get pod gatekeeper-controller-<unique-pod-identifier> -n gatekeeper-system -o json | jq '.spec.containers[0].image'

وأخيرا، لتحديد إصدار نظام مجموعة AKS الذي تستخدمه، اتبع إرشادات AKS المرتبطة لهذا.

إصدارات الوظائف الإضافية المتوفرة لكل إصدار نظام مجموعة AKS

1.3.0

يقدم حالة خطأ للنهج التي بها خطأ، ما يتيح تمييزها عن النهج في الحالات غير المتوافقة. إضافة دعم لقوالب قيود v1 واستخدام المعلمة excludedNamespaces في نهج الطفرة. إضافة التحقق من حالة الخطأ على قوالب القيود بعد التثبيت.

  • تم الإصدار في فبراير 2024
  • Kubernetes 1.25+
  • Gatekeeper 3.14.0

1.2.1

  • تم الإصدار في أكتوبر 2023
  • Kubernetes 1.25+
  • Gatekeeper 3.13.3

1.1.0

  • تم الإصدار في يوليو 2023
  • Kubernetes 1.27+
  • Gatekeeper 3.11.1

1.0.1

  • تم الإصدار في يونيو 2023
  • Kubernetes 1.24+
  • Gatekeeper 3.11.1

1.0.0

يدعم نهج Azure ل Kubernetes الآن التحول لمعالجة مجموعات AKS على نطاق واسع!

إزالة الوظيفة الإضافية

إزالة الوظيفة الإضافية من AKS

لإزالة الوظيفة الإضافية لنهج Azure من نظام مجموعة AKS، استخدم إما مدخل Microsoft Azure أو Azure CLI:

  • مدخل Azure

    1. قم بتشغيل خدمة AKS في مدخل Microsoft Azure عن طريق تحديد جميع الخدمات،ثم البحث عن خدمات Kubernetesوتحديدها.

    2. حدد نظام مجموعة AKS حيث تريد تعطيل الوظيفة الإضافية لنهج Azure.

    3. حدد Policies على الجانب الأيسر من صفحة خدمة Kubernetes.

    4. في الصفحة الرئيسية، حدد الزر تعطيل الوظيفة الإضافية.

  • Azure CLI

    # Log in first with az login if you're not using Cloud Shell
    
    az aks disable-addons --addons azure-policy --name MyAKSCluster --resource-group MyResourceGroup
    

إزالة الوظيفة الإضافية من Kubernetes الممكنة في Azure Arc

إشعار

تم الآن إهمال نموذج Helm الإضافي لنهج Azure. يرجى اختيار ملحق نهج Azure ل Kubernetes الممكنة في Azure Arc بدلًا من ذلك.

لإزالة الوظيفة الإضافية لنهج Azure و Gatekeeper من مجموعة Kubernetes الممكنة في Azure Arc، قم بتشغيل أمر Helm التالي:

helm uninstall azure-policy-addon

إزالة الوظيفة الإضافية من AKS Engine

إشعار

تم الآن إهمال منتج AKS Engine لعملاء سحابة Azure العامة. يرجى مراعاة استخدام خدمة Azure Kubernetes (AKS) لـKubernetes المدارة أو موفر واجهة برمجة تطبيقات نظام المجموعة Azure لـKubernetes المدار ذاتيًا. لا توجد ميزات جديدة مخططة؛ سيتم تحديث هذا المشروع فقط ل CVEs و مماثلة، مع Kubernetes 1.24 كإصدار نهائي لتلقي التحديثات.

لإزالة الوظيفة الإضافية لنهج Azure و Gatekeeper من مجموعة AKS Engine، استخدم الأسلوب الذي يتوافق مع كيفية تثبيت الوظيفة الإضافية:

  • إذا تم التثبيت عن طريق تعيين خاصية الوظائف الإضافية في تعريف نظام المجموعة لمحرك AKS:

    إعادة نشر تعريف نظام المجموعة إلى AKS Engine بعد تغيير خاصية addons لـazure-policy إلى false:

    "addons": [{
        "name": "azure-policy",
        "enabled": false
    }]
    

    لمزيد من المعلومات، راجع محرك AKS - تعطيل الوظيفة الإضافية لنهج Azure.

  • إذا تم تثبيته باستخدام Helm Charts، فقم بتشغيل أمر Helm التالي:

    helm uninstall azure-policy-addon
    

القيود

  • للحصول على تعريفات نهج Azure العامة وحدود التعيينات، يرجى مراجعة الحدود الموثقة لنهج Azure
  • لا يمكن نشر الوظيفة الإضافية لنهج Azure ل Kubernetes إلا في تجمعات عقد Linux.
  • الحد الأقصى لعدد pods المدعومة من قبل الوظيفة الإضافية لنهج Azure لكل مجموعة: 10,000
  • الحد الأقصى لعدد السجلات غير المتوافقة لكل نهج لكل مجموعة: 500
  • الحد الأقصى لعدد السجلات غير المتوافقة لكل اشتراك: 1 مليون
  • عمليات تثبيت Gatekeeper خارج الوظيفة الإضافية لنهج Azure غير مدعومة. قم بإلغاء تثبيت أي مكونات مثبتة بواسطة تثبيت Gatekeeper سابق قبل تمكين الوظيفة الإضافية لنهج Azure.
  • لا تتوفر أسباب عدم التوافق لوضع موفر موارد Microsoft.Kubernetes.Data. استخدم تفاصيل المكون.
  • الإعفاءات على مستوى المكون غير مدعومة لأوضاع موفر الموارد. يتوفر دعم المعلمات في تعريفات نهج Azure لاستبعاد مساحات أسماء معينة وتضمينها.
  • استخدام التعليق التوضيحي metadata.gatekeeper.sh/requires-sync-data في قالب قيد لتكوين النسخ المتماثل للبيانات من نظام المجموعة إلى ذاكرة التخزين المؤقت OPA مسموح به حاليا فقط للنهج المضمنة. وذلك لأنه يمكن أن يزيد بشكل كبير من استخدام موارد pods Gatekeeper إذا لم يتم استخدامه بعناية.

تنطبق القيود التالية فقط على الوظيفة الإضافية لنهج Azure لـAKS:

  • لا يمكن تمكين نهج أمان AKS Pod والوظيفة الإضافية لنهج Azure لـAKS. لمزيد من المعلومات، راجع قيود أمان جراب AKS.
  • يتم استبعاد مساحات الأسماء تلقائيا بواسطة الوظيفة الإضافية لنهج Azure للتقييم: kube-system و gatekeeper-system.

الأسئلة الشائعة

ما الذي ينشره ملحق نهج Azure / ملحق نهج Azure على نظام المجموعة عند التثبيت؟

تتطلب الوظيفة الإضافية لنهج Azure ثلاثة مكونات Gatekeeper للتشغيل: حاوية تدقيق واحدة واثنين من النسخ المتماثلة لحاوية webhook. سيتم أيضا تثبيت جراب نهج Azure واحد وAzure Policy webhook pod.

ما مقدار استهلاك الموارد الذي يجب أن أتوقع أن تستخدمه الوظيفة الإضافية / الملحق لنهج Azure على كل نظام مجموعة؟

يستهلك نهج Azure لمكونات Kubernetes التي تعمل على نظام المجموعة الخاص بك المزيد من الموارد مع زيادة عدد موارد Kubernetes وتعيينات النهج في نظام المجموعة، ما يتطلب عمليات التدقيق والإنفاذ. فيما يلي تقديرات لمساعدتك في التخطيط:

  • لأقل من 500 جراب في مجموعة واحدة بحد أقصى 20 قيدا: اثنين من وحدات المعالجة المركزية الظاهرية و350 ميغابايت من الذاكرة لكل مكون.
  • لأكثر من 500 حاوية في مجموعة واحدة بحد أقصى 40 قيدا: ثلاث وحدات معالجة مركزية ظاهرية و600 ميغابايت من الذاكرة لكل مكون.

هل يمكن تطبيق نهج Azure لتعريفات Kubernetes على pods Windows؟

لا تدعم Windows القرون سياقات الأمان. وبالتالي، لا يمكن تصعيد بعض تعريفات نهج Azure، مثل عدم السماح بامتيازات الجذر، في قرون Windows وتطبيقها فقط على pods Linux.

ما نوع البيانات التشخيصية التي يتم جمعها بواسطة الوظيفة الإضافية لنهج Azure؟

تجمع الوظيفة الإضافية لنهج Azure ل Kubernetes بيانات تشخيصية محدودة لنظام المجموعة. هذه البيانات التشخيصية هي بيانات تقنية حيوية تتعلق بالبرامج والأداء. يتم استخدامه بالطرق التالية:

  • الاحتفاظ بالوظيفة الإضافية لنهج Azure محدثة
  • الحفاظ على وظيفة Azure Policy الإضافية آمنة وموثوقة ومؤدية
  • تحسين الوظيفة الإضافية لنهج Azure - من خلال التحليل التجميعي لاستخدام الوظيفة الإضافية

المعلومات التي تم جمعها بواسطة الوظيفة الإضافية ليست بيانات شخصية. يتم حاليًا جمع التفاصيل التالية:

  • إصدار عامل Azure Policy Add-on
  • نوع شبكة نظام المجموعة
  • منطقة نظام المجموعة
  • مجموعة موارد نظام المجموعة
  • معرف مورد نظام المجموعة
  • معرف اشتراك نظام المجموعة
  • نظام تشغيل نظام المجموعة (مثال: Linux)
  • مدينة نظام المجموعة (مثال: سياتل)
  • ولاية نظام المجموعة أو المقاطعة (مثال: واشنطن)
  • بلد نظام المجموعة أو المنطقة (مثال: الولايات المتحدة)
  • الاستثناءات/الأخطاء التي واجهتها الوظيفة الإضافية لنهج Azure في أثناء تثبيت العامل في تقييم النهج
  • عدد تعريفات نهج Gatekeeper غير المثبتة بواسطة الوظيفة الإضافية لنهج Azure

ما هي أفضل الممارسات العامة التي يجب مراعاتها عند تثبيت الوظيفة الإضافية لنهج Azure؟

  • استخدم تجمع عقدة النظام مع صبغة CriticalAddonsOnly لجدولة جرابات Gatekeeper. لمزيد من المعلومات، راجع استخدام تجمعات عقد النظام.
  • تأمين نسبة استخدام الشبكة الصادرة من مجموعات AKS الخاصة بك. لمزيد من المعلومات، راجع التحكم في نسبة استخدام الشبكة الصادر لنظام مجموعة العقد.
  • إذا تم تمكين هوية aad-pod لنظام المجموعة، تقوم قرون الهوية المدارة للعقدة (NMI) بتعديل iptables للعقد لاعتراض المكالمات إلى نقطة نهاية بيانات تعريف مثيل Azure. يعني هذا التكوين أن أي طلب يتم إجراؤه على نقطة نهاية بيانات التعريف يتم اعتراضه بواسطة NMI حتى إذا لم يستخدم pod aad-pod-identity.
  • يمكن تكوين AzurePodIdentityException CRD لإعلام aad-pod-identity بأن أي طلبات إلى نقطة نهاية بيانات التعريف التي تنشأ من جراب يطابق التسميات المحددة في CRD يجب أن تكون مدعومة دون أي معالجة في NMI. pods النظام مع kubernetes.azure.com/managedby: يجب استبعاد تسمية aks في مساحة اسم نظام kube في aad-pod-identity عن طريق تكوين AzurePodIdentityException CRD. لمزيد من المعلومات، راجع تعطيل aad-pod-identity لـ pod أو تطبيق معين. لتكوين استثناء، قم بتثبيت YAML استثناء هيئة التصنيع العسكري.

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