إنشاء موفر الاتصال OpenID على خدمة Azure Kubernetes (AKS)

يوسع OpenID الاتصال (OIDC) بروتوكول التخويل OAuth 2.0 للاستخدام كبروتوكول مصادقة آخر صادر عن معرف Microsoft Entra. يمكنك استخدام OIDC لتمكين تسجيل الدخول الأحادي (SSO) بين التطبيقات التي تدعم OAuth على نظام مجموعة Azure Kubernetes Service (AKS) باستخدام رمز أمان يسمى رمز مميز للمعرف. باستخدام نظام مجموعة AKS، يمكنك تمكين مصدر الاتصال OpenID (OIDC)، الذي يسمح لمعرف Microsoft Entra، أو النظام الأساسي لإدارة الهوية والوصول لموفر السحابة الآخر، باكتشاف مفاتيح التوقيع العامة لخادم API.

تقوم AKS بتدوير المفتاح تلقائيا ودوريا. إذا كنت لا تريد الانتظار، يمكنك تدوير المفتاح يدويا وعلى الفور. الحد الأقصى لعمر الرمز المميز الصادر عن موفر OIDC هو يوم واحد.

تحذير

يؤدي تمكين مصدر OIDC على نظام مجموعة موجود إلى تغيير مصدر الرمز المميز لحساب الخدمة الحالي إلى قيمة جديدة، ما قد يتسبب في تعطل الوقت أثناء إعادة تشغيل خادم API. إذا ظلت pods الخاصة بالتطبيق باستخدام رمز الخدمة المميز في حالة فشل بعد تمكين مصدر OIDC، نوصيك بإعادة تشغيل pods يدويا.

في هذه المقالة، ستتعلم كيفية إنشاء مصدر OIDC وتحديثه وإدارته لنظام المجموعة.

هام

بعد تمكين مصدر OIDC على نظام المجموعة، لا يتم دعم تعطيله.

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

المتطلبات الأساسية

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

إنشاء نظام مجموعة AKS مع مصدر OIDC

يمكنك إنشاء نظام مجموعة AKS باستخدام الأمر az aks create مع المعلمة --enable-oidc-issuer لتمكين مصدر OIDC. ينشئ المثال التالي مجموعة تسمى myAKSCluster مع عقدة واحدة في myResourceGroup:

az aks create \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --node-count 1 \
    --enable-oidc-issuer \
    --generate-ssh-keys

تحديث نظام مجموعة AKS مع مصدر OIDC

يمكنك تحديث نظام مجموعة AKS باستخدام الأمر az aks update مع المعلمة --enable-oidc-issuer لتمكين مصدر OIDC. يحدث المثال التالي مجموعة تسمى myAKSCluster:

az aks update --resource-group myResourceGroup --name myAKSCluster --enable-oidc-issuer 

إظهار عنوان URL لمصدر OIDC

للحصول على عنوان URL لمصدر OIDC، قم بتشغيل الأمر az aks show . استبدل القيم الافتراضية لاسم نظام المجموعة واسم مجموعة الموارد.

az aks show --name myAKScluster --resource-group myResourceGroup --query "oidcIssuerProfile.issuerUrl" -o tsv

بشكل افتراضي، يتم تعيين المصدر لاستخدام عنوان URL https://{region}.oic.prod-aks.azure.comالأساسي ، حيث تطابق قيمة الموقع {region} الذي يتم نشر نظام مجموعة AKS فيه.

تدوير مفتاح OIDC

لتدوير مفتاح OIDC، قم بتشغيل الأمر az aks oidc-issuer . استبدل القيم الافتراضية لاسم نظام المجموعة واسم مجموعة الموارد.

az aks oidc-issuer rotate-signing-keys --name myAKSCluster --resource-group myResourceGroup

هام

بمجرد تدوير المفتاح، تنتهي صلاحية المفتاح القديم (key1) بعد 24 ساعة. كل من المفتاح القديم (key1) والمفتاح الجديد (key2) صالحان خلال فترة ال 24 ساعة بعد التدوير. إذا كنت تريد إبطال المفتاح القديم (key1) على الفور، يجب تدوير المفتاح OIDC مرتين وإعادة تشغيل pods باستخدام الرموز المميزة لحساب الخدمة المتوقعة. باستخدام هذه العملية، يكون المفتاح 2 والمفتاح 3 صالحين، والمفتاح1 غير صالح.

تحقق من مفاتيح OIDC

الحصول على عنوان URL لمصدر OIDC

للحصول على عنوان URL لمصدر OIDC، قم بتشغيل الأمر az aks show . استبدل القيم الافتراضية لاسم نظام المجموعة واسم مجموعة الموارد.

az aks show --name myAKScluster --resource-group myResourceGroup --query "oidcIssuerProfile.issuerUrl" -o tsv

يجب أن يكون الإخراج مشابهًا لما يلي:

https://eastus.oic.prod-aks.azure.com/00000000-0000-0000-0000-000000000000/11111111-1111-1111-1111-111111111111/

بشكل افتراضي، يتم تعيين المصدر لاستخدام عنوان URL https://{region}.oic.prod-aks.azure.com/{tenant_id}/{uuid}الأساسي ، حيث تطابق قيمة الموقع {region} الذي يتم نشر نظام مجموعة AKS فيه. تمثل القيمة {uuid} مفتاح OIDC، وهو المعرف الفريد العمومي الذي تم إنشاؤه عشوائيا لكل نظام مجموعة غير قابل للتغيير.

الحصول على مستند الاكتشاف

للحصول على مستند الاكتشاف، انسخ عنوان URL https://(OIDC issuer URL).well-known/openid-configuration وافتحه في المستعرض.

يجب أن يكون الإخراج مشابهًا لما يلي:

{
  "issuer": "https://eastus.oic.prod-aks.azure.com/00000000-0000-0000-0000-000000000000/00000000-0000-0000-0000-000000000000/",
  "jwks_uri": "https://eastus.oic.prod-aks.azure.com/00000000-0000-0000-0000-000000000000/00000000-0000-0000-0000-000000000000/openid/v1/jwks",
  "response_types_supported": [
    "id_token"
  ],
  "subject_types_supported": [
    "public"
  ],
  "id_token_signing_alg_values_supported": [
    "RS256"
  ]
}

الحصول على مستند مجموعة JWK

للحصول على مستند JWK Set، انسخ jwks_uri من مستند الاكتشاف والصقه في شريط عناوين المستعرض.

يجب أن يكون الإخراج مشابهًا لما يلي:

{
  "keys": [
    {
      "use": "sig",
      "kty": "RSA",
      "kid": "xxx",
      "alg": "RS256",
      "n": "xxxx",
      "e": "AQAB"
    },
    {
      "use": "sig",
      "kty": "RSA",
      "kid": "xxx",
      "alg": "RS256",
      "n": "xxxx",
      "e": "AQAB"
    }
  ]
}

أثناء تدوير المفتاح، يوجد مفتاح آخر موجود في مستند الاكتشاف.

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

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