Используйте управляемое удостоверение для аутентификации вашего задания Azure Stream Analytics в Хранилище BLOB-объектов Azure.

При использовании проверки подлинности посредством управляемых удостоверений для выходных данных в хранилище Azure Blob, задания Stream Analytics получают прямой доступ к учетной записи хранения без использования строки подключения. Эта функция повышает безопасность и позволяет записывать данные в учетную запись хранения в виртуальной сети (VNET) в Azure.

В этой статье показано, как включить управляемую идентификацию для Blob-выходов задания Stream Analytics с помощью портала Azure и развертывания через Azure Resource Manager.

Создание задания Stream Analytics с помощью портала Azure

Сначала создайте управляемую идентификацию для задачи Azure Stream Analytics. 

  1. На портале Azure откройте задание Stream Analytics. 

  2. В меню навигации слева выберите Управляемое удостоверение, расположенное в разделе Настройка. Затем установите флажок Использовать управляемое удостоверение, назначаемое системой и нажмите кнопку Сохранить.

    Управляемое удостоверение, назначаемое системой

  3. Azure создает учетную запись службы для идентификации задания Stream Analytics в Microsoft Entra ID. Azure управляет жизненным циклом новосозданного удостоверения. При удалении задания Stream Analytics Azure автоматически удаляет связанную учетную запись службы (то есть, сервис-принципал). 

    При сохранении конфигурации идентификатор объекта (OID) служебного принципала отображается в качестве идентификатора принципала, как показано в следующем разделе:

    Идентификатор субъекта

    Субъект-служба имеет то же имя, что и задание 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 с поддержкой управляемых удостоверений и выходным приемником BLOB, которые используют управляемые удостоверения:

    {
        "$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 ID и используется на следующем шаге, чтобы предоставить заданию Stream Analytics доступ к учетной записи хранения.

  3. Теперь, когда вы создали задание, обратитесь к секции "Дать задаче Stream Analytics доступ к вашему аккаунту хранения" этой статьи.

Предоставьте заданию Stream Analytics доступ к учетной записи хранения

Вы можете предоставить рабочей задаче Stream Analytics доступ на двух уровнях:

  1. Доступ на уровне контейнера: Этот уровень доступа предоставляет заданию доступ к конкретному существующему контейнеру.
  2. Доступ на уровне учетной записи: Этот уровень доступа предоставляет общий доступ к учетной записи хранения, включая возможность создания новых контейнеров.

Если вам не нужно задание для создания контейнеров, выберите доступ на уровне контейнера, чтобы предоставить заданию минимально необходимый уровень доступа. В следующих разделах описываются оба варианта портала Azure и командной строки.

Примечание.

Из-за глобальной репликации или задержки кэширования отзыв или предоставление разрешений может занять некоторое время. Изменения должны отображаться в течение восьми минут.

Предоставление доступа через портал Azure

Доступ на уровне контейнера

  1. Перейдите в область конфигурации контейнера в учетной записи хранения.

  2. Выберите Управление доступом (IAM) .

  3. Выберите Добавить>Добавить назначение ролей, чтобы открыть страницу Добавление назначения ролей.

  4. Назначьте следующую роль. Подробные инструкции см. в статье Назначение ролей Azure с помощью портала Microsoft Azure.

    Настройка Значение
    Роль Участник данных хранилища BLOB-объектов
    Назначить доступ для Пользователь, группа или субъект-служба
    Участники <Имя вашего задания Stream Analytics>

    Снимок экрана: страница

Доступ на уровне учетной записи

  1. Войдите в свою учетную запись хранения.

  2. Выберите Управление доступом (IAM) .

  3. Выберите Добавить>Добавить назначение ролей, чтобы открыть страницу Добавление назначения ролей.

  4. Назначьте следующую роль. Подробные инструкции см. в статье Назначение ролей Azure с помощью портала Microsoft Azure.

    Настройка Значение
    Роль Участник данных хранилища BLOB-объектов
    Назначить доступ для Пользователь, группа или субъект-служба
    Участники <Имя вашего задания Stream Analytics>

    Снимок экрана: страница

Предоставление доступа через командную строку

Доступ на уровне контейнера

Чтобы предоставить доступ к определенному контейнеру, выполните следующую команду, используя 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>

Создать входные или выходные BLOB-данные

Теперь, когда вы настроили управляемое удостоверение, можно добавить ресурс blob в качестве входных или выходных данных в задание Stream Analytics.

  1. В окне свойств выходных данных хранилища BLOB-объектов Azure в раскрывающемся списке режима аутентификации выберите Управляемое удостоверение. Дополнительные сведения о других выходных свойствах см. в разделе Сведения о выходных данных Azure Stream Analytics. По завершении нажмите кнопку Сохранить.

    Настройка выходных данных хранилища BLOB-объектов Azure

Включение доступа к виртуальной сети

При настройке брандмауэров и виртуальных сетей учетной записи хранилища можно опционально разрешить сетевой трафик из других доверенных служб Microsoft. При аутентификации Stream Analytics с помощью управляемой идентификации, предоставляется подтверждение того, что запрос исходит от доверенной службы. В следующих инструкциях объясняется, как включить исключение доступа к виртуальной сети.

  1. Перейдите в область брандмауэров и виртуальных сетей в области конфигурации учетной записи хранения.
  2. Убедитесь, что включен параметр "Разрешить доверенным службам Microsoft доступ к этой учетной записи хранения".
  3. Если вы включили его, нажмите кнопку "Сохранить".

Включение доступа к виртуальной сети

Удалить управляемое удостоверение

Управляемое удостоверение, создаваемое для задания Stream Analytics, удаляется только при удалении задания. Невозможно удалить управляемое удостоверение без удаления задания. Если вы больше не хотите использовать управляемое удостоверение, измените способ проверки подлинности для вывода данных. Управляемое удостоверение продолжает существовать, пока не удалите задание, и оно используется, если вы решите снова использовать проверку подлинности управляемого удостоверения.

Ограничения

К текущим ограничениям этой функции относятся следующие:

  1. Классические учетные записи хранения Azure

  2. Учетные записи в Azure без Microsoft Entra ID.

  3. Мультитенантный доступ не поддерживается. Субъект-служба, созданный для заданного задания Stream Analytics, должен находиться в том же Microsoft Entra клиенте, в котором вы создали задание, и его нельзя использовать с ресурсом, который находится в другом клиенте Microsoft Entra.

Следующие шаги