استخدام هوية Azure AD مع خدمة ويب التعلم الآلي في Azure Kubernetes Service
في هذه الكيفية ، ستتعرف على كيفية تعيين هوية Azure Active Directory (Azure AD) إلى نموذج التعلم الآلي المنشور في Azure Kubernetes Service. يسمح مشروع Azure AD Pod Identity للتطبيقات بالوصول إلى الموارد السحابية بأمان باستخدام Azure AD باستخدام الهوية المدارة و Kubernetes primitives. يسمح ذلك لخدمة الويب الخاصة بك بالوصول بأمان إلى موارد Azure الخاصة بك دون الحاجة إلى تضمين بيانات الاعتماد أو إدارة الرموز المميزة مباشرة داخل البرنامج النصي الخاص بك score.py . توضح هذه المقالة خطوات إنشاء Azure Identity وتثبيته في مجموعة خدمة Azure Kubernetes وتعيين الهوية لخدمة الويب التي تم نشرها.
المتطلبات الأساسية
ملحق Azure CLI لخدمة التعلم الآلي أو Azure التعلم الآلي SDK ل Python أو ملحق Azure التعلم الآلي Visual Studio Code.
الوصول إلى مجموعة AKS الخاصة بك باستخدام الأمر
kubectl. لمزيد من المعلومات، راجع الاتصال إلى المجموعةخدمة ويب Azure التعلم الآلي تم نشرها على مجموعة AKS الخاصة بك.
إنشاء هوية Azure وتثبيتها
لتحديد ما إذا كان نظام مجموعة AKS الخاص بك ممكنا ل Kubernetes RBAC أم لا، استخدم الأمر التالي:
az aks show --name <AKS cluster name> --resource-group <resource group name> --subscription <subscription id> --query enableRbacيرجع هذا الأمر قيمة
trueإذا تم تمكين Kubernetes RBAC. تحدد هذه القيمة الأمر المطلوب استخدامه في الخطوة التالية.قم بتثبيت Azure AD Pod Identity في مجموعة AKS الخاصة بك.
قم بإنشاء هوية على Azure باتباع الخطوات الموضحة في صفحة مشروع Azure AD Pod Identity.
نشر AzureIdentity باتباع الخطوات الموضحة في صفحة مشروع Azure AD Pod Identity.
نشر AzureIdentityBinding باتباع الخطوات الموضحة في صفحة مشروع Azure AD Pod Identity.
إذا لم تكن هوية Azure التي تم إنشاؤها في الخطوة السابقة في نفس مجموعة موارد العقدة لمجموعة AKS الخاصة بك، فاتبع خطوات تعيين الدور الموضحة في صفحة مشروع Azure AD Pod Identity.
تعيين هوية Azure لخدمة الويب
تستخدم الخطوات التالية هوية Azure التي تم إنشاؤها في القسم السابق، وتعينها إلى خدمة ويب AKS من خلال تسمية محدد.
أولا، حدد اسم ومساحة اسم النشر الخاص بك في مجموعة AKS التي تريد تعيينها لهوية Azure. يمكنك الحصول على هذه المعلومات عن طريق تشغيل الأمر التالي. يجب أن تكون مساحات الأسماء هي اسم مساحة عمل Azure التعلم الآلي ويجب أن يكون اسم النشر الخاص بك هو اسم نقطة النهاية كما هو موضح في البوابة الإلكترونية.
kubectl get deployment --selector=isazuremlapp=true --all-namespaces --show-labels
أضف تسمية محدد هوية Azure إلى النشر الخاص بك عن طريق تحرير مواصفات النشر. يجب أن تكون قيمة المحدد هي القيمة التي قمت بتعريفها في الخطوة 5 من نشر AzureIdentityBinding.
apiVersion: "aadpodidentity.k8s.io/v1"
kind: AzureIdentityBinding
metadata:
name: demo1-azure-identity-binding
spec:
AzureIdentity: <a-idname>
Selector: <label value to match>
قم بتحرير النشر لإضافة تسمية محدد هوية Azure. انتقل إلى القسم التالي ضمن /spec/template/metadata/labels. يجب أن ترى قيما مثل isazuremlapp: “true”. أضف تسمية aad-pod-identity كما هو موضح أدناه.
kubectl edit deployment/<name of deployment> -n azureml-<name of workspace>
spec:
template:
metadata:
labels:
aadpodidbinding: "<value of Selector in AzureIdentityBinding>"
...
للتحقق من إضافة التسمية بشكل صحيح، قم بتشغيل الأمر التالي. يجب أن ترى أيضا حالات القرون التي تم إنشاؤها حديثا.
kubectl get pod -n azureml-<name of workspace> --show-labels
بمجرد تشغيل القرون وتشغيلها، ستتمكن خدمات الويب الخاصة بهذا النشر الآن من الوصول إلى موارد Azure من خلال هوية Azure الخاصة بك دون الحاجة إلى تضمين بيانات الاعتماد في التعليمات البرمجية الخاصة بك.
تعيين أدوار لهوية Azure الخاصة بك
قم بتعيين هوية Azure المدارة الخاصة بك مع الأدوار المناسبة للوصول إلى موارد Azure الأخرى. تأكد من أن الأدوار التي تقوم بتعيينها تحتوي على إجراءات البيانات الصحيحة. على سبيل المثال، سيكون لدور قارئ بيانات نقطة التخزين أذونات قراءة ل Storage Blob بينما قد لا يكون لدور القارئ العام.
استخدام Azure Identity مع خدمة الويب الخاصة بك
نشر نموذج إلى مجموعة AKS الخاصة بك. score.py يمكن أن يحتوي البرنامج النصي على عمليات تشير إلى موارد Azure التي يمكن ل Azure Identity الوصول إليها. تأكد من تثبيت تبعيات مكتبة العميل المطلوبة للمورد الذي تحاول الوصول إليه. فيما يلي مثالان على كيفية استخدام Azure Identity للوصول إلى موارد Azure المختلفة من خدمتك.
الوصول إلى Key Vault من خدمة الويب الخاصة بك
إذا كنت قد منحت Azure Identity حق الوصول للقراءة إلى سر داخل Key Vault، score.py فيمكنك الوصول إليه باستخدام التعليمة البرمجية التالية.
from azure.identity import DefaultAzureCredential
from azure.keyvault.secrets import SecretClient
my_vault_name = "yourkeyvaultname"
my_vault_url = "https://{}.vault.azure.net/".format(my_vault_name)
my_secret_name = "sample-secret"
# This will use your Azure Managed Identity
credential = DefaultAzureCredential()
secret_client = SecretClient(
vault_url=my_vault_url,
credential=credential)
secret = secret_client.get_secret(my_secret_name)
هام
يستخدم هذا المثال DefaultAzureCredential. لمنح حق الوصول إلى هويتك باستخدام نهج وصول معين، راجع تعيين نهج وصول Key Vault باستخدام Azure CLI.
الوصول إلى Blob من خدمة الويب الخاصة بك
إذا كنت قد منحت Azure Identity حق الوصول للقراءة إلى البيانات داخل نقطة التخزين، score.py فيمكنك الوصول إليها باستخدام التعليمة البرمجية التالية.
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient
my_storage_account_name = "yourstorageaccountname"
my_storage_account_url = "https://{}.blob.core.windows.net/".format(my_storage_account_name)
# This will use your Azure Managed Identity
credential = DefaultAzureCredential()
blob_service_client = BlobServiceClient(
account_url=my_storage_account_url,
credential=credential
)
blob_client = blob_service_client.get_blob_client(container="some-container", blob="some_text.txt")
blob_data = blob_client.download_blob()
blob_data.readall()
الخطوات التالية
- لمزيد من المعلومات حول كيفية استخدام مكتبة عميل Python Azure Identity، راجع المستودع على GitHub.
- للحصول على دليل مفصل حول نشر النماذج إلى مجموعات خدمة Azure Kubernetes، راجع كيفية القيام بذلك.