استخدام kubelogin لمصادقة المستخدمين في خدمة Azure Kubernetes

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

تستخدم مجموعات Azure Kubernetes Service (AKS) المدمجة مع معرف Microsoft Entra وتشغيل إصدار Kubernetes 1.24 أو أحدث تنسيق kubelogin تلقائيا.

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

القيود

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

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

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

أساليب المصادقة التي ينفذها kubelogin هي تدفقات منح الرمز المميز Microsoft Entra OAuth 2.0. علامات المعلمات التالية شائعة الاستخدام في أوامر kubelogin الفرعية. بشكل عام، تكون هذه العلامات جاهزة للاستخدام عند الحصول على ملف kubeconfig من AKS.

  • --tenant-id: معرف مستأجر Microsoft Entra.
  • --client-id: معرف التطبيق لتطبيق العميل العام. يتم استخدام تطبيق العميل هذا فقط في التعليمات البرمجية للجهاز ومستعرض الويب التفاعلي وأساليب تسجيل الدخول إلى OAuth 2.0 Resource Owner Password Credentials (ROPC) (هوية سير العمل).
  • --server-id: معرف التطبيق لتطبيق الويب أو خادم الموارد. يتم إصدار الرمز المميز لهذا المورد.

إشعار

في كل أسلوب مصادقة، لا يتم تخزين الرمز المميز مؤقتا على نظام الملفات.

طرق المصادقة

تصف الأقسام التالية أساليب المصادقة المدعومة وكيفية استخدامها:

  • التعليمية البرمجية للجهاز
  • Azure CLI
  • مستعرض ويب تفاعلي
  • كيان الخدمة
  • الهوية المُدارة
  • هوية حمل العمل

التعليمية البرمجية للجهاز

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

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

إذا كانت متطلباتك تتضمن استخدام وظائف من إصدارات سابقة، أضف الوسيطة --legacy . إذا كنت تستخدم ملف kubeconfig في إصدار سابق من مجموعة Azure Active Directory، فإن kubelogin يضيف العلامة --legacy تلقائيا.

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

إذا كانت مجموعة AKS Microsoft Entra المتكاملة تستخدم Kubernetes 1.24 أو إصدار سابق، يجب تحويل تنسيق ملف kubeconfig يدويا عن طريق تشغيل الأوامر التالية:

export KUBECONFIG=/path/to/kubeconfig
kubelogin convert-kubeconfig

قم بتشغيل أمر kubectl هذا للحصول على معلومات العقدة:

kubectl get nodes

لتنظيف الرموز المميزة المخزنة مؤقتا، قم بتشغيل الأمر التالي:

kubelogin remove-tokens

إشعار

لا يعمل أسلوب تسجيل الدخول إلى رمز الجهاز عند تكوين نهج الوصول المشروط على مستأجر Microsoft Entra. في هذا السيناريو، استخدم أسلوب مستعرض الويب التفاعلي.

Azure CLI

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

إشعار

يعمل أسلوب المصادقة هذا فقط مع معرف Microsoft Entra المدار بواسطة AKS.

يوضح المثال التالي كيفية استخدام أسلوب Azure CLI للمصادقة:

az login

export KUBECONFIG=/path/to/kubeconfig

kubelogin convert-kubeconfig -l azurecli

قم بتشغيل أمر kubectl هذا للحصول على معلومات العقدة:

kubectl get nodes

إذا كان دليل تكوين Azure CLI خارج الدليل ${HOME} ، فاستخدم المعلمة --azure-config-dir convert-kubeconfig مع الأمر الفرعي. يقوم الأمر بإنشاء ملف kubeconfig مع تكوين متغير البيئة. يمكنك الحصول على نفس التكوين عن طريق تعيين AZURE_CONFIG_DIR متغير البيئة إلى هذا الدليل عند تشغيل أمر kubectl.

مستعرض ويب تفاعلي

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

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

رمز مميز للرمز المميز للحامل

يوضح المثال التالي كيفية استخدام رمز حامل مع التدفق التفاعلي لمستعرض الويب:

export KUBECONFIG=/path/to/kubeconfig

kubelogin convert-kubeconfig -l interactive

قم بتشغيل أمر kubectl هذا للحصول على معلومات العقدة:

kubectl get nodes

رمز إثبات الحيازة

يوضح المثال التالي كيفية استخدام رمز إثبات الحيازة (PoP) المميز مع التدفق التفاعلي لمستعرض الويب:

export KUBECONFIG=/path/to/kubeconfig

kubelogin convert-kubeconfig -l interactive --pop-enabled --pop-claims "u=/ARM/ID/OF/CLUSTER"

قم بتشغيل أمر kubectl هذا للحصول على معلومات العقدة:

kubectl get nodes

كيان الخدمة

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

قبل استخدام هذا الأسلوب، ضع في اعتبارك القيود التالية:

  • يعمل هذا الأسلوب فقط مع معرف Microsoft Entra المدار.
  • يمكن أن يكون كيان الخدمة عضوا في 200 مجموعة Microsoft Entra كحد أقصى.

متغيرات البيئة

يوضح المثال التالي كيفية إعداد سر العميل باستخدام متغيرات البيئة:

export KUBECONFIG=/path/to/kubeconfig

kubelogin convert-kubeconfig -l spn

export AAD_SERVICE_PRINCIPAL_CLIENT_ID=<Service Principal Name (SPN) client ID>
export AAD_SERVICE_PRINCIPAL_CLIENT_SECRET=<SPN secret>

قم بتشغيل أمر kubectl هذا للحصول على معلومات العقدة:

kubectl get nodes

ثم قم بتشغيل هذا الأمر:

export KUBECONFIG=/path/to/kubeconfig

kubelogin convert-kubeconfig -l spn

export AZURE_CLIENT_ID=<SPN client ID>
export AZURE_CLIENT_SECRET=<SPN secret>

قم بتشغيل أمر kubectl هذا للحصول على معلومات العقدة:

kubectl get nodes

وسائط سطر الأوامر

يوضح المثال التالي كيفية إعداد سر عميل في وسيطة سطر الأوامر:

export KUBECONFIG=/path/to/kubeconfig

kubelogin convert-kubeconfig -l spn --client-id <SPN client ID> --client-secret <SPN client secret>

قم بتشغيل أمر kubectl هذا للحصول على معلومات العقدة:

kubectl get nodes

تحذير

يخزن أسلوب وسيطة سطر الأوامر السر في ملف kubeconfig.

شهادة العميل

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

export KUBECONFIG=/path/to/kubeconfig

kubelogin convert-kubeconfig -l spn

export AAD_SERVICE_PRINCIPAL_CLIENT_ID=<SPN client ID>
export AAD_SERVICE_PRINCIPAL_CLIENT_CERTIFICATE=/path/to/cert.pfx
export AAD_SERVICE_PRINCIPAL_CLIENT_CERTIFICATE_PASSWORD=<PFX password>

قم بتشغيل أمر kubectl هذا للحصول على معلومات العقدة:

kubectl get nodes

ثم قم بتشغيل هذا الأمر:

export KUBECONFIG=/path/to/kubeconfig

kubelogin convert-kubeconfig -l spn

export AZURE_CLIENT_ID=<SPN client ID>
export AZURE_CLIENT_CERTIFICATE_PATH=/path/to/cert.pfx
export AZURE_CLIENT_CERTIFICATE_PASSWORD=<PFX password>

قم بتشغيل أمر kubectl هذا للحصول على معلومات العقدة:

kubectl get nodes

رمز PoP المميز ومتغيرات البيئة

يوضح المثال التالي كيفية إعداد رمز PoP المميز الذي يستخدم سر العميل الذي يحصل عليه من متغيرات البيئة:

export KUBECONFIG=/path/to/kubeconfig

kubelogin convert-kubeconfig -l spn --pop-enabled --pop-claims "u=/ARM/ID/OF/CLUSTER"

export AAD_SERVICE_PRINCIPAL_CLIENT_ID=<SPN client ID>
export AAD_SERVICE_PRINCIPAL_CLIENT_SECRET=<SPN secret>

قم بتشغيل أمر kubectl هذا للحصول على معلومات العقدة:

kubectl get nodes

الهوية المُدارة

استخدم أسلوب مصادقة الهوية المدارة للتطبيقات التي تتصل بالموارد التي تدعم مصادقة Microsoft Entra. تتضمن الأمثلة الوصول إلى موارد Azure مثل جهاز Azure الظاهري أو مجموعة مقياس الجهاز الظاهري أو Azure Cloud Shell.

الهوية المدارة الافتراضية

يوضح المثال التالي كيفية استخدام الهوية المدارة الافتراضية:

export KUBECONFIG=/path/to/kubeconfig

kubelogin convert-kubeconfig -l msi

قم بتشغيل أمر kubectl هذا للحصول على معلومات العقدة:

kubectl get nodes

هوية محددة

يوضح المثال التالي كيفية استخدام هوية مدارة بهوية معينة:

export KUBECONFIG=/path/to/kubeconfig

kubelogin convert-kubeconfig -l msi --client-id <msi-client-id>

قم بتشغيل أمر kubectl هذا للحصول على معلومات العقدة:

kubectl get nodes

هوية حمل العمل

يستخدم أسلوب مصادقة هوية حمل العمل بيانات اعتماد الهوية التي يتم توحيدها مع Microsoft Entra لمصادقة الوصول إلى مجموعات AKS. يستخدم الأسلوب مصادقة Microsoft Entra المتكاملة. يعمل عن طريق تعيين متغيرات البيئة التالية:

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

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

يوضح المثال التالي كيفية استخدام هوية حمل العمل:

export KUBECONFIG=/path/to/kubeconfig

kubelogin convert-kubeconfig -l workloadidentity

قم بتشغيل أمر kubectl هذا للحصول على معلومات العقدة:

kubectl get nodes

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

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

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

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