الهويات المُدارة في Azure Container Apps

تسمح الهوية المدارة من معرف Microsoft Entra لتطبيق الحاوية بالوصول إلى موارد Microsoft Entra الأخرى المحمية. لمزيد من الاطلاع على الهويات المدارة في معرف Microsoft Entra، راجع الهويات المدارة لموارد Azure.

يمكن منح تطبيق الحاوية نوعين من الهويات:

  • ترتبط الهوية التي يعيّنها النظام بتطبيق الحاوية وتُحذَف عند حذف تطبيق الحاوية. يمكن أن يكون للتطبيق هوية واحدة معينة من قبل النظام.
  • الهوية المعينة من قبل المستخدم هي مورد Azure مستقل يمكنك تعيينه إلى تطبيق الحاوية والموارد الأخرى. يمكن أن يحتوي تطبيق الحاوية على هويات متعددة يعيّنها المستخدم. توجد الهويات المعينة من قبل المستخدم حتى تقوم بحذفها.

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

يمكنك استخدام هوية مدارة في تطبيق حاوية قيد التشغيل للمصادقة على أي خدمة تدعم مصادقة Microsoft Entra.

باستخدام الهويات المُدارة:

  • يتصل تطبيقك بالموارد باستخدام الهوية المُدارة. لا تحتاج إلى إدارة بيانات الاعتماد في تطبيق الحاوية.
  • يمكنك استخدام التحكم في الوصول استناداً إلى الدور لمنح أذونات محددة لهوية مُدارة.
  • تُكوَّن الهويات التي يعيّنها النظام وتُدار تلقائياً. تُحذَف عند حذف تطبيق الحاوية.
  • يمكنك إضافة الهويات التي يعيّنها المستخدم وحذفها وتعيينها إلى موارد متعددة. وهي مستقلة عن دورة حياة تطبيق الحاوية.
  • يمكنك استخدام الهوية المدارة للمصادقة باستخدام سجل حاويات Azure خاص بدون اسم مستخدم وكلمة مرور لسحب الحاويات لتطبيق الحاوية الخاص بك.
  • يمكنك استخدام هوية مدارة لإنشاء اتصالات للتطبيقات التي تدعم Dapr عبر مكونات Dapr

حالات الاستخدام الشائعة

الهويات التي يعيّنها النظام هي أفضل خيار لأحمال العمل:

  • الواردة في مورد فردي
  • التي تحتاج إلى هويات مستقلة

الهويات التي يعيّنها المستخدم مثالية لأحمال العمل التي:

  • تعمل على موارد متعددة ويمكن مشاركة هوية واحدة
  • تحتاج إلى مصادقة مسبقة لمورد آمن

القيود

لا يمكن لحاويات Init الوصول إلى الهويات المدارة في بيئات الاستهلاك فقط وبيئات ملف تعريف حمل العمل المخصصة

تكوين الهويات المدارة

يمكنك تكوين الهويات المدارة من خلال:

  • مدخل Microsoft Azure
  • Azure CLI
  • قالب Azure Resource Manager (ARM)

عند إضافة هوية مُدارة أو حذفها أو تعديلها على تطبيق حاوية قيد التشغيل، لا يُعاد تشغيل التطبيق تلقائياً ولا تُنشَأ مراجعة جديدة.

إشعار

عند إضافة هوية مُدارة إلى تطبيق حاوية مُوزَّع قبل 11 أبريل 2022، يجب إنشاء مراجعة جديدة.

إضافة يعيِّنها النظام

  1. انتقل إلى تطبيق الحاوية في مدخل Microsoft Azure.

  2. من مجموعة الإعدادات، حدد الهوية.

  3. في علامة التبويب النظام المعين، بدِّل الحالة إلى تشغيل.

  4. حدد حفظ.

لقطة شاشة للهويات المعينة من قبل النظام.

إضافة هوية يُعينها المستخدم

يتطلب تكوين تطبيق حاوية باستخدام هوية يعيّنها المستخدم إنشاء الهوية أولاً ثم إضافة مُعرِّف المورد إلى تكوين تطبيق الحاوية. يمكنك إنشاء هويات يعيّنها المستخدم عبر مدخل Microsoft Azure أو Azure CLI. للحصول على معلومات عن إنشاء الهويات التي يعيّنها المستخدم وإدارتها، راجع إدارة الهويات المُدارة التي يعيّنها المستخدم.

ستحتاج أولاً إلى إنشاء مورد هوية يعيّنها المستخدم.

  1. أنشئ مورد هوية مُدارة يعيّنها المستخدم وفقاً للخطوات الموجودة في إدارة الهويات المُدارة التي يعيّنها المستخدم.

  2. انتقل إلى تطبيق الحاوية في مدخل Microsoft Azure.

  3. من مجموعة الإعدادات، حدد الهوية.

  4. في علامة التبويب معين من قبل المستخدم، حدد إضافة.

  5. ابحث عن الهوية التي أنشأتها سابقا وحددها.

  6. حدد إضافة.

لقطة شاشة للهويات المعينة من قبل المستخدم.

تكوين مورد هدف

بالنسبة لبعض الموارد، تحتاج إلى تكوين تعيينات الأدوار للهوية المدارة لتطبيقك لمنح حق الوصول. وإلا، يتم رفض المكالمات من تطبيقك إلى الخدمات، مثل Azure Key Vault وقاعدة بيانات Azure SQL، حتى عند استخدام رمز مميز صالح لتلك الهوية. لمعرفة المزيد عن التحكم في الوصول استناداً إلى الدور في Azure ‏(Azure RBAC)، راجع ما المقصود بالتحكم في الوصول استناداً إلى الدور؟. لمعرفة المزيد حول الموارد التي تدعم رموز Microsoft Entra المميزة، راجع خدمات Azure التي تدعم مصادقة Microsoft Entra.

هام

تحتفظ الخدمات الخلفية للهويات المُدارة بذاكرة تخزين مؤقت لكل URI للمورد لمدة 24 ساعة تقريباً. في حال تحديث نهج الوصول لمورد هدف معين واسترداد رمز مميز لهذا المورد فوراً، فقد تستمر في الحصول على رمز مميز مخزن مؤقتاً بأذونات قديمة حتى تنتهي صلاحية هذا الرمز المميز. فرض تحديث الرمز المميز غير مدعوم.

الاتصال بخدمات Azure باستخدام التعليمات البرمجية للتطبيق

باستخدام الهويات المدارة، يمكن للتطبيق الحصول على رموز مميزة للوصول إلى موارد Azure التي تستخدم معرف Microsoft Entra، مثل قاعدة بيانات Azure SQL وAzure Key Vault وAzure Storage. توضح هذه الرموز المميزة التطبيق الذي يصل إلى المورد، وليس أي مستخدم محدد للتطبيق.

توفِّر تطبيقات الحاوية نقطة نهاية REST يمكن الوصول إليها داخلياً لاسترداد الرموز المميزة. تتوفر نقطة نهاية REST من داخل التطبيق مع طلب HTTP GET قياسي، والذي يمكنك إرساله مع عميل HTTP عام بلغتك المفضلة. بالنسبة إلى .NET وJavaScript وJava وPython، توفر مكتبة عميل Azure Identity ملخصاً عبر نقطة نهاية REST هذه. يمكنك الاتصال بخدمات Azure الأخرى عن طريق إضافة كائن بيانات اعتماد إلى العميل الخاص بالخدمة.

إشعار

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

إشعار

عند الاتصال بمصادر بيانات Azure SQL باستخدام Entity Framework Core، ضع في اعتبارك استخدام Microsoft.Data.SqlClient، الذي يوفِّر سلاسل اتصال خاصة لاتصال الهوية المُدارة.

بالنسبة إلى تطبيقات .NET، تكون أبسط طريقة للعمل مع هوية مُدارة من خلال مكتبة عميل Azure Identity لـ .NET. لمزيد من المعلومات، راجع الموارد التالية:

تستخدم الأمثلة المرتبطة DefaultAzureCredential. هذا الكائن فعال في معظم السيناريوهات حيث يعمل نفس النمط في Azure (مع الهويات المدارة) وعلى جهازك المحلي (بدون هويات مدارة).

استخدام الهوية المدارة لقواعد المقياس

يمكنك استخدام الهويات المدارة في قواعد المقياس للمصادقة مع خدمات Azure التي تدعم الهويات المدارة. لاستخدام هوية مدارة في قاعدة المقياس، استخدم الخاصية identity بدلا من الخاصية auth في قاعدة المقياس. القيم المقبولة للخاصية identity هي إما معرف مورد Azure للهوية المعينة من قبل المستخدم، أو system لاستخدام هوية معينة من قبل النظام.

إشعار

مصادقة الهوية المدارة في قواعد المقياس في المعاينة العامة. وهي متوفرة في إصدار 2024-02-02-previewواجهة برمجة التطبيقات .

يوضح مثال قالب ARM التالي كيفية استخدام هوية مدارة مع قاعدة مقياس تخزين قائمة انتظار Azure:

يستخدم حساب تخزين قائمة الانتظار الخاصية accountName لتعريف حساب التخزين، بينما identity تحدد الخاصية الهوية المدارة التي يجب استخدامها. لا تحتاج إلى استخدام الخاصية auth .

"scale": {
    "minReplicas": 1,
    "maxReplicas": 10,
    "rules": [{
        "name": "myQueueRule",
        "azureQueue": {
            "accountName": "mystorageaccount",
            "queueName": "myqueue",
            "queueLength": 2,
            "identity": "<IDENTITY1_RESOURCE_ID>"
        }
    }]
}

لمعرفة المزيد حول استخدام الهوية المدارة مع قواعد المقياس، راجع تعيين قواعد التحجيم في Azure Container Apps.

التحكم في توفر الهوية المدارة

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

بدءا من إصدار 2024-02-02-previewواجهة برمجة التطبيقات ، يمكنك التحكم في الهويات المدارة المتوفرة لتطبيق الحاوية أثناء مراحل التهيئة والمراحل الرئيسية لاتباع مبدأ الأمان الأقل امتيازا. يتوفر الخياران التاليان:

  • Init: متوفر فقط لحاويات التهيئة. استخدم هذا عندما تريد تنفيذ بعض أعمال التهيئة التي تتطلب هوية مدارة، ولكنك لم تعد بحاجة إلى الهوية المدارة في الحاوية الرئيسية. هذا الخيار مدعوم حاليا فقط في بيئات استهلاك ملف تعريف حمل العمل
  • Main: متوفر فقط للحاويات الرئيسية. استخدم هذا إذا كانت حاوية التهيئة الخاصة بك لا تحتاج إلى هوية مدارة.
  • All: متوفر لجميع الحاويات. تكون هذه القيمة هي الإعداد الافتراضي.
  • None: غير متوفر لأي حاويات. استخدم هذا عندما يكون لديك هوية مدارة تستخدم فقط لسحب صورة ACR أو قواعد المقياس أو أسرار Key Vault ولا تحتاج إلى أن تكون متاحة للتعليمات البرمجية التي تعمل في حاوياتك.

يوضح مثال قالب ARM التالي كيفية تكوين تطبيق حاوية على بيئة استهلاك ملف تعريف حمل العمل التي:

  • يقيد الهوية المعينة من قبل النظام لتطبيق الحاوية على الحاويات الرئيسية فقط.
  • يقيد هوية معينة من قبل المستخدم إلى حاويات التهيئة فقط.
  • يستخدم هوية معينة من قبل المستخدم لسحب صورة Azure Container Registry دون السماح للتعليمات البرمجية في الحاويات باستخدام هذه الهوية المدارة للوصول إلى السجل. في هذا المثال، لا تحتاج الحاويات نفسها إلى الوصول إلى السجل.

يحد هذا النهج من الموارد التي يمكن الوصول إليها إذا تمكن مستخدم ضار من الوصول غير المصرح به إلى الحاويات.

{
    "location": "eastus2",
    "identity":{
    "type": "SystemAssigned, UserAssigned",
        "userAssignedIdentities": {
            "<IDENTITY1_RESOURCE_ID>":{},
            "<ACR_IMAGEPULL_IDENTITY_RESOURCE_ID>":{}
         }
     },
    "properties": {
        "workloadProfileName":"Consumption",
        "environmentId": "<CONTAINER_APPS_ENVIRONMENT_ID>",
        "configuration": {
            "registries": [
            {
                "server": "myregistry.azurecr.io",
                "identity": "ACR_IMAGEPULL_IDENTITY_RESOURCE_ID"
            }],
            "identitySettings":[
            {
                "identity": "ACR_IMAGEPULL_IDENTITY_RESOURCE_ID",
                "lifecycle": "None"
            },
            {
                "identity": "<IDENTITY1_RESOURCE_ID>",
                "lifecycle": "Init"
            },
            {
                "identity": "system",
                "lifecycle": "Main"
            }]
        },
        "template": {
            "containers":[
                {
                    "image":"myregistry.azurecr.io/main:1.0",
                    "name":"app-main"
                }
            ],
            "initContainers":[
                {
                    "image":"myregistry.azurecr.io/init:1.0",
                    "name":"app-init",
                }
            ]
        }
    }
}

عرض الهويات المُدارة

يمكنك إظهار الهويات المُدارة التي يعيّنها النظام والمستخدم باستخدام أمر Azure CLI التالي. يظهر الإخراج نوع الهوية المدارة ومعرفات المستأجر والمعرفات الرئيسية لجميع الهويات المدارة المعينة لتطبيق الحاوية.

az containerapp identity show --name <APP_NAME> --resource-group <GROUP_NAME>

إزالة الهوية المُدارة

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

  1. في جزء التنقل الأيمن من صفحة التطبيق، مرِّر لأسفل وصولاً إلى مجموعة الإعدادات.

  2. حدد "Identity". ثم اتبع الخطوات بناءً على نوع الهوية:

    • الهوية التي يعيّنها النظام: ضمن علامة التبويب "System assigned"، بدِّل الحالة إلى إيقاف التشغيل. حدد حفظ.
    • الهوية التي يعيّنها المستخدم: حدد علامة التبويب "User assigned"، وحدد خانة الاختيار للهوية، وحدد "Remove". حدد نعم للتأكيد.

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