Аутентификация веб-задания Azure с помощью MSI в фабрике данных Azure

Проверка подлинности MSI для веб-задания Azure через веб-активность в ADF выдает ошибку 403 - это веб-приложение остановлено. проблема, в то время как одно и то же веб-задание вызывается через обычную проверку подлинности.

Веб-задание размещается в службе приложений Windows и запускается вручную.

In ADF V2, i have created a web activity and provided the below settings:
URL:https://<web app name>.scm.azurewebsites.net/api/triggeredwebjobs/<webjobname>/run
Method: POST
Headers: NA
Body: {}
Authentication: MSI with resource as https://management.azure.com/
  • Я включил MSI в службе приложений, где развернуто веб-задание, и подтвердил то же самое в AAD.
  • MSI также включен в ADF, что подтверждается в AAD.
  • В службе приложений я добавил свой ADF в КОНТРОЛЬ ДОСТУПА с ролью Участник и попробовал несколько других ролей, а также Роль оператора управляемого приложения. .

Примечание. Я также перезапустил свою службу приложений после назначения ролей и включения MSI.

Это код веб-активности в adf:

{
"name": "pipeline1",
"properties": {
    "activities": [
        {
            "name": "Web1",
            "type": "WebActivity",
            "dependsOn": [],
            "policy": {
                "timeout": "7.00:00:00",
                "retry": 0,
                "retryIntervalInSeconds": 30,
                "secureOutput": false,
                "secureInput": false
            },
            "userProperties": [],
            "typeProperties": {
                "url": "https://<webappname>.scm.azurewebsites.net/api/triggeredwebjobs/<webjobname>/run",
                "method": "POST",
                "authentication": {
                    "type": "MSI",
                    "resource": "https://management.azure.com/"
                }
            }
        }
    ],
    "annotations": []
},
"type": "Microsoft.DataFactory/factories/pipelines"
}

Я ожидаю, что проверка подлинности будет успешной и веб-задание должно сработать, но на самом деле веб-приложение не запускается с помощью проверки подлинности MSI, и действие не выполняется с выводом как Ошибка 403 - Это веб-приложение остановлено.


person Anish K    schedule 15.08.2019    source источник


Ответы (2)


Вам нужно изменить url на https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/triggeredwebjobs/{webJobName}/run?api-version=2016-08-01, тогда все будет нормально.

Ссылка - Web Apps - Run Triggered Web Работа

Результат теста:

введите здесь описание изображения

введите здесь описание изображения

person Joy Wang    schedule 16.08.2019
comment
Спасибо за ответ @Joy. Хотя вышеупомянутое изменение служит цели успешного вызова веб-задания с аутентификацией MSI, но за счет использования URL-адреса управления и ответа URL-адреса управления отличается от KUDU API. Кроме того, с помощью URL-адреса управления он создает зависимость для передачи / жесткого кодирования идентификатора подписки и группы ресурсов в ADF. Я, безусловно, стремлюсь достичь этого с помощью KUDU API, поскольку ответ важен для ADF для дальнейших действий. СПРАВОЧНИК ПО API KUDU - person Anish K; 16.08.2019

В большинстве документов MSDN указано, что для аутентификации сайта SCM следует использовать базовую аутентификацию. Ссылка: https://github.com/projectkudu/kudu/wiki/WebJobs-API#invoke-a-triggered-job

Но я могу обнаружить, что для аутентификации сайта SCM с помощью MSI ресурс должен быть 'https://management.core.windows.net/, а не https://management.azure.com '.

Итак, чтобы ответить на вышеуказанный вопрос, просто измените ресурс в Authentication, как показано ниже:

Authentication: MSI with resource as https://management.azure.com/

Ссылка: https://github.com/projectkudu/kudu/issues/2957#issuecomment-477890719, в котором говорится, что

при запросе токена MSI необходимо определить https://management.core.windows.net/ как ресурс, а не https://management.azure.com/.

Я определенно считаю, что это может быть полезно для доступа к KUDU с использованием аутентификации MSI.

person Anish K    schedule 17.08.2019