مشاركة عبر


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

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

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

يمكنك استخدام معرف عبء العمل من Microsoft Entra مع مكتبات عملاء Azure Identity أو مجموعة مكتبة Microsoft Authentication Library (MSAL)، مع تسجيل التطبيقات، للمصادقة والوصول بسلاسة إلى موارد Azure السحابية.

إشعار

يمكنك استخدام Service Connector لمساعدتك في تكوين بعض الخطوات تلقائيا. لمزيد من المعلومات، راجع ما هو موصل الخدمة؟

المتطلبات

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

القيود

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

مكتبات عميل الهوية 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

عينات من رموز مكتبة عميل Azure Identity

تستخدم عينات الشيفرة التالية .DefaultAzureCredential يستخدم هذا النوع من الاعتمادات متغيرات البيئة التي يتم ضخنها بواسطة webhook الذي يتحول هوية عبء العمل للمصادقة باستخدام Azure Key Vault. لرؤية العينات باستخدام أحد الأساليب الأخرى، راجع مكتبات العملاء الخاصة بالنظام البيئي.

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

string keyVaultUrl = Environment.GetEnvironmentVariable("<key-vault-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 ل dotnet ghcr.io/azure/azure-workload-identity/msal-net:latest الارتباط ‏‏نعم‬
انتقال مكتبة مصادقة Microsoft للاستخدام ghcr.io/azure/azure-workload-identity/msal-go:latest الارتباط ‏‏نعم‬
Java مكتبة مصادقة Microsoft لجافا ghcr.io/azure/azure-workload-identity/msal-java:latest الارتباط لا
JavaScript مكتبة مصادقة Microsoft ل js ghcr.io/azure/azure-workload-identity/msal-node:latest الارتباط لا
Python مكتبة مصادقة Microsoft ل python ghcr.io/azure/azure-workload-identity/msal-python:latest الارتباط لا

طريقة العمل

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

مخطط لنموذج أمان معرف عبء العمل في مايكروسوفت إنترا في AKS.

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

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

يلخص المخطط التالي تسلسل المصادقة باستخدام OIDC:

مخطط تسلسل مصادقة OIDC لمعرف Microsoft Entra Workload الخاص ب AKS.

تدوير تلقائي لشهادة Webhook

مماثل لإضافات webhook الأخرى، تقوم عملية التدوير التلقائي لشهادة العنقود بتدوير الشهادة.

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

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

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

إشعار

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

إذا كنت قد استخدمت هوية Microsoft Entra pod المدارة، ففكر في حساب الخدمة باعتباره أساس أمان 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.

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

إشعار

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

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

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

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

تعليق توضيحي ‏‏الوصف الإعداد الافتراضي
azure.workload.identity/service-account-token-expiration راجع تعليقات حسابات الخدمة لمزيد من التفاصيل. تعليقات البودات لها الأولوية على تعليقات حسابات الخدمة. 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

Migrationrate إلى Microsoft Entra Workload ID

يمكنك تكوين المجموعات التي تعمل بالفعل بهوية مدارة بواسطة البودي لاستخدام معرف Microsoft Entra Workload باستخدام إحدى طريقتين:

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

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

يلخص الجدول التالي توصياتنا بالترحيل أو النشر لمجموعة AKS الخاصة بك:

السيناريو ‏‏الوصف
يقوم نشر نظام المجموعة الجديد أو الحالي بتشغيل إصدار مدعوم من مكتبة عميل Azure Identity لا توجد خطوات ترحيل مطلوبة.
موارد نشر نموذجية: نشر وتكوين معرف Microsoft Entra Workload ID على عنقود جديد
يعمل نشر نظام المجموعة الجديد أو الحالي على تشغيل إصدار غير مدعوم من مكتبة عميل Azure Identity قم بتحديث صورة الحاوية لاستخدام إصدار مدعوم من Azure Identity SDK، أو استخدم جانب الترحيل.

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