ar ar ar ar ar ar ar ar ar ar ar ar en ar ar ar ar ar ar ar ar ar fa ar ar ar ar ar ar ar ar ar ar ar ar ar ar ar ar ar ar ar en ar en ar en ar ar ar ar en ar en ar ar en ar ar ar en ar en ar en ar ar en ar en ar en ar en ar en ar en ar ar ar ar en ar en ar en ar zh ar ar en ar ar en ar hu ar zh ar en ar ar ar ar en ar en ar en ar ar en ar ar ar ar en ar en ar en ar ar en ar ar ar ar ar ar ar ar ur ar ar ar ar ar ar ar ar en ar ar ur ar ar ar ar ar ar ar ar en
قم باستخدام⁧⁩الهويات المُدارة لموارد Azure⁧⁩ لتشغيل التعليمات البرمجية في مثيلات حاوية Azure التي تتفاعل مع خدمات Azure الأخرى- دون حفظ أية بيانات سرية، أو بيانات اعتماد في التعليمات البرمجية. توفر الميزة نشر مثيلات حاوية Azure بهوية مُدارة تلقائيًا في Microsoft Azure Active Directory.
في هذه المقالة، من الممكن معرفة المزيد حول الهويات المدارة في مثيلات حاوية Azure و:
تمكين الهوية المعينة من قِبل المستخدم، أو المعينة من قِبل النظام في مجموعة الحاوية
قم بمنح حق الوصول إلى الهوية إلى مخزن Azure الرئيسي
قم باستخدام الهوية المدارة للوصول إلى المخزن الرئيسي من حاوية قيد التشغيل
قم بملاءمة الأمثلة لتمكين واستخدام الهويات في مثيلات حاويات Azure للوصول إلى خدمات Azure الأخرى. وتكون هذه الأمثلة تفاعلية. ومع ذلك، سيتم تشغيل في التدريب العملي التعليمات البرمجية لصور الحاوية للوصول إلى خدمات Azure.
هذه الميزة قيد المعاينة حالياً. يتم توفير المعاينات لك بشرط أن توافق على شروط الاستخدام التكميلية. قد تتغير بعض جوانب هذه الميزة قبل التوفر العام (GA). حاليًا، الهويات المدارة في مثيلات حاوية Azure، والمدعومة فقط مع حاويات Linux، وليس مع حاويات Windows.
لماذا يتم استخدام الهوية المُدارة؟
استخدم هوية مُدارة في حاوية قيد التشغيل للمصادقة على أي خدمة⁧⁩تدعم مصادقة Microsoft Azure Active Directory⁧⁩ دون إدارة بيانات الاعتماد في التعليمات البرمجية للحاوية. بالنسبة للخدمات التي لا تدعم مصادقة AD، من الممكن تخزين البيانات السرية في مخزن Azure الرئيسي، واستخدام الهوية المدارة للوصول إلى المخزن الرئيسي لاسترداد بيانات الاعتماد. للحصول على مزيد من المعلومات حول الهويات المدارة، انظر⁧⁩ما هي الهويات المدارة لموارد Azure؟⁧⁩
عندما يتم إنشاء مجموعة حاويات لتمكين هوية مدارة واحدة أو أكثر من خلال تعيين خاصية⁧⁩ContainerGroupIdentity⁧⁩. من الممكن أيضًا تمكين الهويات المدارة أو تحديثها بعد تشغيل مجموعة الحاوية- يؤدي أي من الإجراءين إلى إعادة تشغيل مجموعة الحاوية. ليتم تعيين الهويات في مجموعة حاويات جديدة أو موجودة، قم باستخدام Azure CLI، أو قالب إدارة الموارد، أو ملف YAML، أو أداة Azure أخرى.
تدعم مثيلات حاوية Azure كلا النوعين من هويات Azure المدارة: تعيين المستخدم، وتعيين النظام. في مجموعة الحاوية، من الممكن تمكين الهوية المعينة من قِبل نظام واحد أو أكثر من الهويات المعينة من قِبل المستخدم، أو كلا النوعين من الهويات. في حال لم تكن على دراية بالهويات المدارة لموارد Azure، فانظر⁧⁩نظرة عامة⁧⁩.
لاستخدام الهوية المدارة، يجب منح الهوية حق الوصول إلى مورد أو أكثر من موارد خدمة Azure (مثل: تطبيق ويب، أو المخزن الرئيسي، أو حساب التخزين) في الاشتراك. استخدام الهوية المدارة في حاوية قيد التشغيل يشبه استخدام هوية في Azure VM. انظر إرشادات VM لاستخدام⁧⁩رمز مميز⁧⁩أ، و⁧⁩Azure PowerShell or Azure CLI⁧⁩، أو⁧⁩Azure SDKs⁧⁩.
يمكنك استخدام Azure Cloud Shell أو Azure CLI محلي.
Azure Cloud Shell مع بيئة Bash. أو قم بتشغيل Cloud Shell هنا.
Azure CLI المحلي، راجع كيفية تثبيت Azure CLI. إذا كنت تعمل على Windows أو macOS، ففكر في تشغيل Azure CLI في حاوية Docker. لمزيد من المعلومات، راجع كيفية تشغيل Azure CLI في حاوية Docker.
قم بتسجيل الدخول إلى CLI Azure باستخدام az login. لإنهاء عملية المصادقة، التزم بالخطوات المعروضة في وحدتك الطرفية. للحصول على خيارات أخرى لتسجيل دخول، راجع تسجيل الدخول باستخدام Azure CLI.
عند استخدام Azure CLI لأول مرة، قم بتثبيت ملحق Azure CLI. لمزيد من المعلومات بشأن الامتدادات، راجع استخدام امتدادات مع Azure CLI.
يُرجى تشغيل إصدار az للوصول إلى الإصدار والمكتبات التابعة التي تم تثبيتها. للتحديث لآخر إصدار، يُرجى تشغيل تحديث az.
تتطلب هذه المقالة الإصدار 2.0.49 أو الأحدث من Azure CLI. إذا كنت تستخدم Azure Cloud Shell، فسيكون لديك مسبقًا أحدث إصدار.
إنشاء مخزن Azure الرئيسي
تستخدم الأمثلة في هذه المقالة الهوية المدارة في مثيلات حاوية Azure للوصول إلى بيانات سرية مخزن Azure الرئيسي.
أولاً، أنشئ مجموعة موارد باسم myResourceGroup في موقع eastus باستخدام الأمر التالي az group create:
az group create --name myResourceGroup --location eastus
استخدم الأمر⁧⁩"az keyvault create"⁧⁩لإنشاء مخزن رئيسي. قم بالتأكد من تحديد اسم المخزن الرئيسي الفريد.
az keyvault create \ --name mykeyvault \ --resource-group myResourceGroup \ --location eastus
تخزين سر العينة في المخزن الرئيسي باستخدام الأمر⁧⁩"مجموعة البيانات السرية az keyvault"⁧⁩:
az keyvault secret set \ --name SampleSecret \ --value "Hello Container Instances" \ --description ACIsecret --vault-name mykeyvault
استمر مع الأمثلة التالية للوصول إلى المخزن الرئيسي باستخدام الهوية المدارة المعينة من قِبل المستخدم، أو النظام المعين في مثيلات حاويات Azure.
المثال 1: قم باستخدام الهوية معينة من قِبل المستخدم للوصول إلى مخزن Azure الرئيسي
أولاً قم بإنشاء هوية في اشتراكك باستخدام الأمر⁧⁩"إنشاء هوية من الألف إلى الياء"⁧⁩. من الممكن استخدام نفس مجموعة الموارد المستخدمة لإنشاء مخزن رئيسي، أو استخدام مجموعة أخرى.
az identity create \ --resource-group myResourceGroup \ --name myACIId
لاستخدام الهوية في الخطوات التالية، قم باستخدام الأمر⁧⁩"az إظهار الهوية"⁧⁩لتخزين معرف الخدمة الأساسي للهوية، ومعرف المورد في المتغيرات.
# Get service principal ID of the user-assigned identity spID=$(az identity show \ --resource-group myResourceGroup \ --name myACIId \ --query principalId --output tsv) # Get resource ID of the user-assigned identity resourceID=$(az identity show \ --resource-group myResourceGroup \ --name myACIId \ --query id --output tsv)
منح حق الوصول إلى الهوية المعينة من قِبل المستخدم إلى المخزن الرئيسي
قم بتشغيل الأمر التالي⁧⁩ «az keyvault set-policy»⁧⁩؛ لتعيين نهج الوصول على المخزن الرئيسي. يقوم المثال التالي بالسماح للهوية التي تم تعيينها من قِبل المستخدم بالحصول على بيانات سرية من المخزن الرئيسي:
az keyvault set-policy \ --name mykeyvault \ --resource-group myResourceGroup \ --object-id $spID \ --secret-permissions get
قم بتمكين الهوية المعينة من قِبل المستخدم على مجموعة الحاويات
قم بتشغيل الأمر⁧⁩ «إنشاء حاوية az»⁧⁩التالي لإنشاء مثيل حاوية مسند إلى صورة Microsoft⁧azure-cli⁩. يوفر هذا المثال مجموعة حاوية واحدة يمكنك استخدامها بشكل تفاعلي لتشغيل Azure CLI؛ للوصول إلى خدمات Azure الأخرى. في هذا القسم، يُستخدم نظام التشغيل الأساسي فقط. للحصول على مثال لاستخدام Azure CLI في الحاوية، انظر⁧⁩تمكين هوية معينة من قِبل النظام على مجموعة الحاويات⁧⁩.
⁧--assign-identity⁩تقوم المعلمة بتمرير الهوية المدارة المعينة من قِبل المستخدم إلى المجموعة. يحتفظ الأمر طويل الأمد بالحاوية قيد التشغيل. يقوم هذا المثال باستخدام نفس مجموعة الموارد المستخدمة لإنشاء المخزن الرئيسي؛ ولكن يمكنك تحديد مجموعة أخرى.
az container create \ --resource-group myResourceGroup \ --name mycontainer \ --image mcr.microsoft.com/azure-cli \ --assign-identity $resourceID \ --command-line "tail -f /dev/null"
في غضون ثوانٍ قليلة، يجب أن تحصل على استجابة من Azure CLI تشير إلى اكتمال النشر. قم بفحص الحالة باستخدام الأمر⁧⁩"az container "show⁧⁩.
az container show \ --resource-group myResourceGroup \ --name mycontainer
يبدو قسم⁧identity⁩في الإخراج مشابهًا للتالي؛ حيث يوضح أنه تم تعيين الهوية في مجموعة الحاوية. ⁧principalID⁩تحت⁧userAssignedIdentities⁩هو كيان الخدمة من الهوية التي أنشأتها في Microsoft Azure Active Directory:
[...] "identity": { "principalId": "null", "tenantId": "xxxxxxxx-f292-4e60-9122-xxxxxxxxxxxx", "type": "UserAssigned", "userAssignedIdentities": { "/subscriptions/xxxxxxxx-0903-4b79-a55a-xxxxxxxxxxxx/resourcegroups/danlep1018/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myACIId": { "clientId": "xxxxxxxx-5523-45fc-9f49-xxxxxxxxxxxx", "principalId": "xxxxxxxx-f25b-4895-b828-xxxxxxxxxxxx" } } }, [...]
قم باستخدام الهوية التي يعينها المستخدم للبيانات السرية من المخزن الرئيسي
يمكنك الآن استخدام الهوية المدارة داخل مثيل الحاوية قيد التشغيل للوصول إلى المخزن الرئيسي. إطلاق أول bash shell في الحاوية:
az container exec \ --resource-group myResourceGroup \ --name mycontainer \ --exec-command "/bin/bash"
قم بتشغيل الأوامر التالية في bash shell في الحاوية. للحصول على رمز مميز للوصول لاستخدام Microsoft Azure Active Directory للمصادقة على المخزن الرئيسي، قم بتشغيل الأمر التالي:
client_id="xxxxxxxx-5523-45fc-9f49-xxxxxxxxxxxx" curl "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fvault.azure.net&client_id=$client_id" -H Metadata:true -s
لتخزين رمز الوصول المميز في المتغير لاستخدامه في الأوامر اللاحقة للمصادقة، قم بتشغيل الأمر الآتي:
token=$(curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fvault.azure.net' -H Metadata:true | jq -r '.access_token')
استخدم الآن رمز الوصول المميز؛ للمصادقة على المخزن الرئيسي، وقراءة البيانات السرية. تأكد من استبدال اسم مخزن مفاتيحك في عنوان URL (https://mykeyvault.vault.azure.net/...):
curl https://mykeyvault.vault.azure.net/secrets/SampleSecret/?api-version=2016-10-01 -H "Authorization: Bearer $token"
يبدو الرد مشابهًا للتالي، مع إظهار البيانات السرية. في التعليمات البرمجية الخاصة بك، من الممكن تحليل هذا الإخراج للحصول على البيانات السرية. بعد ذلك قم باستخدام البيانات السرية في عملية لاحقة للوصول إلى مورد Azure آخر.
المثال 2: قم باستخدام الهوية المعينة من قِبل النظام؛ للوصول إلى مخزن Azure الرئيسي
قم بتمكين الهوية المعينة من قِبل النظام في مجموعة حاويات
قم بتشغيل الأمر⁧⁩ «إنشاء حاوية az»⁧⁩التالي لإنشاء مثيل حاوية مسند إلى صورة Microsoft⁧azure-cli⁩. يوفر هذا المثال مجموعة حاوية واحدة يمكنك استخدامها بشكل تفاعلي لتشغيل Azure CLI؛ للوصول إلى خدمات Azure الأخرى.
⁧--assign-identity⁩تقوم المعلمة بدون قيمة إضافية بتمكين الهوية المُدارة المعينة من قِبل النظام على المجموعة. تُحدد نطاق هوية مجموعة الموارد لمجموعة الحاوية. يحتفظ الأمر طويل الأمد بالحاوية قيد التشغيل. يستخدم هذا المثال نفس مجموعة الموارد المستخدمة لإنشاء مخزن رئيسي، الذي يقع في نطاق الهوية.
# Get the resource ID of the resource group rgID=$(az group show --name myResourceGroup --query id --output tsv) # Create container group with system-managed identity az container create \ --resource-group myResourceGroup \ --name mycontainer \ --image mcr.microsoft.com/azure-cli \ --assign-identity --scope $rgID \ --command-line "tail -f /dev/null"
في غضون ثوانٍ قليلة، يجب أن تحصل على استجابة من Azure CLI تشير إلى اكتمال النشر. قم بفحص الحالة باستخدام الأمر⁧⁩"az container "show⁧⁩.
az container show \ --resource-group myResourceGroup \ --name mycontainer
⁧identity⁩يبدو المقطع في الإخراج مشابهًا للتالي؛ حيث يُظهر إنشاء الهوية المعينة من قِبل النظام في Microsoft Azure Active Directory:
[...] "identity": { "principalId": "xxxxxxxx-528d-7083-b74c-xxxxxxxxxxxx", "tenantId": "xxxxxxxx-f292-4e60-9122-xxxxxxxxxxxx", "type": "SystemAssigned", "userAssignedIdentities": null }, [...]
تعيين متغير لقيمة⁧principalId⁩ (معرّف كيان الخدمة) من الهوية، لاستخدامها في الخطوات اللاحقة.
spID=$(az container show \ --resource-group myResourceGroup \ --name mycontainer \ --query identity.principalId --out tsv)
قم بمنح مجموعة الحاويات حق الوصول إلى المخزن الرئيسي
قم بتشغيل الأمر التالي⁧⁩ «az keyvault set-policy»⁧⁩؛ لتعيين نهج الوصول على المخزن الرئيسي. يسمح المثال التالي للهوية المُعينة من قِبل المستخدم بالحصول على بيانات سرية من المخزن الرئيسي:
az keyvault set-policy \ --name mykeyvault \ --resource-group myResourceGroup \ --object-id $spID \ --secret-permissions get
قم باستخدام هوية مجموعة الحاويات؛ للحصول على البيانات السرية من المخزن الرئيسي
يمكنك الآن استخدام الهوية المدارة للوصول إلى المخزن الرئيسي داخل مثيل الحاوية قيد التشغيل. إطلاق أول bash shell في الحاوية:
az container exec \ --resource-group myResourceGroup \ --name mycontainer \ --exec-command "/bin/bash"
قم بتشغيل الأوامر التالية في bash shell في الحاوية. تسجيل الدخول الأول إلى Azure CLI باستخدام الهوية المدارة:
من الحاوية قيد التشغيل، استرداد البيانات السرية من المخزن الرئيسي:
az keyvault secret show \ --name SampleSecret \ --vault-name mykeyvault --query value
يتم استرداد قيمة البيانات السرية:
يتم تمكين الهوية المدارة باستخدام قالب Resource Manager
لتمكين الهوية المُدارة في مجموعة حاويات باستخدام ⁧⁩قالب Resource Manager⁧⁩، قم بتعيين خاصية⁧identity⁩العنصر⁧Microsoft.ContainerInstance/containerGroups⁩ مع عنصر⁧ContainerGroupIdentity⁩. تقوم المقتطفات التالية بعرض⁧identity⁩الخاصية المكونة لسيناريوهات مختلفة. انظر⁧⁩مرجع قالب Azure Resource Manager⁧⁩. تحديد الحد الأدنى⁧apiVersion⁩من⁧2018-10-01⁩.
الهوية التي تم تعينها من قِبل المستخدم
الهوية المعينة من قِبل المستخدم هو معرف مورد النموذج:
من الممكن تمكين هوية واحدة، أو أكثر من الهويات التي تم تعيينها من قِبل المستخدم.
"identity": { "type": "UserAssigned", "userAssignedIdentities": { "myResourceID1": { } } }
الهوية التي تم تعيينها من قِبل النظام
"identity": { "type": "SystemAssigned" }
الهويات المعينة للنظام والمستخدم
في مجموعة الحاوية، يمكن تمكين الهوية المعينة من قِبل نظام واحد، أو أكثر من الهويات المعينة من قِبل المستخدم، أو كلا النوعين من الهويات.
"identity": { "type": "System Assigned, UserAssigned", "userAssignedIdentities": { "myResourceID1": { } } } ...
قم بتمكين الهوية المدارة باستخدام ملف YAML
من أجل تمكين الهوية المدارة في مجموعة حاويات تم نشرها باستخدام⁧⁩ملف YAML⁧⁩، قم بتضمين YAML التالية. تحديد الحد الأدنى⁧apiVersion⁩من⁧2018-10-01⁩.
الهوية التي تم تعينها من قِبل المستخدم
الهوية المعينة من قِبل المستخدم هي معرف مورد النموذج
من الممكن تمكين هوية واحدة، أو أكثر من الهويات التي تم تعيينها من قِبل المستخدم.
identity: type: UserAssigned userAssignedIdentities: {'myResourceID1':{}}
الهوية التي تم تعيينها من قِبل النظام
الهويات المعينة للنظام والمستخدم
في مجموعة الحاوية، يمكن تمكين الهوية المعينة من قِبل نظام واحد، أو أكثر من الهويات المعينة من قِبل المستخدم، أو كلا النوعين من الهويات.