استخدم هوية مُدارة Azure للمصادقة على سجل حاوية Azure

استخدم هوية مُدارة لموارد Azure للمصادقة على سجل حاوية Azure من مورد Azure آخر، دون الحاجة إلى توفير بيانات اعتماد التسجيل أو إدارتها. على سبيل المثال، قم بإعداد هوية مُدارة من قبل المستخدم أو مُدارة من قبل النظام على Linux VM للوصول إلى صور الحاوية من سجل الحاوية، بنفس سهولة استخدامك للسجل العام. أو قم بإعداد مجموعة Azure Kubernetes Service لاستخدام الهوية المُدارة لسحب صور الحاوية من Azure Container Registry لعمليات نشر pod.

في هذه المقالة، ستتعرف على المزيد حول الهويات المدارة وكيفية:

  • تمكين الهوية المعينة من قبل المستخدم أو المعينة من قبل النظام على Azure VM
  • منح هوية الوصول إلى سجل حاوية Azure
  • استخدم الهوية المُدارة للوصول إلى السجل واسحب صورة حاوية

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

لإعداد سجل حاوية ودفع صورة حاوية إليه، يجب أيضاً تثبيت Docker محليًّا. يوفر Docker حزمًا تعمل على تهيئة Docker بسهولة على أي نظام macOS أو Windows أو Linux .

لماذا يتم استخدام الهوية المُدارة؟

إذا لم تكن على دراية بالهويات المُدارة لميزة موارد Azure، فراجع نظرة عامة.

بعد إعداد موارد Azure المحددة بهوية مُدارة، امنح الهوية حق الوصول الذي تريده إلى مورد آخر، تماماً مثل أي أساس أمان. على سبيل المثال، قم بتعيين هوية مُدارة باستخدام السحب والدفع، أو أذونات أخرى لسجل خاص في Azure. (للحصول على قائمة كاملة بأدوار السجل، راجع أدوار وأذونات سجل حاوية Azure.) يمكنك منح هوية وصول إلى واحد أو أكثر من الموارد.

ثم استخدم الهوية للمصادقة على أي خدمة تدعم مصادقة Microsoft Entra، دون أي بيانات اعتماد في التعليمات البرمجية الخاصة بك. اختر كيفية المصادقة باستخدام الهوية المُدارة، بناءً على السيناريو الخاص بك. لاستخدام الهوية للوصول إلى سجل حاوية Azure من جهاز ظاهري، يمكنك المصادقة مع Azure Resource Manager.

إنشاء سجل حاويات

إذا لم يكن لديك بالفعل سجل حاوية Azure، فأنشئ سجلّاً وادفع صورة حاوية نموذجية إليه. للاطلاع على الخطوات، راجع التشغيل السريع: إنشاء سجل حاوية خاص باستخدام Azure CLI.

تفترض هذه المقالة أن لديك صورة حاوية aci-helloworld:v1 مخزنة في السجل الخاص بك. تستخدم الأمثلة اسم تسجيل myContainerRegistry. استبدل بأسماء التسجيل والصورة الخاصة بك في خطوات لاحقة.

قم بإنشاء جهاز افتراضي يدعم Docker

قم بإنشاء جهاز ظاهري Ubuntu يدعم Docker. تحتاج أيضاً إلى تثبيت Azure CLI على الجهاز الظاهري. إذا كان لديك بالفعل جهاز Azure الظاهري، فتخطّ هذه الخطوة لإنشاء الجهاز الظاهري.

انشر جهاز Ubuntu Azure الافتراضي باستخدام az vm create. يقوم المثال التالي بإنشاء VM باسم myDockerVM في مجموعة موارد موجودة تسمى myResourceGroup:

az vm create \
    --resource-group myResourceGroup \
    --name myDockerVM \
    --image Ubuntu2204 \
    --admin-username azureuser \
    --generate-ssh-keys

يستغرق إنشاء الجهاز الظاهري بضع دقائق. عند اكتمال الأمر، لاحظ publicIpAddress المعروض بواسطة Azure CLI. استخدم هذا العنوان لإجراء اتصالات SSH بالجهاز الظاهري.

قم بتثبيت Docker على VM

بعد تشغيل الجهاز الظاهري، قم بإجراء اتصال SSH بالجهاز الظاهري. استبدل publicIpAddress بعنوان IP العام لجهاز الجهاز الظاهري.

ssh azureuser@publicIpAddress

قم بتشغيل الأمر التالي لتثبيت Docker على الجهاز الظاهري:

sudo apt update
sudo apt install docker.io -y

بعد التثبيت، قم بتشغيل الأمر التالي للتحقق من أن Docker يعمل بشكل صحيح على الجهاز الظاهري:

sudo docker run -it mcr.microsoft.com/hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.
[...]

تثبيت Azure CLI

اتبع الخطوات الواردة في تثبيت Azure CLI باستخدام apt لتثبيت Azure CLI على جهاز Ubuntu الظاهري. بالنسبة لهذه المقالة، تأكد من تثبيت الإصدار 2.0.55 أو إصدار لاحق.

اخرج من جلسة SSH.

مثال 1: الوصول بهوية معينة من قبل المستخدم

إنشاء هوية

قم بإنشاء هوية في اشتراكك باستخدام الأمر إنشاء هوية من الألف إلى الياء. يمكنك استخدام نفس مجموعة الموارد التي استخدمتها سابقاً لإنشاء سجل الحاوية أو الجهاز الظاهري، أو مجموعة أخرى.

az identity create --resource-group myResourceGroup --name myACRId

لتكوين الهوية في الخطوات التالية، استخدم الأمر az هوية show لتخزين معرف مورد الهوية والمعرف الكياني للخدمة في المتغيرات.

# Get resource ID of the user-assigned identity
userID=$(az identity show --resource-group myResourceGroup --name myACRId --query id --output tsv)

# Get service principal ID of the user-assigned identity
spID=$(az identity show --resource-group myResourceGroup --name myACRId --query principalId --output tsv)

نظراً لأنك بحاجة إلى معرّف الهوية في خطوة لاحقة عند تسجيل الدخول إلى CLI من جهازك الظاهري، اعرض القيمة:

echo $userID

المعرّف بالشكل:

/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myACRId

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

يعمل الأمر تعيين هوية az vm التالي على تكوين Docker VM بالهوية التي يعيّنها المستخدم:

az vm identity assign --resource-group myResourceGroup --name myDockerVM --identities $userID

منح هوية الوصول إلى سجل الحاوية

قم الآن بتكوين الهوية للوصول إلى سجل الحاوية الخاص بك. استخدم أولاً الأمر az acr show للحصول على معرف المورد للتسجيل:

resourceID=$(az acr show --resource-group myResourceGroup --name myContainerRegistry --query id --output tsv)

استخدم الأمر إنشاء دور az لتعيين دور AcrPull للهوية. يوفر هذا الدور أذونات سحب إلى السجل. لتوفير أذونات السحب والدفع، قم بتعيين دور AcrPush.

az role assignment create --assignee $spID --scope $resourceID --role acrpull

استخدم الهوية للوصول إلى التسجيل

SSH في جهاز Docker الظاهري الذي تم تكوينه بالهوية. قم بتشغيل أوامر Azure CLI التالية، باستخدام Azure CLI المثبّت على الجهاز الظاهري.

أولاً، قم بالمصادقة على Azure CLI باستخدام تسجيل الدخول من a إلى z، باستخدام الهوية التي قمت بتكوينها على الجهاز الظاهري. بالنسبة إلى <userID>، استبدل معرِّف الهوية الذي استرددته في خطوة سابقة.

az login --identity --username <userID>

ثم قم بالمصادقة على السجل باستخدام az acr login. عند استخدام هذا الأمر، يستخدم CLI رمز خدمات مجال Active Directory المميز الذي تم إنشاؤه عند تشغيل az login لمصادقة جلستك بسلاسة مع سجل الحاوية. (بناءً على إعداد الجهاز الظاهري، قد تحتاج إلى تشغيل هذا الأمر وأوامر عامل الإرساء باستخدام sudo.)

az acr login --name myContainerRegistry

يجب أن ترى رسالة Login succeeded. يمكنك بعد ذلك تشغيل أوامر docker دون تقديم بيانات الاعتماد. على سبيل المثال، قم بتشغيل docker pull لسحب الصورة aci-helloworld:v1، وتحديد اسم خادم تسجيل الدخول للسجل الخاص بك. يتكون اسم خادم تسجيل الدخول من اسم سجل الحاوية (كلها أحرف صغيرة) متبوعاً بـ .azurecr.io على سبيل المثال mycontainerregistry.azurecr.io.

docker pull mycontainerregistry.azurecr.io/aci-helloworld:v1

مثال 2: الوصول بهوية مخصصة من قبل النظام

قم بتكوين الجهاز الظاهري بهوية يديرها النظام

يعمل الأمر تعيين هوية az vm التالي على تكوين Docker VM بهوية معينة من قبل النظام:

az vm identity assign --resource-group myResourceGroup --name myDockerVM

استخدم الأمر az vm show لتعيين متغير على قيمة principalId (معرف الخدمة الأساسي) لهوية الجهاز الظاهري، لاستخدامه في خطوات لاحقة.

spID=$(az vm show --resource-group myResourceGroup --name myDockerVM --query identity.principalId --out tsv)

منح هوية الوصول إلى سجل الحاوية

قم الآن بتكوين الهوية للوصول إلى سجل الحاوية الخاص بك. استخدم أولاً الأمر az acr show للحصول على معرف المورد للتسجيل:

resourceID=$(az acr show --resource-group myResourceGroup --name myContainerRegistry --query id --output tsv)

استخدم الأمر إنشاء دور az لتعيين دور AcrPull للهوية. يوفر هذا الدور أذونات سحب إلى السجل. لتوفير أذونات السحب والدفع، قم بتعيين دور AcrPush.

az role assignment create --assignee $spID --scope $resourceID --role acrpull

استخدم الهوية للوصول إلى التسجيل

SSH في جهاز Docker الظاهري الذي تم تكوينه بالهوية. قم بتشغيل أوامر Azure CLI التالية، باستخدام Azure CLI المثبّت على الجهاز الظاهري.

أولاً، قم بمصادقة Azure CLI باستخدام تسجيل الدخول من a إلى z، باستخدام الهوية المعينة من قبل النظام على الجهاز الظاهري.

az login --identity

ثم قم بالمصادقة على السجل باستخدام az acr login. عند استخدام هذا الأمر، يستخدم CLI رمز خدمات مجال Active Directory المميز الذي تم إنشاؤه عند تشغيل az login لمصادقة جلستك بسلاسة مع سجل الحاوية. (بناءً على إعداد الجهاز الظاهري، قد تحتاج إلى تشغيل هذا الأمر وأوامر عامل الإرساء باستخدام sudo.)

az acr login --name myContainerRegistry

يجب أن ترى رسالة Login succeeded. يمكنك بعد ذلك تشغيل أوامر docker دون تقديم بيانات الاعتماد. على سبيل المثال، قم بتشغيل docker pull لسحب الصورة aci-helloworld:v1، وتحديد اسم خادم تسجيل الدخول للسجل الخاص بك. يتكون اسم خادم تسجيل الدخول من اسم سجل الحاوية (كلها أحرف صغيرة) متبوعاً بـ .azurecr.io على سبيل المثال mycontainerregistry.azurecr.io.

docker pull mycontainerregistry.azurecr.io/aci-helloworld:v1

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

في هذه المقالة، تعلمت كيفية استخدام الهويات المُدارة مع Azure Container Registry وكيفية:

  • تمكين الهوية المعينة من قبل المستخدم أو المعينة من قبل النظام في Azure VM
  • منح هوية الوصول إلى سجل حاوية Azure
  • استخدم الهوية المُدارة للوصول إلى السجل واسحب صورة حاوية