إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
تصف هذه المقالة كيف تقرر خدمة Azure Kubernetes Service (AKS) ما يسمح للمتصل المصادق بفعله ضد واجهة برمجة تطبيقات Kubernetes. يغطي نموذجي التفويض اللذين يدعمهما AKS والتحكم الدقيق في الموارد مع شروط Azure ABAC.
للاطلاع على كيفية مصادقة AKS للمتصلين في المقام الأول، انظر مفاهيم المصادقة في العنقود.
للحصول على توجيه عبر جميع سيناريوهات الهوية الأربعة ل AKS، راجع خيارات الوصول والهوية ل AKS.
تفويض واجهة برمجة تطبيقات Kubernetes
بعد التحقق من صحة المتصل، يقوم AKS بتقييم ما إذا كان المتصل مخولا بتنفيذ الإجراء المطلوب. تدعم AKS نموذجين للتفويض لواجهة برمجة تطبيقات Kubernetes:
- التحكم في الوصول القائم على الأدوار (RBAC) بنظام Kubernetes. نموذج تفويض Kubernetes الأصلي. تعرف الأذونات ك
Roleوكائنات وتمنحClusterRoleللمواضيع من خلالRoleBindingالكائنات المخزنةClusterRoleBindingفي كل عنقود. - تفويض Microsoft Entra ID. رابط ويب لتفويض AKS يفوض قرارات التفويض إلى معرف Microsoft Entra ID. تمنح الأذونات كتعيين أدوار ل Azure لهويات معرف إنترا، ويمكن تحسينها اختياريا باستخدام شروط Azure ABAC.
يمكنك استخدام كلا النموذجين على نفس العنقود. نوصي بتفويض Microsoft Entra ID كخيار افتراضي ونحتفظ ب Kubernetes RBAC لأذونات داخل العنقود الدقيقة والمفصلة داخل المجموعة. يشرح بقية هذا القسم سبب ومتى يجب استخدام كل منهما.
Kubernetes RBAC
كوبيرنيتس RBAC هو نموذج تفويض كوبيرنيتس الصادر. أنت تؤلف Role أو ClusterRole تكتفي بمنح أفعال (مثل get, list, create) على الموارد (مثل pods، deployments)، وترتبطها بالمواضيع (المستخدمين، المجموعات، أو حسابات الخدمة) التي تستخدم RoleBinding أو ClusterRoleBinding كائنات. يقوم تفويض RBAC المدمج في خادم Kubernetes بتقييم هذه القيود على كل طلب.
استخدم Kubernetes RBAC عندما تريد:
- يتم إنشاء تحكم وصول دقيق، داخل العنقود، لكل مساحة اسم تم تأليفها ككوبيرنيتس إلى جانب أحمال العمل التي تحميها.
- تفويض يديره GitOps ويعيش في نفس مصدر الحقيقة مثل تكوين تطبيقك.
- أذونات لحسابات الخدمة داخل العنقود التي تستخدمها أحمال العمل لاستدعاء واجهة برمجة تطبيقات Kubernetes.
أذونات كوبيرنتيز RBAC تحدد في مجموعة واحدة. لتطبيق نفس السياسة على العديد من العناصر، يجب عليك تطبيق القوائم على كل عنقود (عادة عبر GitOps). استخدم مستخدمي ومجموعات Microsoft Entra كمواضيع في Kubernetes RoleBinding وكائنات ClusterRoleBinding حتى تظل الهويات البشرية تأتي من دليلك المركزي.
للحصول على خلفية حول نموذج Kubernetes RBAC، راجع توثيق Kubernetes RBAC في المراحل الأولى. للإعداد في AKS، انظر Use Kubernetes RBAC مع تكامل Microsoft Entra.
تفويض معرف Microsoft Entra لواجهة برمجة تطبيقات Kubernetes
مع تفويض معرف إنترا، ينشر AKS هوك تفويض ويبهوك تفويض قرارات تفويض واجهة برمجة تطبيقات كوبيرنتيز إلى معرف إنترا مايكروسوفت. عندما يصل الطلب إلى خادم API، يستدعي webhook واجهة برمجة تطبيقات Entra ID checkaccess لتقييم تعيينات أدوار Azure الخاصة بالمتصل (وأي شروط ABAC مرتبطة) ويعيد قرار السماح أو الرفض.
تمنحك تفويض معرف إنترا الفوائد التالية مقارنة بإدارة قوائم Kubernetes RBAC على كل عنقود:
- مستوى هوية واحد. نفس مستخدمي Microsoft Entra والمجموعات ومبادئ الخدمة التي تحكم الوصول إلى موارد Azure الخاصة بك تتحكم أيضا في الوصول إلى واجهة برمجة تطبيقات Kubernetes الخاصة بك. لا يوجد دليل مستخدم منفصل لتزويده أو تدويره.
- التعيين مرة واحدة، تحكم العديد من العناصر. يمكن إجراء تعيين أدوار Azure ضمن نطاق الاشتراك، أو مجموعة الإدارة، أو مجموعة الموارد. تعيين دور واحد في نطاق مجموعة الموارد يمنح الوصول إلى كل عنقود AKS الحالي والمستقبلي في تلك المجموعة المواردية. مع Kubernetes RBAC، يجب عليك تطبيق القوائم على كل مجموعة بشكل فردي.
- الوصول المشروط وإدارة الهوية المميزة (PIM). يرث الوصول إلى المجموعات تلقائيا سياسات الوصول الشرطي لمعرف إنترا الحالية لمنظمتك (مثل المصادقة متعددة العوامل أو القيود القائمة على الموقع) ويمكن ترقيته في الوقت المناسب من خلال PIM.
- تدقيق مركزي. يتم تسجيل كل تغيير في تعيين الأدوار في سجل نشاط Azure إلى جانب تغييرات موارد Azure الأخرى، لذا لديك مسار تدقيق واحد لحوكمة الوصول إلى العنقود.
- قيود موارد مخصصة دقيقة ودقيقة. مع شروط ABAC، يمكنك تقييد الوصول إلى مجموعات وأنواع موارد مخصصة محددة (CRD) دون كتابة بيانات Kubernetes RBAC لكل مجموعة.
يوفر AKS الأدوار المدمجة التالية لتفويض معرف إنترا:
| الدور | الوصف |
|---|---|
| Azure Kubernetes Service RBAC Reader | الوصول للقراءة فقط لمعظم الكائنات في مساحة الأسماء. لا يسمح بأدوار المشاهدة، أو ربط الأدوار، أو Secrets. |
| كاتب RBAC لخدمة Azure Kubernetes | الوصول إلى معظم الكائنات في مساحة الأسماء. لا يسمح بعرض أو تعديل الأدوار أو القيود على الأدوار. |
| Azure Kubernetes Service مسؤول التحكم في الوصول استنادا إلى الدور | الوصول للقراءة/الكتابة لمعظم الموارد في مساحة الاسم، بالإضافة إلى القدرة على إنشاء الأدوار وروابط الأدوار داخل مساحة الأسماء. |
| Azure Kubernetes Service مسؤول نظام مجموعة RBAC | تحكم كامل في كل مورد في العنقود، عبر جميع مساحات الأسماء. |
بالنسبة لأنماط الأمور المخصصة، يمكنك تأليف تعريفات أدوار مخصصة تستهدف مجموعات برمجة تطبيقات Kubernetes المحددة باستخدام Microsoft.ContainerService إجراءات بيانات مزود الموارد. للحصول على أمثلة على إعداد خطوة بخطوة والأدوار المخصصة، انظر Use Microsoft Entra ID لتفويض واجهة برمجة تطبيقات Kubernetes.
المقارنه
| الإمكانية | Kubernetes RBAC | تفويض معرف إنترا |
|---|---|---|
| مصدر الهوية | مستخدمو Kubernetes، المجموعات، حسابات الخدمة | هويات Microsoft Entra ID |
| نطاق منح واحدة | مجموعة واحدة | مجموعة الموارد، مجموعة الموارد، الاشتراك، أو مجموعة الإدارة |
| حوكمة المجموعات المتعددة | تطبيق القوائم على كل مجموعة (عادة GitOps) | تعيين دور واحد في نطاق أعلى يتحكم في العديد من المجموعات |
| الوصول المشروط / PIM | غير مدعوم | الموروث من إنترا ID |
| سجل المراجعة | سجل تدقيق العنقود | سجل Azure Activity |
| تصفية الوصول حسب مجموعة أو نوع CRD | كائنات المؤلف لكل CRD Role |
استخدم سمات حالة ABAC في تعيين الأدوار |
تقييد الوصول المخصص إلى الموارد باستخدام شروط ABAC
عندما تمنح صلاحية قراءة واسعة النطاق من خلال تفويض Microsoft Entra ID ولكن ترغب في تقييد الموارد المخصصة (CRDs) التي يمكن للموظف قراءتها، قم بإرفاق شرط Azure ABAC إلى تعيين الدور.
بدون شروط ABAC، يتطلب منح قراءة على الموارد المخصصة بطاقة غير متوقعة مثل Microsoft.ContainerService/managedClusters/*/read، التي تغطي كل CRD على كل مجموعة ضمن النطاق. مع ABAC، يمكنك إرفاق شرط يقيد الوصول إلى مجموعات وأنواع محددة من CRD — على سبيل المثال، السماح templates.gatekeeper.sh أثناء الحظر kyverno.io — دون كتابة بيانات Kubernetes RBAC لكل مجموعة.
بالنسبة لتفويض واجهة برمجة تطبيقات Kubernetes، يمكنك تصفية الوصول إلى الموارد المخصصة حسب مجموعة وأنواع API الخاصة بها باستخدام السمات التالية:
Microsoft.ContainerService/managedClusters/customResources:groupMicrosoft.ContainerService/managedClusters/customResources:kind
للحصول على خلفية عن Azure ABAC، انظر ما هي شروط تعيين الأدوار في Azure؟ للإعداد خطوة بخطوة، انظر تقييد الوصول المخصص إلى الموارد باستخدام شروط ABAC.