استخدام هوية حمل عمل Microsoft Entra مع خدمة Azure Kubernetes (AKS)

تتطلب أحمال العمل المنشورة على مجموعة Azure Kubernetes Services (AKS) بيانات اعتماد تطبيق Microsoft Entra أو الهويات المدارة للوصول إلى الموارد المحمية من Microsoft Entra، مثل Azure Key Vault وMicrosoft Graph. يتكامل هوية حمل عمل Microsoft Entra مع القدرات الأصلية ل Kubernetes للاتحاد مع موفري الهوية الخارجيين.

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

يعمل هوية حمل عمل Microsoft Entra بشكل جيد بشكل خاص مع مكتبات عميل Azure Identity ومجموعة مكتبة مصادقة Microsoft (MSAL) إذا كنت تستخدم تسجيل التطبيق. يمكن لحمل العمل الخاص بك استخدام أي من هذه المكتبات لمصادقة موارد سحابة Azure والوصول إليها بسلاسة.

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

إشعار

بدلا من تكوين جميع الخطوات يدويا، هناك تنفيذ آخر يسمى Service الاتصال or والذي سيساعدك على تكوين بعض الخطوات تلقائيا. راجع أيضا: ما المقصود بالخدمة الاتصال أو؟

التبعيات

  • يدعم AKS هوية حمل عمل Microsoft Entra على الإصدار 1.22 والإصدارات الأحدث.
  • الإصدار 2.47.0 من Azure CLI أو أحدث. قم بتشغيل az --version للعثور على الإصدار، ثم قم بتشغيل az upgrade لترقية الإصدار. إذا كنت بحاجة إلى التثبيت أو الترقية، فراجع تثبيت Azure CLI.

مكتبات عميل الهوية Azure

في مكتبات عميل Azure Identity، اختر أحد الأساليب التالية:

  • استخدم DefaultAzureCredential، الذي يحاول استخدام WorkloadIdentityCredential.
  • إنشاء مثيل ChainedTokenCredential يتضمن WorkloadIdentityCredential.
  • استخدم WorkloadIdentityCredential مباشرة.

يوفر الجدول التالي الحد الأدنى من إصدار الحزمة المطلوبة لكل مكتبة عميل للنظام البنائي للغة.

النظام البنائي مكتبة الحد الأدنى للإصدار
.NET Azure.Identity 1.9.0
C++‎ azure-identity-cpp 1.6.0
انتقال الازداج 1.3.0
Java هوية azure 1.9.0
Node.js @azure/الهوية 3.2.0
Python هوية azure 1.13.0

في نماذج التعليمات البرمجية التالية، DefaultAzureCredential يتم استخدام. يستخدم نوع بيانات الاعتماد هذا متغيرات البيئة التي تم إدخالها بواسطة خطاف الويب الخاص بتحول هوية حمل العمل Azure للمصادقة مع Azure Key Vault.

using Azure.Identity;
using Azure.Security.KeyVault.Secrets;

string keyVaultUrl = Environment.GetEnvironmentVariable("KEYVAULT_URL");
string secretName = Environment.GetEnvironmentVariable("SECRET_NAME");

var client = new SecretClient(
    new Uri(keyVaultUrl),
    new DefaultAzureCredential());

KeyVaultSecret secret = await client.GetSecretAsync(secretName);

مكتبة مصادقة Microsoft (MSAL)

مكتبات العميل التالية هي الحد الأدنى من الإصدار المطلوب.

النظام البنائي مكتبة الصورة مثال يحتوي على Windows
.NET Microsoft Authentication Library-for-dotnet ghcr.io/azure/azure-workload-identity/msal-net:latest الارتباط ‏‏نعم‬
انتقال مكتبة مصادقة Microsoft للاستخدام ghcr.io/azure/azure-workload-identity/msal-go:latest الارتباط ‏‏نعم‬
Java Microsoft Authentication Library-for-java ghcr.io/azure/azure-workload-identity/msal-java:latest الارتباط لا
JavaScript Microsoft Authentication Library-for-js ghcr.io/azure/azure-workload-identity/msal-node:latest الارتباط لا
Python Microsoft Authentication Library-for-python ghcr.io/azure/azure-workload-identity/msal-python:latest الارتباط لا

القيود

  • يمكنك الحصول على 20 بيانات اعتماد هوية موحدة فقط لكل هوية مدارة.
  • يستغرق نشر بيانات اعتماد الهوية الموحدة بعد إضافتها في البداية بضع ثوان.
  • العقد الظاهرية الإضافية، استنادا إلى مشروع مصدر مفتوح Virtual Kubelet، غير مدعوم.
  • لا يتم دعم إنشاء بيانات اعتماد الهوية الموحدة على الهويات المدارة المعينة من قبل المستخدم في هذه المناطق.

طريقة العمل

في نموذج الأمان هذا، يعمل نظام مجموعة AKS كمصدر للرمز المميز، ويستخدم معرف Microsoft Entra الاتصال OpenID لاكتشاف مفاتيح التوقيع العامة والتحقق من صحة رمز حساب الخدمة المميز قبل تبادله مع رمز Microsoft Entra المميز. يمكن أن يتبادل حمل العمل الخاص بك رمزا مميزا لحساب الخدمة تم إسقاطه إلى وحدة التخزين الخاصة به للرمز المميز ل Microsoft Entra باستخدام مكتبة عميل Azure Identity أو مكتبة مصادقة Microsoft.

رسم تخطيطي لنموذج أمان هوية حمل عمل AKS.

يصف الجدول التالي نقاط نهاية مصدر OIDC المطلوبة هوية حمل عمل Microsoft Entra:

نقطة النهاية ‏‏الوصف
{IssuerURL}/.well-known/openid-configuration يعرف أيضا باسم مستند اكتشاف OIDC. يحتوي هذا على بيانات التعريف حول تكوينات المصدر.
{IssuerURL}/openid/v1/jwks يحتوي هذا على مفتاح (مفاتيح) التوقيع العام الذي يستخدمه معرف Microsoft Entra للتحقق من صحة الرمز المميز لحساب الخدمة.

يلخص الرسم التخطيطي التالي تسلسل المصادقة باستخدام OpenID الاتصال.

رسم تخطيطي لتسلسل مصادقة OIDC لهوية حمل عمل AKS.

التدوير التلقائي لشهادة إخطار على الويب

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

تسميات حساب الخدمة والتعليقات التوضيحية

يدعم هوية حمل عمل Microsoft Entra التعيينات التالية المتعلقة بحساب الخدمة:

  • واحد لواحد حيث يشير حساب الخدمة إلى كائن Microsoft Entra.
  • متعدد إلى واحد حيث تشير حسابات خدمة متعددة إلى نفس كائن Microsoft Entra.
  • واحد إلى متعدد حيث يشير حساب الخدمة إلى كائنات Microsoft Entra متعددة عن طريق تغيير التعليق التوضيحي لمعرف العميل. لمزيد من المعلومات، راجع كيفية توحيد هويات متعددة باستخدام حساب خدمة Kubernetes.

إشعار

إذا تم تحديث التعليقات التوضيحية لحساب الخدمة، فستحتاج إلى إعادة تشغيل pod حتى تسري التغييرات.

إذا كنت قد استخدمت هوية مدارة بواسطة Microsoft Entra، ففكر في حساب الخدمة كهوية Azure، باستثناء أن حساب الخدمة جزء من واجهة برمجة تطبيقات Kubernetes الأساسية، بدلا من تعريف الموارد المخصصة (CRD). يصف ما يلي قائمة بالتسميات والتعليقات التوضيحية المتوفرة التي يمكن استخدامها لتكوين السلوك عند تبادل رمز حساب الخدمة المميز للرمز المميز للوصول إلى Microsoft Entra.

التعليقات التوضيحية لحساب الخدمة

جميع التعليقات التوضيحية اختيارية. إذا لم يتم تحديد التعليق التوضيحي، فسيتم استخدام القيمة الافتراضية.

تعليق توضيحي ‏‏الوصف الإعداد الافتراضي
azure.workload.identity/client-id يمثل تطبيق Microsoft Entra
معرف العميل الذي سيتم استخدامه مع pod.
azure.workload.identity/tenant-id يمثل معرف مستأجر Azure حيث
تم تسجيل تطبيق Microsoft Entra.
تم استخراج متغير البيئة AZURE_TENANT_ID
من azure-wi-webhook-config ConfigMap.
azure.workload.identity/service-account-token-expiration يمثل الحقل الخاص ب expirationSeconds
الرمز المميز لحساب الخدمة المتوقع. إنه حقل اختياري تقوم بتكوينه لمنع وقت التعطل
بسبب أخطاء أثناء تحديث الرمز المميز لحساب الخدمة. لا ترتبط انتهاء صلاحية الرمز المميز لحساب خدمة Kubernetes بالرموز المميزة ل Microsoft Entra. تنتهي صلاحية رموز Microsoft Entra المميزة في 24 ساعة بعد إصدارها.
3600
النطاق المدعوم هو 3600-86400.

تسميات الجراب

إشعار

بالنسبة للتطبيقات التي تستخدم هوية حمل العمل، يلزم إضافة التسمية azure.workload.identity/use: "true" إلى مواصفات الجراب ل AKS لنقل هوية حمل العمل إلى سيناريو إغلاق الفشل لتوفير سلوك متسق وموثوق به للحجيرات التي تحتاج إلى استخدام هوية حمل العمل. وإلا تفشل القرون بعد إعادة تشغيلها.

التسمية ‏‏الوصف القيمة الموصى بها المطلوب
azure.workload.identity/use هذه التسمية مطلوبة في مواصفات قالب الجراب. يتم تغيير الحجيرات التي تحتوي على هذه التسمية فقط بواسطة خطاف ويب القبول المتغير ل azure-workload-identity لإدخال متغيرات البيئة الخاصة ب Azure وحجم الرمز المميز لحساب الخدمة المتوقع. صحيح ‏‏نعم‬

التعليقات التوضيحية للجراب

جميع التعليقات التوضيحية اختيارية. إذا لم يتم تحديد التعليق التوضيحي، فسيتم استخدام القيمة الافتراضية.

تعليق توضيحي ‏‏الوصف الإعداد الافتراضي
azure.workload.identity/service-account-token-expiration expirationSeconds يمثل الحقل الخاص بالرمز المميز لحساب الخدمة المتوقع. إنه حقل اختياري تقوم بتكوينه لمنع أي وقت تعطل ناتج عن أخطاء أثناء تحديث الرمز المميز لحساب الخدمة. لا ترتبط انتهاء صلاحية الرمز المميز لحساب خدمة Kubernetes بالرموز المميزة ل Microsoft Entra. تنتهي صلاحية رموز Microsoft Entra المميزة في 24 ساعة بعد إصدارها. 1 3600
النطاق المدعوم هو 3600-86400.
azure.workload.identity/skip-containers يمثل قائمة مفصولة بفواصل منقوطة من الحاويات لتخطي إضافة وحدة تخزين الرمز المميز لحساب الخدمة المتوقع. على سبيل المثال، container1;container2 بشكل افتراضي، تتم إضافة وحدة تخزين الرمز المميز لحساب الخدمة المتوقعة إلى جميع الحاويات إذا تم تسمية حساب الخدمة ب azure.workload.identity/use: true.
azure.workload.identity/inject-proxy-sidecar إدخال حاوية init وكيل ووكيل sidecar في الجراب. يتم استخدام sidecar الوكيل لاعتراض طلبات الرمز المميز إلى IMDS والحصول على رمز Microsoft Entra المميز نيابة عن المستخدم مع بيانات اعتماد الهوية الموحدة. صحيح
azure.workload.identity/proxy-sidecar-port يمثل منفذ sidecar الوكيل. 8000

1 لها الأسبقية إذا تم أيضا إضافة تعليق توضيحي إلى حساب الخدمة.

كيفية الترحيل إلى هوية حمل العمل

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

الخيار الثاني هو إعادة كتابة التطبيق الخاص بك لاستخدام أحدث إصدار من مكتبة عميل Azure Identity.

للمساعدة في تبسيط عملية الترحيل وتسهيلها، قمنا بتطوير مخطط جانبي للترحيل يحول معاملات IMDS التي يقوم تطبيقك بها إلى OpenID الاتصال (OIDC). لا يقصد من جانب الترحيل أن يكون حلا طويل الأجل، ولكنه طريقة للحصول على هوية حمل العمل وتشغيلها بسرعة. تشغيل جانب الترحيل داخل التطبيق الخاص بك وكلاء معاملات IMDS التطبيق عبر إلى OIDC. النهج البديل هو الترقية إلى إصدار مدعوم من مكتبة عميل Azure Identity ، والتي تدعم مصادقة OIDC.

يلخص الجدول التالي توصيات الترحيل أو النشر لهوية حمل العمل.

السيناريو ‏‏الوصف
يقوم نشر نظام المجموعة الجديد أو الحالي بتشغيل إصدار مدعوم من مكتبة عميل Azure Identity لا توجد خطوات ترحيل مطلوبة.
عينة موارد التوزيع:
- نشر هوية حمل العمل وتكوينها على نظام مجموعة جديد
- البرنامج التعليمي: استخدام هوية حمل العمل مع تطبيق على AKS
يعمل نشر نظام المجموعة الجديد أو الحالي على تشغيل إصدار غير مدعوم من مكتبة عميل Azure Identity قم بتحديث صورة الحاوية لاستخدام إصدار مدعوم من Azure Identity SDK، أو استخدم جانب الترحيل.

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