المصادقة باستخدام سجل حاوية Azure

هناك عدة طرق للمصادقة مع سجل حاويات Azure كل منها قابل للتطبيق على سيناريو واحد أو أكثر من سيناريوهات استخدام التسجيل.

تتضمن الطرق الموصى بها ما يلي:

  • المصادقة على السجل مباشرة عبر تسجيل الدخول الفردي
  • يمكن للتطبيقات ومنسقي الحاويات إجراء مصادقة غير مراقبة أو "بدون عنوان" باستخدام كيان خدمة Microsoft Entra

إذا كنت تستخدم سجل حاوية مع Azure Kubernetes Service (AKS) أو مجموعة Kubernetes أخرى، فراجع سيناريوهات للمصادقة مع Azure Container Registry من Kubernetes.

خيارات المصادقة

يسرد الجدول التالي أساليب المصادقة المتوفرة والسيناريوهات النموذجية. انظر المحتوى المرتبط للحصول على التفاصيل.

الطريقة إرشادات المصادقة سيناريوهات التحكم في الوصول استنادا إلى الدور في Azure (Azure RBAC) القيود
الهوية الفردية لـ AD  az acr login في Azure CLI

Connect-AzContainerRegistry في Azure PowerShell
الدفع/السحب التفاعلي من قبل المطورين والمختبرين نعم يجب تجديد رمز AD المميز كل 3 ساعات
كيان خدمة AD  docker login

az acr login في Azure CLI

Connect-AzContainerRegistry في Azure PowerShell

إعدادات تسجيل الدخول إلى السجل في واجهات برمجة التطبيقات أو الأدوات

بيان سرية سحب Kubernetes   
دفع غير مراقب من مسار CI/CD

سحب غير مراقب إلى Azure أو الخدمات الخارجية
نعم انتهاء الصلاحية الافتراضي لكلمة مرور SP هو سنة واحدة
الهوية المُدارة لموارد Azure  docker login

az acr login في Azure CLI

Connect-AzContainerRegistry في Azure PowerShell
دفع غير مراقب من مسار Azure CI/CD

سحب غير مراقب إلى خدمات Azure

نعم استخدم فقط من خدمات Azure المحددة التي تدعم الهويات المدارة لموارد Azure
الهوية المُدارة لمجموعة AKS  إرفاق السجل عند إنشاء نظام مجموعة AKS أو تحديثه سحب غير مراقب إلى مجموعة AKS في نفس الاشتراك أو اشتراك مختلف لا، سحب الوصول فقط متوفر فقط مع مجموعة AKS

لا يمكن استخدامها للمصادقة عبر المستأجرين
كيان خدمة مجموعة AKS  تمكين عند إنشاء نظام مجموعة AKS أو تحديثه سحب غير مراقب إلى نظام مجموعة AKS من السجل في مستأجر AD آخر لا، سحب الوصول فقط متوفر فقط مع نظام مجموعة AKS
مستخدم مسؤول  docker login  دفع/سحب تفاعلي من قِبَل المطور أو المختبِر الفردي

نشر المدخل للصورة من التسجيل إلى Azure App Service أو مثيلات حاوية Azure
لا، دائما ما تسحب وتدفع الوصول حساب واحد لكل سجل، غير مستحسن لعدة مستخدمين
رمز الوصول المحدد في نطاق المستودع  docker login

az acr login في Azure CLI

Connect-AzContainerRegistry في Azure PowerShell

بيان سرية سحب Kubernetes 
دفع/سحب تفاعلي إلى المستودع بواسطة مطور أو مختبِر فردي

سحب غير مراقب من المستودع بواسطة نظام فردي أو جهاز خارجي
نعم غير متكامل حاليا مع هوية AD

تسجيل الدخول الفردي باستخدام معرف Microsoft Entra

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

az login
az acr login --name <acrName>

عند تسجيل الدخول باستخدام az acr login، يستخدم CLI الرمز المميز الذي تم إنشاؤه عند تنفيذ az login لمصادقة جلستك بسلاسة مع السجل الخاص بك. لإكمال تدفق المصادقة، يجب تثبيت Docker CLI وDocker daemon وتشغيلهما في بيئتك. az acr login يستخدم عميل Docker لتعيين رمز Microsoft Entra المميز في docker.config الملف. بمجرد تسجيل الدخول بهذه الطريقة، يتم تخزين بيانات الاعتماد الخاصة بك مؤقتاً، ولا تتطلب أوامر docker اللاحقة في جلستك اسم مستخدم أو كلمة مرور.

تلميح

استخدم كذلك az acr login لمصادقة هوية فردية عندما تريد دفع أو سحب عناصر غير صور Docker إلى السجل الخاص بك، مثل عناصر OCI.

للوصول إلى السجل، يكون الرمز المميز المستخدم بواسطة az acr login صالحاً لمدة 3 ساعات ، لذلك نوصي بتسجيل الدخول دائماً إلى السجل قبل تشغيل أمر docker. إذا انتهت صلاحية الرمز المميز الخاص بك، فيمكنك تحديثه باستخدام الأمر az acr login مرة أخرى لإعادة المصادقة.

يوفر استخدام az acr login مع هويات Azure التحكم في الوصول المستند إلى الدور Azure (Azure RBAC). بالنسبة لبعض السيناريوهات، قد ترغب في تسجيل الدخول إلى سجل لهويتك الفردية في معرف Microsoft Entra، أو تكوين مستخدمي Azure الآخرين الذين لديهم أدوار وأذونات Azure محددة. بالنسبة للسيناريوهات عبر الخدمات أو للتعامل مع احتياجات مجموعة العمل أو سير عمل التطوير حيث لا تريد إدارة الوصول الفردي، يمكنك أيضاً تسجيل الدخول باستخدام هوية مُدارة لموارد Azure.

تسجيل الدخول إلى az acr باستخدام --expose-token

في بعض الحالات، تحتاج إلى المصادقة مع az acr login عندما لا يعمل Docker daemon في بيئتك. على سبيل المثال، قد تحتاج إلى تشغيل az acr login في برنامج نصي في Azure Cloud Shell، والذي يوفر Docker CLI ولكنه لا يقوم بتشغيل Docker daemon.

بالنسبة لهذا السيناريو، قم بتشغيل az acr login أولاً باستخدام المعلمة --expose-token. يعرض هذا الخيار رمز وصول بدلاً من تسجيل الدخول من خلال Docker CLI.

az acr login --name <acrName> --expose-token

يعرض الإخراج رمز الوصول المميز، والمختصر هنا:

{
  "accessToken": "eyJhbGciOiJSUzI1NiIs[...]24V7wA",
  "loginServer": "myregistry.azurecr.io"
}

لمصادقة السجل، نوصي بتخزين بيانات اعتماد الرمز المميز في مكان آمن واتباع الممارسات الموصى بها لإدارة بيانات اعتماد تسجيل الدخول إلى docker. على سبيل المثال، قم بتخزين قيمة الرمز المميز في متغير بيئة:

TOKEN=$(az acr login --name <acrName> --expose-token --output tsv --query accessToken)

بعد ذلك، قم بتشغيل docker login، ممرراً 00000000-0000-0000-0000-000000000000 كاسم مستخدم واستخدم رمز الوصول باعتباره كلمة المرور:

docker login myregistry.azurecr.io --username 00000000-0000-0000-0000-000000000000 --password-stdin <<< $TOKEN

وبالمثل، يمكنك استخدام الرمز الذي تم إرجاعه بواسطة az acr login مع الأمر helm registry login للمصادقة مع السجل:

echo $TOKEN | helm registry login myregistry.azurecr.io \
            --username 00000000-0000-0000-0000-000000000000 \
            --password-stdin

كيان الخدمة

إذا عيّنت كيان خدمة إلى السجل الخاص بك، فيمكن للتطبيق أو الخدمة التي تقدمها استخدامها للمصادقة بدون أجهزة ملحقة. تسمح كيانات الخدمةبالتحكم في الوصول المستند إلى الدور في Azure (Azure RBAC) للسجل، ويمكنك تعيين عدة كيانات خدمة إلى أحد السجلات. تسمح لك أساسيات الخدمة المتعددة بتعريف وصول مختلف للتطبيقات المختلفة.

رمز مصادقة ACR يتم إنشائه عند تسجيل الدخول إلى ACR، ويتم تحديثه عند العمليات اللاحقة. مدة بقاء هذا الرمز المميز هي 3 ساعات.

تتضمن الأدوار المتوفرة لتسجيل حاوية:

  • AcrPull: سحب

  • AcrPush: سحب ودفع

  • المالك: سحب الأدوار ودفعها وتعيينها إلى مستخدمين آخرين

للحصول على قائمة كاملة بالأدوار، راجع أدوار وأذونات سجل حاوية Azure.

للحصول على البرامج النصية CLI لإنشاء كيان خدمة للمصادقة باستخدام سجل حاوية Azure، والمزيد من الإرشادات، راجع مصادقة سجل حاوية Azure مع كيان الخدمة.

حساب المسؤول

يتضمن كل سجل حاوية حساب مستخدم مسؤول، والذي يتم تعطيله بشكل افتراضي. يمكنك تمكين المستخدم المسؤول وإدارة بيانات الاعتماد الخاصة به في مدخل Azure، أو باستخدام Azure CLI أو Azure PowerShell أو أدوات Azure الأخرى. يتمتع حساب المسؤول بأذونات كاملة للتسجيل.

حساب المسؤول مطلوب حالياً لبعض السيناريوهات لنشر صورة من سجل حاوية إلى خدمات Azure معينة. على سبيل المثال، يكون حساب المسؤول مطلوباً عند استخدام مدخل Azure لنشر صورة حاوية من سجل مباشرةً إلى مثيلات حاوية Azure أو Azure Web Apps للحاويات.

هام

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

يتم توفير حساب المسؤول مع اثنين من كلمات المرور، وكلاهما يمكن إعادة إنشائها. تتوفر كلمات المرور الجديدة التي تم إنشاؤها لحسابات المسؤولين على الفور. سيستغرق إعادة إنشاء كلمات المرور لحسابات المسؤولين 60 ثانية للنسخ المتماثل وإتاحتها. تسمح لك كلمتا مرور بالاحتفاظ بالاتصال بالتسجيل باستخدام كلمة مرور واحدة أثناء إعادة إنشاء كلمة المرور الأخرى. إذا تم تمكين حساب المسؤول، فيمكنك تمرير اسم المستخدم وكلمة المرور إلى الأمر docker login عند مطالبتك بالمصادقة الأساسية للسجل. على سبيل المثال:

docker login myregistry.azurecr.io

للحصول على الممارسات الموصى بها لإدارة بيانات اعتماد تسجيل الدخول، راجع مرجع الأمر docker login.

لتمكين المستخدم المسؤول لسجل موجود، يمكنك استخدام المعلمة --admin-enabled للأمر az acr update في Azure CLI:

az acr update -n <acrName> --admin-enabled true

يمكنك تمكين المستخدم المسؤول في مدخل Azure من خلال التنقل في السجل، وتحديد مفاتيح الوصول ضمن الإعدادات، ثم تمكين ضمن المستخدم المسؤول.

Enable admin user UI in the Azure portal

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