Use kubelogin لتوثيق المستخدمين في Azure Kubernetes Service (AKS)

المكون الإضافي kubelogin في Azure هو مكون إضافي لبيانات الاعتماد من العميل الذي ينفذ مصادقة Microsoft Entra. يوفر المكون الإضافي kubelogin ميزات غير متوفرة في أداة سطر الأوامر kubectl. لمزيد من المعلومات، راجع مقدمة kubelogin ومقدمة kubectl.

تقدم هذه المقالة نظرة عامة وأمثلة حول كيفية استخدام kubelogin لجميع طرق مصادقة Microsoft Entra المدعومة في AKS.

قيود مصادقة Kubelogin في AKS

  • المجموعات التي يتم إنشاؤها في Microsoft Entra تدرج فقط بقيمة ObjectID ، وليس باسم العرض الخاص بها. sAMAccountName يتوفر الأمر فقط للمجموعات التي تتم مزامنتها من Windows Server Active Directory المحلي.
  • طريقة التحقق من المصادقة الرئيسية للخدمة تعمل فقط مع Microsoft Entra المدارة، وليس مع الإصدار الأقدم Azure Active Directory.
  • يمكن أن يكون كيان الخدمة عضوا في 200 مجموعة Microsoft Entra كحد أقصى. إذا كان لديك أكثر من 200 مجموعة، ففكر في استخدام أدوار التطبيق.
  • لا تعمل طريقة مصادقة التعليمات البرمجية للجهاز عند تعيين نهج الوصول المشروط ل Microsoft Entra على مستأجر Microsoft Entra. في هذا السيناريو، استخدم المصادقة التفاعلية عبر متصفح الويب بدلا من ذلك.
  • طريقة مصادقة Azure CLI تعمل فقط مع Microsoft Entra.

كيفية عمل المصادقة

إشعار

ضع في اعتبارك المعلومات التالية حول مصادقة kubelogin لمجموعات AKS المدمجة مع Microsoft Entra:

  • تستخدم المجموعات التي تعمل كوبيرنتيز الإصدار 1.24 أو أحدثه تلقائيا صيغة كوبلوجين.
  • تتطلب العناقيد التي تعمل بنظام Kubernetes 1.24 أو أقدمه التحويل اليدوي. يمكنك استخدام طريقة مصادقة كود الجهاز لتحويل ملف kubeconfig إلى تنسيق الإضافات exec.

بالنسبة لمعظم التفاعلات مع kubelogin، يمكنك استخدام convert-kubeconfig الأمر الفرعي. يستخدم الأمر الفرعي ملف kubeconfig المحدد في --kubeconfig أو في KUBECONFIG متغير البيئة لتحويل ملف kubeconfig النهائي إلى تنسيق exec استنادا إلى أسلوب المصادقة المحدد.

أساليب المصادقة التي ينفذها kubelogin هي تدفقات منح الرمز المميز Microsoft Entra OAuth 2.0. في كل طريقة مصادقة، لا يتم تخزين الرمز مؤقتا على نظام الملفات.

التحقق من صحة كود الجهاز

رمز الجهاز هو أسلوب المصادقة الافتراضي لأوامر فرعية convert-kubeconfig . يطالب أسلوب المصادقة هذا رمز الجهاز للمستخدم بتسجيل الدخول من جلسة عمل مستعرض.

إشعار

قبل تقديم المكونات الإضافية kubelogin وexec، كانت طريقة مصادقة Azure في kubectl تدعم تدفق التعليمات البرمجية للجهاز فقط. استخدم إصدارا سابقا من مكتبة تنتج رمزا مميزا يحتوي على المطالبة audience ببادئة spn: . ليست متوافقة مع Microsoft Entra، التي تستخدم تدفق نيابة عن (OBO). عند تشغيل convert-kubeconfig الأمر الفرعي، يزيل kubelogin البادئة spn: من مطالبة الجمهور.

معايير التحقق من شفرة الجهاز

يوضح الجدول التالي المعايير التي يمكنك استخدامها مع مصادقة كود الجهاز:

البارامتر وصف
-l devicecode (اختياري) يحدد طريقة توثيق kubelogin. هذا المعامل اختياري لأن كود الجهاز هو الطريقة الافتراضية.
--legacy يستخدم سلوك قديم للإصدارات السابقة من عناقيد Azure Active Directory. إذا كنت تستخدم ملف kubeconfig في إصدار سابق من مجموعة Azure Active Directory، فإن kubelogin يضيف العلامة --legacy تلقائيا.
--token-cache-dir يتجاوز المسار الافتراضي لمجلد ذاكرة التخزين المؤقت للرموز، وهو ${HOME}/.kube/cache/kubelogin.

Azure CLI authentication

تستخدم طريقة مصادقة Azure CLI (command: -l azurecli) السياق المسجلة الذي ينشئه Azure CLI للحصول على رمز الوصول. يتم إصدار الرمز المميز في نفس مستأجر Microsoft Entra مثل az login. Kubelogin لا يكتب الرموز إلى ملف ذاكرة التخزين المؤقت لأن واجهة Azure CLI تديرها بالفعل.

Parameters for Azure CLI authentication

الجدول التالي يوضح المعلمات التي يمكنك استخدامها مع مصادقة Azure CLI:

البارامتر وصف
-l azurecli يحدد طريقة توثيق kubelogin.
--azure-config-dir يحدد دليل إعدادات Azure CLI. الدليل الافتراضي هو ${HOME}/.azure.

تسجيل الدخول إلى Azure

سجل الدخول إلى Azure باستخدام az login الأمر .

az login

المصادقة التفاعلية في متصفح الويب

طريقة المصادقة التفاعلية (command: -l interactive) في متصفح الويب تفتح تلقائيا متصفح ويب لتسجيل دخول المستخدم. بعد التحقق من صحة المستخدم، يعيد المتصفح توجيهه إلى خادم الويب المحلي باستخدام بيانات الاعتماد الموثقة. يتوافق أسلوب المصادقة هذا مع نهج الوصول المشروط.

يمكنك استخدام رمز حامل أو رمز إثبات الحيازة (PoP) باستخدام هذه الطريقة للتوثيق.

معايير مصادقة رمز الحامل

يوضح الجدول التالي المعلمات التي يمكنك استخدامها مع مصادقة رمز الحامل:

البارامتر وصف
-l interactive يحدد طريقة توثيق kubelogin.
--token-cache-dir يتجاوز المسار الافتراضي لمجلد ذاكرة التخزين المؤقت للرموز، وهو ${HOME}/.kube/cache/kubelogin.

معلمات مصادقة رموز PoP

يوضح الجدول التالي المعلمات التي يمكنك استخدامها مع مصادقة رموز PoP:

البارامتر وصف
-l interactive يحدد طريقة توثيق kubelogin.
--pop-enabled يتيح مصادقة رموز PoP.
--pop-claims يحدد مطالبات رمز PoP بصيغة زوج مفتاح-قيمة. على سبيل المثال، u=/ARM/ID/OF/CLUSTER

المصادقة الأساسية للخدمة

تستخدم طريقة مصادقة مبدأ الخدمة (الأمر: -l spn) اسم خدمة رئيسي لتسجيل دخول المستخدم. يمكنك توفير بيانات الاعتماد عن طريق تعيين متغير بيئة أو باستخدام بيانات الاعتماد في وسيطة سطر الأوامر. بيانات الاعتماد المدعومة التي يمكنك استخدامها هي كلمة مرور أو شهادة عميل تبادل المعلومات الشخصية (PFX).

معلمات مصادقة مبدأ الخدمة

يوضح الجدول التالي المعلمات التي يمكنك استخدامها مع مصادقة مبدأ الخدمة:

البارامتر وصف
-l spn يحدد طريقة توثيق kubelogin.
--client-id معرف التطبيق (معرف العميل) لصاحب الخدمة.
--client-secret سر العميل لمدير الخدمة.

استخدام مُصادقة الهوية المدارة

استخدم طريقة المصادقة المدارة للهوية (command: -l msi) للتطبيقات التي تتصل بالموارد التي تدعم مصادقة Microsoft Entra. تشمل الأمثلة الوصول إلى موارد Azure مثل آلة افتراضية (VM)، أو مجموعة مقياس الآلة الافتراضية، أو Azure Cloud Shell.

يمكنك استخدام الهوية المدارة الافتراضية التي تم تعيينها للمورد أو هوية مدارة معينة من قبل المستخدم.

معايير المصادقة المدارة للهوية

يوضح الجدول التالي المعلمات التي يمكنك استخدامها مع إدارة التحقق من هوية:

البارامتر وصف
-l msi يحدد طريقة توثيق kubelogin.
--client-id معرف التطبيق (معرف العميل) للهوية المدارة المعينة من قبل المستخدم. إذا لم تحدد هذا المعامل، يتم استخدام الهوية المدارة الافتراضية.

مصادقة هوية عبء العمل

تستخدم طريقة مصادقة هوية عبء العمل (command: -l workloadidentity) بيانات اعتماد الهوية التي يتم اتحادها مع Microsoft Entra لتوثيق الوصول إلى مجموعات AKS. يستخدم الأسلوب مصادقة Microsoft Entra المتكاملة. يعمل عن طريق تعيين متغيرات البيئة التالية:

عامل وصف
AZURE_CLIENT_ID معرف تطبيق Microsoft Entra الذي يتم توحيده مع هوية عبء العمل.
AZURE_TENANT_ID معرف المستأجر في Microsoft Entra.
AZURE_FEDERATED_TOKEN_FILE الملف الذي يحتوي على تأكيد موقع لهوية عبء العمل، مثل رمز حساب الخدمة المتوقع (JWT) في Kubernetes.
AZURE_AUTHORITY_HOST رابط القاعدة لسلطة من Microsoft Entra. على سبيل المثال، https://login.microsoftonline.com/

يمكنك استخدام هوية حمل العمل للوصول إلى مجموعات Kubernetes من أنظمة CI/CD مثل GitHub أو ArgoCD دون تخزين بيانات اعتماد كيان الخدمة في الأنظمة الخارجية. لتكوين اتحاد OpenID Connect (OIDC) من GitHub، راجع مثال اتحاد OIDC.

معلمات مصادقة هوية العمال

يوضح الجدول التالي المعلمات التي يمكنك استخدامها مع مصادقة هوية العمال العملي:

البارامتر وصف
-l workloadidentity يحدد طريقة توثيق kubelogin.

تصدير مسار ملف kubeconfig

قبل تشغيل convert-kubeconfig الأمر الفرعي، قم بتصدير مسار ملف kubeconfig إلى KUBECONFIG متغير البيئة. على سبيل المثال:

export KUBECONFIG=/path/to/kubeconfig

تحويل ملف kubeconfig

شغل convert-kubeconfig الأمر الفرعي لتحويل ملف kubeconfig لاستخدام إضافة exec لطريقة المصادقة التي اخترتها.

kubelogin convert-kubeconfig
kubelogin convert-kubeconfig -l azurecli
# Bearer token authentication
kubelogin convert-kubeconfig -l interactive

# Proof-of-Possession (PoP) token authentication
kubelogin convert-kubeconfig -l interactive --pop-enabled --pop-claims "u=/ARM/ID/OF/CLUSTER"
  1. شغل convert-kubeconfig الأمر الفرعي لتحويل ملف kubeconfig لاستخدام إضافة exec.

    kubelogin convert-kubeconfig -l spn
    
  2. حدد متغيرات البيئة لمعرف العميل وسر العميل أو شهادة العميل. على سبيل المثال:

    export AZURE_CLIENT_ID=<service-principal-client-id>
    export AZURE_CLIENT_SECRET=<service-principal-client-secret>
    
# Default managed identity authentication
kubelogin convert-kubeconfig -l msi

# Specific managed identity authentication
kubelogin convert-kubeconfig -l msi --client-id <managed-identity-client-id>
kubelogin convert-kubeconfig -l workloadidentity

إزالة الرموز المخزنة مؤقتا

قم بإزالة الرموز المخزنة مؤقتا باستخدام kubelogin remove-tokens الأمر.

kubelogin remove-tokens

احصل على معلومات العقدة

احصل على معلومات العقدة باستخدام kubectl get الأمر.

kubectl get nodes

كيفية استخدام kubelogin مع AKS

تستخدم AKS زوجا من تطبيقات Microsoft Entra التابعة لجهة أولى. معرفات التطبيق هذه هي نفسها في جميع البيئات.

معرف تطبيق خادم AKS Microsoft Entra (server-id) الذي يستخدمه جانب الخادم هو 6dae42f8-4368-4678-94ff-3960e28e3630. يجب إصدار رمز الوصول الذي يصل إلى مجموعات AKS لهذا التطبيق. في معظم أساليب مصادقة kubelogin، يجب عليك استخدام --server-id مع kubelogin get-token.

معرف تطبيق العميل في Microsoft Entra (معرف العميل) AKS الذي يستخدمه kubelogin لأداء مصادقة العميل العامة نيابة عن المستخدم هو 80faf920-1908-4b52-b5ef-a8e7bedfc67a. يتم استخدام معرف تطبيق العميل في التعليمات البرمجية للجهاز وأساليب المصادقة التفاعلية لمستعرض الويب.