Кажется, я не могу заставить работать часть [reference (resource, apiversion, 'Full')] (то есть "Full") - кажется, неверный синтаксис? Шаблон руки отклонен - ​​что мне не хватает, чтобы использовать перегруженный параметр «Полный»? Не можете найти его в документации ARM?

азвертывании ресурса Microsoft.Web с новой функцией MSI после развертывания отображается GUID принципа для созданного пользователя. Снимок экрана ниже показывает структуру в ARM-шаблоне.

Каков наилучший способ получить этот GUID позже в конвейере, чтобы иметь возможность назначать права доступа в (например) хранилище озера данных?

Можно ли использовать для этого какую-либо из существующих функций шаблонов ARM?

Ответы на вопрос(2)

которое сработало для меня, было найдено в комментарияхВот.

По сути, вы создаете переменную для ресурса, который вы создаете с поддержкой MSI. Затем вы можете использовать переменную для извлечения конкретных значений tenantId и PrincipalId. Не идеально, но это работает. В моих примерах я настраиваю разрешения хранилища ключей для приложения-функции.

Чтобы создать переменную, используйте синтаксис ниже.

"variables": {
    "identity_resource_id": "[concat(resourceId('Microsoft.Web/sites', variables('appName')), '/providers/Microsoft.ManagedIdentity/Identities/default')]"
}

Чтобы получить фактические значения для tenantId и PrincipalId, обратитесь к ним со следующим синтаксисом:

{
    "tenantId": "[reference(variables('identity_resource_id'), '2015-08-31-PREVIEW').tenantId]",
    "objectId": "[reference(variables('identity_resource_id'), '2015-08-31-PREVIEW').principalId]"
}

Надеюсь, это поможет любому, кто столкнется с той же проблемой!

 Nuno André27 сент. 2018 г., 13:18
И даже лучше сфункции идентификатора ресурса: "[reference(resourceId('Microsoft.Web/sites', variables('appName')), parameters('apiVersion'), 'Full').identity.tenantId]"
 Jan_V24 июл. 2018 г., 21:25
Спасибо! Для полноты, если вы не хотите использовать переменную, вы также можете использовать следующее напрямую"tenantId": "[reference(concat('Microsoft.Web/sites/', parameters('webSiteName')), '2018-02-01', 'Full').identity.tenantId]",
 Mandar Jogalekar23 апр. 2018 г., 12:39
заслуживает больше голосов !! решил вопрос после обновления политик доступа :)
 martinoss20 нояб. 2018 г., 10:11
Я использовал это так:"tenantId": "[subscription().tenantId]", "objectId": "[reference(concat('Microsoft.Web/sites/', variables('app_name_backend')), '2016-08-01', 'Full').identity.principalId]"

https://github.com/rashidqureshi/MSI-Samples которые показывают: а) как предоставить доступ RBAC к ресурсам ARM; б) как создать политику доступа для keyvault, используя OID MSI.

 Rosstified19 сент. 2017 г., 01:09
Кажется, я не могу заставить работать часть [reference (resource, apiversion, 'Full')] (то есть "Full") - кажется, неверный синтаксис? Шаблон руки отклонен - ​​что мне не хватает, чтобы использовать перегруженный параметр «Полный»? Не можете найти его в документации ARM?

Ваш ответ на вопрос