دمج معرف Microsoft Entra مع خدمة Azure Kubernetes (AKS) باستخدام Azure CLI (قديم)

تحذير

تم إهمال الميزة الموضحة في هذا المستند، Microsoft Entra Integration (قديم) في 1 يونيو 2023. في هذا الوقت، لا يمكن إنشاء مجموعات جديدة باستخدام تكامل Microsoft Entra (قديم).

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

يمكن تكوين خدمة Azure Kubernetes (AKS) لاستخدام معرف Microsoft Entra لمصادقة المستخدم. في هذا التكوين، يمكنك تسجيل الدخول إلى نظام مجموعة AKS باستخدام رمز مصادقة Microsoft Entra المميز. يمكن أيضًا تكوين مشغلي الكتلة Kubernetes التحكم في الوصول المستند إلى الدور (Kubernetes RBAC) استنادًا إلى هوية المستخدم أو عضوية مجموعة الدليل.

توضح لك هذه المقالة كيفية إنشاء مكونات Microsoft Entra المطلوبة، ثم نشر نظام مجموعة Microsoft Entra ID ممكن وإنشاء دور Kubernetes أساسي في نظام مجموعة AKS.

القيود

  • يمكن تمكين معرف Microsoft Entra فقط على نظام المجموعة الذي يدعم Kubernetes RBAC.
  • يمكن تمكين تكامل Microsoft Entra القديم فقط أثناء إنشاء نظام المجموعة.

قبل البدء

تحتاج إلى الإصدار 2.0.61 من Azure CLI أو تثبيتها وتكوينها لاحقًا. قم بتشغيل az --version للعثور على الإصدار. إذا كنت بحاجة إلى التثبيت أو الترقية، فراجع تثبيت Azure CLI.

انتقل إلى https://shell.azure.comلفتح Cloud Shell في متصفحك.

للحصول على التناسق وللمساعدة في تشغيل الأوامر في هذه المقالة قم بإنشاء متغير لاسم الكتلة AKS المطلوب. يستخدم المثال التالي اسم myakscluster:

aksname="myakscluster"

نظرة عامة على مصادقة Microsoft Entra

يتم توفير مصادقة Microsoft Entra لمجموعات AKS مع OpenID Connect. OpenID Connect عبارة عن طبقة هوية مبنية على أعلى بروتوكول OAuth 2.0. لمزيد من المعلومات حول OpenID Connect، راجع وثائق OpenID Connect.

من داخل مجموعة Kubernetes، تُستخدم مصادقة Webhook Token للتحقق من رموز المصادقة. يتم تكوين مصادقة Webhook token وإدارتها كجزء من مجموعة AKS. لمزيد من المعلومات حول مصادقة الرمز المميز Webhook، راجع توثيق مصادقة webhook.

إشعار

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

إنشاء مكون خادم Microsoft Entra

للتكامل مع AKS، يمكنك إنشاء واستخدام تطبيق Microsoft Entra الذي يعمل كنقطة نهاية لطلبات الهوية. يحصل تطبيق Microsoft Entra الأول الذي تحتاجه على عضوية مجموعة Microsoft Entra للمستخدم.

إنشاء مكون تطبيق الخادم باستخدام الأمر az ad app create ثم تحديث مطالبات عضوية المجموعة باستخدام الأمر az ad app update يستخدم المثال التالي aksname المتغير المعرف في الـقبل أن تبدأ المقطع وإنشاء متغير

# Create the Azure AD application
serverApplicationId=$(az ad app create \
    --display-name "${aksname}Server" \
    --identifier-uris "https://${aksname}Server" \
    --query appId -o tsv)

# Update the application group membership claims
az ad app update --id $serverApplicationId --set groupMembershipClaims=All

الآن إنشاء خدمة رئيسية لتطبيق الخادم باستخدام az ad sp إنشاء الأمر. يتم استخدام أساس الخدمة هذا لمصادقة نفسه داخل منصة Azure. ثم الحصول على سرية الخدمة الأساسية باستخدام الأمر az ad sp إعادة تعيين بيانات الاعتماد وتعيين إلى المسمي المتغيرserverApplicationSecret للاستخدام في إحدى الخطوات التالية:

# Create a service principal for the Azure AD application
az ad sp create --id $serverApplicationId

# Get the service principal secret
serverApplicationSecret=$(az ad sp credential reset \
    --name $serverApplicationId \
    --credential-description "AKSPassword" \
    --query password -o tsv)

يحتاج كيان خدمة Microsoft Entra إلى أذونات لتنفيذ الإجراءات التالية:

  • بيانات دليل القراءة
  • تسجيل الدخول وقراءة ملف تعريف المستخدم

تعيين هذه الأذونات باستخدام الأمر إضافة إذن az ad app:

az ad app permission add \
    --id $serverApplicationId \
    --api 00000003-0000-0000-c000-000000000000 \
    --api-permissions e1fe6dd8-ba31-4d61-89e7-88639da4683d=Scope 06da0dbc-49e2-44d2-8312-53f166ab848a=Scope 7ab1d382-f21e-4acd-a863-ba3e13f7da61=Role

وأخيرًا، منح الأذونات المعينة في الخطوة السابقة لتطبيق الخادم باستخدام الأمر منح إذن التطبيق az الإعلاني. تفشل هذه الخطوة إذا لم يكن الحساب الحالي مسؤولا مستأجرا. تحتاج أيضا إلى إضافة أذونات لتطبيق Microsoft Entra لطلب معلومات قد تتطلب موافقة إدارية باستخدام موافقة المسؤول على إذن تطبيق az ad:

az ad app permission grant --id $serverApplicationId --api 00000003-0000-0000-c000-000000000000
az ad app permission admin-consent --id  $serverApplicationId

إنشاء مكون عميل Microsoft Entra

يتم استخدام تطبيق Microsoft Entra الثاني عندما يقوم مستخدم بتسجيل الدخول إلى نظام مجموعة AKS باستخدام Kubernetes CLI (kubectl). يأخذ تطبيق العميل هذا طلب المصادقة من المستخدم ويتحقق من بيانات الاعتماد والأذونات الخاصة به. إنشاء تطبيق Microsoft Entra لمكون العميل باستخدام الأمر az ad app create :

clientApplicationId=$(az ad app create \
    --display-name "${aksname}Client" \
    --native-app \
    --reply-urls "https://${aksname}Client" \
    --query appId -o tsv)

الآن إنشاء خدمة رئيسية لتطبيق الخادم باستخدام az ad sp إنشاء الأمر.

az ad sp create --id $clientApplicationId

احصل على معرف oAuth2 لتطبيق الخادم للسماح بتدفق المصادقة بين مكوني التطبيق باستخدام أمر عرض تطبيق az ad يتم استخدام معرف oAuth2 هذا في الخطوة التالية.

oAuthPermissionId=$(az ad app show --id $serverApplicationId --query "oauth2Permissions[0].id" -o tsv)

إضافة أذونات إلي تطبيق العميل ومكونات تطبيق الخادم لاستخدام تدفق الاتصالات oAuth2 باستخدام az إعلان التطبيق إذن إضافة الأمر. ثم منح أذونات لتطبيق العميل للاتصال مع تطبيق الخادم باستخدام az adالتطبيق إذن منح الأمر:

az ad app permission add --id $clientApplicationId --api $serverApplicationId --api-permissions ${oAuthPermissionId}=Scope
az ad app permission grant --id $clientApplicationId --api $serverApplicationId

توزيع نظام المجموعة

مع إنشاء تطبيقي Microsoft Entra، قم الآن بإنشاء نظام مجموعة AKS نفسه. أنشئ مجموعة موارد مستخدمًا الأمر az group create. يُنشئ المثال التالي مجموعة موارد في منطقة شرق الولايات المتحدة.

إنشاء مجموعة موارد للكتلة:

az group create --name myResourceGroup --location EastUS

الحصول على معرف اشتراكك باستخدام يوضح حساب az⁩ الأوامر. استخدم الأمر az aks create لإنشاء مجموعة AKS. يوفر الأمر لإنشاء نظام المجموعة AKS معرفات تطبيق الخادم والعميل، سرية خدمة تطبيق الخادم الأساسي، ومعرف المستأجر الخاص بك:

tenantId=$(az account show --query tenantId -o tsv)

az aks create \
    --resource-group myResourceGroup \
    --name $aksname \
    --node-count 1 \
    --generate-ssh-keys \
    --aad-server-app-id $serverApplicationId \
    --aad-server-app-secret $serverApplicationSecret \
    --aad-client-app-id $clientApplicationId \
    --aad-tenant-id $tenantId

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

az aks get-credentials --resource-group myResourceGroup --name $aksname --admin

إنشاء الربط RBAC

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

الحصول على اسم المستخدم الأساسي (UPN) للمستخدم الذي قام بتسجيل الدخول حاليًّا باستخدام الأمر az الإعلاني تسجيل الدخول إلى المستخدم إظهار. تم تمكين حساب المستخدم هذا لتكامل Microsoft Entra في الخطوة التالية.

az ad signed-in-user show --query userPrincipalName -o tsv

هام

إذا كان المستخدم الذي تمنح ربط Kubernetes RBAC له في نفس مستأجر Microsoft Entra، فعين الأذونات استنادا إلى userPrincipalName. إذا كان المستخدم في مستأجر Microsoft Entra مختلف، استعلم عن خاصية objectId واستخدمها بدلا من ذلك.

قم بإنشاء الملف المسمي basic-azure-ad-binding.yaml وألصق المحتويات التالية: في الخط الأخير، استبدل userPrincipalName_or_objectId مع UPN أو إخراج معرف العنصر من الأمر السابق:

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: contoso-cluster-admins
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- apiGroup: rbac.authorization.k8s.io
  kind: User
  name: userPrincipalName_or_objectId

انشر the pod باستخدام الأمرتطبيق kubectl قم بإصدار وتحديد اسم ملف بياناتك من YAML:

kubectl apply -f basic-azure-ad-binding.yaml

الوصول إلى نظام المجموعة باستخدام معرف Microsoft Entra

الآن دعونا نختبر تكامل مصادقة Microsoft Entra لنظام مجموعة AKS. تعيين kubectl سياق التكوين لاستخدام بيانات اعتماد المستخدم العادية. يمرر هذا السياق جميع طلبات المصادقة مرة أخرى عبر معرف Microsoft Entra.

az aks get-credentials --resource-group myResourceGroup --name $aksname --overwrite-existing

الآن استخدام kubectl للحصول على القرون الأمر لعرض القرون عبر جميع مساحات الأسماء:

kubectl get pods --all-namespaces

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

kubectl get pods --all-namespaces
To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code BYMK7UXVD to authenticate.

NAMESPACE     NAME                                    READY   STATUS    RESTARTS   AGE
kube-system   coredns-754f947b4-2v75r                 1/1     Running   0          23h
kube-system   coredns-754f947b4-tghwh                 1/1     Running   0          23h
kube-system   coredns-autoscaler-6fcdb7d64-4wkvp      1/1     Running   0          23h
kube-system   heapster-5fb7488d97-t5wzk               2/2     Running   0          23h
kube-system   kube-proxy-2nd5m                        1/1     Running   0          23h
kube-system   kube-svc-redirect-swp9r                 2/2     Running   0          23h
kube-system   kubernetes-dashboard-847bb4ddc6-trt7m   1/1     Running   0          23h
kube-system   metrics-server-7b97f9cd9-btxzz          1/1     Running   0          23h
kube-system   tunnelfront-6ff887cffb-xkfmq            1/1     Running   0          23h

تم تخزين رمز المصادقة الذي تم kubectl استلامه مؤقتًا. يتم إعادة تحديد تسجيل الدخول فقط عند انتهاء صلاحية الرمز المميز أو إعادة إنشاء ملف تكوين Kubernetes.

إذا رأيت رسالة خطأ تخويل بعد تسجيل الدخول بنجاح باستخدام مستعرض ويب كما في إخراج المثال التالي، فتحقق من المشكلات المحتملة التالية:

error: You must be logged in to the server (Unauthorized)
  • لقد قمت بتعريف معرف الكائن المناسب أو UPN، اعتمادا على ما إذا كان حساب المستخدم في نفس مستأجر Microsoft Entra أم لا.
  • المستخدم ليس عضوًا في أكثر من 200 مجموعة.
  • السرية المعرفة في تسجيل التطبيق لخادم يطابق القيمة التي تم تكوينها باستخدام --aad-server-app-secret
  • تأكد من تثبيت إصدار واحد فقط من Kubectl على جهازك في كل مرة. يمكن أن تسبب الإصدارات المتعارضة مشاكل أثناء التخويل. لتثبيت أحدث إصدار، راجع تثبيت Azure CLI.

الأسئلة المتداولة حول الترحيل من تكامل Microsoft Entra إلى معرف Microsoft Entra المدار بواسطة AKS

1. ما هي خطة الترحيل؟

سيتم إهمال تكامل Microsoft Entra (القديم) في 1 يونيو 2023. بعد هذا التاريخ، لن تتمكن من إنشاء مجموعات جديدة باستخدام معرف Microsoft Entra (قديم). سنقوم بترحيل جميع مجموعات AKS لتكامل Microsoft Entra (القديم) إلى معرف Microsoft Entra المدار بواسطة AKS تلقائيا بدءا من 1 أغسطس 2023. نرسل رسائل البريد الإلكتروني للإعلام إلى مسؤولي الاشتراك المتأثرين كل أسبوع لتذكيرهم بالترحيل.

2. ماذا سيحدث إذا لم أتخذ أي إجراء؟

ستستمر مجموعات AKS الخاصة بك في تكامل Microsoft Entra (القديم) في العمل بعد 1 يونيو 2023. سنقوم تلقائيا بترحيل مجموعاتك إلى معرف Microsoft Entra المدار بواسطة AKS بدءا من 1 أغسطس 2023. قد تواجه وقت تعطل خادم API أثناء الترحيل.

يتغير محتوى kubeconfig بعد الترحيل. تحتاج إلى دمج بيانات الاعتماد الجديدة في ملف kubeconfig باستخدام az aks get-credentials --resource-group <AKS resource group name> --name <AKS cluster name>.

نوصي بتحديث نظام مجموعة AKS إلى معرف Microsoft Entra المدار بواسطة AKS يدويا قبل 1 أغسطس. بهذه الطريقة يمكنك إدارة وقت التعطل أثناء ساعات العمل عندما يكون أكثر ملاءمة.

3. لماذا ما زلت أتلقى رسالة الإعلام الإلكترونية بعد الترحيل اليدوي؟

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

4. كيف يمكنني التحقق مما إذا كان نظام مجموعتي قد تم ترحيله إلى معرف Microsoft Entra المدار بواسطة AKS؟

تأكد من ترحيل نظام مجموعة AKS إلى معرف Microsoft Entra المدار بواسطة AKS باستخدام az aks show الأمر .

az aks show -g <RGName> -n <ClusterName>  --query "aadProfile"

إذا كان نظام المجموعة الخاص بك يستخدم معرف Microsoft Entra المدار بواسطة AKS، يظهر managed الإخراج هو true. على سبيل المثال:

    {
      "adminGroupObjectIDs": [
        "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
      ],
      "adminUsers": null,
      "clientAppId": null,
      "enableAzureRbac": null,
      "managed": true,
      "serverAppId": null,
      "serverAppSecret": null,
      "tenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
    }

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

للحصول على البرنامج النصي الكامل الذي يحتوي على الأوامر الموضحة في هذه المقالة، راجع [البرنامج النصي لتكامل Microsoft Entra في مستودع نماذج AKS][complete-script].

لاستخدام مستخدمي Microsoft Entra والمجموعات للتحكم في الوصول إلى موارد نظام المجموعة، راجع التحكم في الوصول إلى موارد نظام المجموعة باستخدام التحكم في الوصول المستند إلى دور Kubernetes وهويات Microsoft Entra في AKS.

لمزيد من المعلومات حول كيفية تأمين مجموعات Kubernetes، راجع الوصول وخيارات الهوية لـ AKS).

للحصول على أفضل الممارسات المتعلقة بالهوية والتحكم في الموارد، راجعأفضل الممارسات للمصادقة والتخويل في AKS.