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

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

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

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

Сначала вы создадите управляемое удостоверение для задания Azure Stream Analytics. 

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

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

    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 с включенным управляемым удостоверением и приемником выходных данных 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"
    }
    

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

  3. Теперь, когда задание создано, см. раздел Предоставление заданию Stream Analytics доступа к учетной записи хранения этой статьи.

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

Существует два уровня доступа, которые можно использовать для задания Stream Analytics.

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

Если не требуется задание для создания контейнеров от своего имени, следует выбрать доступ на уровне контейнера , так как этот параметр предоставляет заданию минимальный уровень доступа. Оба варианта описаны ниже для портал Azure и командной строки.

Примечание.

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

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

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

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

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

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

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

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

    Screenshot that shows Add role assignment page in Azure portal.

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

  1. Перейдите к учетной записи хранилища.

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

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

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

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

Создание входных или выходных данных большого двоичного объекта

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

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

    Configure Azure Blob storage output

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

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

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

Enable VNET access

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

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

Ограничения

Ниже перечислены ограничения для этой функции.

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

  2. Учетные записи Azure без идентификатора Microsoft Entra.

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

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