استخدام 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
. يتم استخدام معرف تطبيق العميل في التعليمات البرمجية للجهاز وأساليب المصادقة التفاعلية لمستعرض الويب.
المحتوى ذو الصلة
- تعرف على كيفية دمج AKS مع معرف Microsoft Entra في مقالة كيفية تكامل معرف Microsoft Entra المدارة من AKS.
- للبدء في الهويات المدارة في AKS، راجع استخدام هوية مدارة في AKS.
- لبدء استخدام هويات حمل العمل في AKS، راجع استخدام هوية حمل العمل في AKS.
Azure Kubernetes Service