استخدام الهوية المُدارة لمصادقة مهمة Azure Stream Analytics إلى Azure Blob Storage

تمنحمصادقة الهوية المُدارة للإخراج إلى تخزين Azure Blob مهام Stream Analytics وصولاً مباشرًا إلى حساب التخزين بدلاً من استخدام سلسلة اتصال. بالإضافة إلى تحسين الأمان، تتيح لك هذه الميزة أيضًا كتابة البيانات إلى حساب تخزين في شبكة افتراضية (VNET) داخل Azure.

توضح لك هذه المقالة كيفية تمكين الهوية المُدارة لإخراج (مخرجات) Blob لمهمة Stream Analytics من خلال مدخل Microsoft Azure ومن خلال توزيع Azure Resource Manager.

إنشاء مهمة Stream Analytics باستخدام مدخل Microsoft Azure

أولاً، يمكنك إنشاء هوية مدارة لمهمة Stream Analytics. 

  1. افتح مهمة Stream Analytics في مدخل Microsoft Azure. 

  2. من قائمة التنقل اليسرى، حدد Managed Identity الموجودة ضمن Configure. ثم حدد المربع الموجود بجوار Use System-assigned Managed Identity وحدد Save.

    System assigned managed identity

  3. يتم إنشاء كيان خدمة لهوية وظيفة Stream Analytics في معرف Microsoft Entra. تُدار دورة حياة الهوية التي أُنشئت حديثًا عن طريق Azure. عند حذف مهمة Stream Analytics، يتم حذف الهوية المقترنة (أي كيان الخدمة) تلقائياً بواسطة Azure. 

    عند حفظ التكوين، يتم سرد معرف الكائن (OID) الخاص بكيان الخدمة كمعرف أساسي كما هو موضح أدناه:

    Principal ID

    يحمل كيان الخدمة نفس اسم مهمة Stream Analytics. على سبيل المثال، إذا كان اسم وظيفتك هو MyASAJob، فإن اسم مدير الخدمة يكون أيضاً MyASAJob. 

استخدام Azure Resource Manager

يتيح لك استخدام Azure Resource Manager بأتمتة توزيع مهمة Stream Analytics كلياً. يمكنك استخدام قوالب Resource Manager باستخدام إما Azure PowerShell أو Azure CLI. تستخدم الأمثلة الموضحة أدناه Azure CLI.

  1. يمكنك إنشاء مورد Microsoft.StreamAnalytics/streamingjobs عن طريق استخدام هوية مدارة من خلال تضمين الخاصية التالية في قسم الموارد في قالب Resource Manager:

    "Identity": {
      "Type": "SystemAssigned",
    },
    

    تسمح هذه الخاصية لـ Azure Resource Manager بإنشاء وإدارة هوية وظيفة Stream Analytics. يوجد أدناه مثال على قالب Resource Manager الذي يستخدم مهمة Stream Analytics مع تمكين Managed Identity ومخزن إخراج Blob يستخدم Managed Identity:

    {
        "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
        "contentVersion": "1.0.0.0",
        "resources": [
            {
                "apiVersion": "2017-04-01-preview",
                "name": "MyStreamingJob",
                "location": "[resourceGroup().location]",
                "type": "Microsoft.StreamAnalytics/StreamingJobs",
                "identity": {
                    "type": "systemAssigned"
                },
                "properties": {
                    "sku": {
                        "name": "standard"
                    },
                    "outputs":[
                        {
                            "name":"output",
                            "properties":{
                                "serialization": {
                                    "type": "JSON",
                                    "properties": {
                                        "encoding": "UTF8"
                                    }
                                },
                                "datasource":{
                                    "type":"Microsoft.Storage/Blob",
                                    "properties":{
                                        "storageAccounts": [
                                            { "accountName": "MyStorageAccount" }
                                        ],
                                        "container": "test",
                                        "pathPattern": "segment1/{date}/segment2/{time}",
                                        "dateFormat": "yyyy/MM/dd",
                                        "timeFormat": "HH",
                                        "authenticationMode": "Msi"
                                    }
                                }
                            }
                        }
                    ]
                }
            }
        ]
    }
    

    يمكن استخدام المهمة الموضحة أعلاه مع مجموعة الموارد ExampleGroup باستخدام الأمر Azure CLI أدناه:

    az deployment group create --resource-group ExampleGroup -template-file StreamingJob.json
    
  2. يمكنك استخدام Azure Resource Manager لاسترداد التعريف الكامل للمهمة بعد إنشائها.

    az resource show --ids /subscriptions/{SUBSCRIPTION_ID}/resourceGroups/{RESOURCE_GROUP}/providers/Microsoft.StreamAnalytics/StreamingJobs/{RESOURCE_NAME}
    

    سيرجع الأمر أعلاه استجابة مثل ما يلي:

    {
        "id": "/subscriptions/{SUBSCRIPTION_ID}/resourceGroups/{RESOURCE_GROUP}/providers/Microsoft.StreamAnalytics/streamingjobs/{RESOURCE_NAME}",
        "identity": {
            "principalId": "{PRINCIPAL_ID}",
            "tenantId": "{TENANT_ID}",
            "type": "SystemAssigned",
            "userAssignedIdentities": null
        },
        "kind": null,
        "location": "West US",
        "managedBy": null,
        "name": "{RESOURCE_NAME}",
        "plan": null,
        "properties": {
            "compatibilityLevel": "1.0",
            "createdDate": "2019-07-12T03:11:30.39Z",
            "dataLocale": "en-US",
            "eventsLateArrivalMaxDelayInSeconds": 5,
            "jobId": "{JOB_ID}",
            "jobState": "Created",
            "jobStorageAccount": null,
            "jobType": "Cloud",
            "outputErrorPolicy": "Stop",
            "package": null,
            "provisioningState": "Succeeded",
            "sku": {
                "name": "Standard"
            }
        },
        "resourceGroup": "{RESOURCE_GROUP}",
        "sku": null,
        "tags": null,
        "type": "Microsoft.StreamAnalytics/streamingjobs"
    }
    

    لاحظ principalId من تعريف الوظيفة، والذي يحدد الهوية المدارة لمهمتك ضمن معرف Microsoft Entra وسيتم استخدامه في الخطوة التالية لمنح وظيفة Stream Analytics حق الوصول إلى حساب التخزين.

  3. الآن بعد إنشاء المهمة، راجع قسم منح مهمة Stream Analytics حق الوصول إلى حساب التخزين الخاص بك في هذه المقالة.

امنح مهمة Stream Analytics حق الوصول إلى حساب التخزين الخاص بك

هناك مستويان من الوصول يمكنك اختيارهما لمنح مهمة Stream Analytics الخاصة بك:

  1. Container level access: يمنح هذا الخيار المهمة حق الوصول إلى حاوية موجودة معينة.
  2. Account level access: يمنح هذا الخيار المهمة حق الوصول العام إلى حساب التخزين، بما في ذلك القدرة على إنشاء حاويات جديدة.

ما لم تكن بحاجة إلى المهمة لإنشاء حاويات نيابة عنك، ينبغي عليك اختيار Container level access لأن هذا الخيار سيمنح المهمة الحد الأدنى من مستوى الوصول المطلوب. شُرح كلا الخيارين أدناه لمدخل Microsoft Azure وسطر الأوامر.

إشعار

بسبب النسخ المتماثل العمومي أو زمن انتقال التخزين المؤقت، قد يكون هناك تأخير عند إبطال الأذونات أو منحها. ينبغي عكس التغييرات في غضون 8 دقائق.

امنح حق الوصول عبر مدخل Microsoft Azure

حق الوصول إلى مستوى الحاوية

  1. انتقل إلى الجزء الخاص بتكوين الحاوية داخل حساب التخزين الخاص بك.

  2. حدد Access control (IAM).

  3. يرجى النقر فوق "إضافة" >"إضافة تعيين دور" لفتح صفحة إضافة تعيين الدور.

  4. تعيين الدور التالي. للحصول على خطوات تفصيلية، راجع تعيين أدوار Azure باستخدام مدخل Azure.

    الإعداد القيمة‬
    الدور المساهم في بيانات مخزن البيانات الثنائية الكبيرة
    تعيين الوصول إلى المستخدم، والمجموعة، والخدمة الرئيسية
    الأعضاء <اسم المهمة الخاص بك في Stream Analytics>

    Screenshot that shows Add role assignment page in Azure portal.

حق الوصول إلى مستوى الحساب

  1. انتقل إلى حساب التخزين الخاص بك.

  2. حدد Access control (IAM).

  3. يرجى النقر فوق "إضافة" >"إضافة تعيين دور" لفتح صفحة إضافة تعيين الدور.

  4. تعيين الدور التالي. للحصول على خطوات تفصيلية، راجع تعيين أدوار Azure باستخدام مدخل Azure.

    الإعداد القيمة‬
    الدور المساهم في بيانات مخزن البيانات الثنائية الكبيرة
    تعيين الوصول إلى المستخدم، والمجموعة، والخدمة الرئيسية
    الأعضاء <اسم المهمة الخاص بك في Stream Analytics>

    Screenshot that shows Add role assignment page in Azure portal.

امنح حق الوصول من خلال سطر الأوامر

حق الوصول إلى مستوى الحاوية

لمنح حق الوصول إلى حاوية معينة، شغل الأمر التالي باستخدام Azure CLI:

az role assignment create --role "Storage Blob Data Contributor" --assignee <principal-id> --scope /subscriptions/<subscription-id>/resourcegroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>/blobServices/default/containers/<container-name>

حق الوصول إلى مستوى الحساب

لمنح حق الوصول إلى الحساب بأكمله، شغل الأمر التالي باستخدام Azure CLI:

az role assignment create --role "Storage Blob Data Contributor" --assignee <principal-id> --scope /subscriptions/<subscription-id>/resourcegroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>

إنشاء إدخال أو إخراج كائن ثنائي كبير الحجم

الآن بعد تكوين هويتك المُدارة، فأنت جاهز لإضافة مورد البيانات الثنائية الكبيرة كمدخل أو مخرج إلى مهمة Stream Analytics الخاصة بك.

  1. في نافذة خصائص الإخراج لمتلقي إخراج تخزين Azure Blob، حدد القائمة المنسدلة لوضع المصادقة واختر Managed Identity. للحصول على معلومات عن خصائص الإخراج الأخرى، تأكد من فهم المخرجات من Stream Analytics. عند الانتهاء انقر فوق Save.

    Configure Azure Blob storage output

مكن الوصول إلى VNET

عند تكوين جدران الحماية والشبكات الظاهرية لحساب التخزين الخاص بك، يمكنك السماح اختيارياً في نسبة استخدام الشبكة من خدمات Microsoft الأخري الموثوق منها. عندما يصادق Stream Analytics باستخدام Managed Identity، فإنه يقدم دليلاً على أن الطلب صادر من خدمة موثوقة. فيما يلي إرشادات خاصة بتمكين استثناء الوصول إلى VNET.

  1. انتقل إلى الجزء الخاص بـ «Firewalls وvirtual networks» داخل جزء تكوين حساب التخزين.
  2. تأكد من تمكين خيار «السماح لخدمات Microsoft الموثوقة بالوصول إلى حساب التخزين هذا».
  3. إذا قمت بتمكينه، فانقر فوق Save.

Enable VNET access

احذف الهوية المُدارة

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

القيود

موضح أدناه القيود الحالية الخاصة بهذه الميزة:

  1. حسابات كلاسيكية خاصة بـ Azure Storage.

  2. حسابات Azure بدون معرف Microsoft Entra.

  3. يعد الوصول متعدد المستأجرين غير مدعوم. يجب أن يتواجد كيان الخدمة الذي تم إنشاؤه لوظيفة Stream Analytics معينة في نفس مستأجر Microsoft Entra الذي تم إنشاء الوظيفة فيه، ولا يمكن استخدامه مع مورد موجود في مستأجر Microsoft Entra مختلف.

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