Как получить идентификатор клиента, присвоенного пользователю, в шаблоне ARM?

Вытягивает волосы, пытаясь получить идентификатор ClientID, назначенный пользователем, в шаблоне Azure ARM.

Я использую эту строку, которая работает для других свойств, но не для клиентов.

"USER_ASSIGNED_IDENTITY_CLIENT_ID": "[reference(variables('IdentityName'), '2018-11-30', 'full').clientId]"

Я думал, что будет доступен «полный» идентификатор клиента. Идентификатор клиента указан на странице портала вверху, но не в списке свойств :(

Это для идентификаторов, назначаемых пользователем, а не системой.

Любые идеи?


person WiredLessInTX    schedule 24.12.2020    source источник


Ответы (2)


Это работает,

[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('IdentityName'))).clientId]
person dtriana    schedule 19.01.2021

Когда вы получите идентификатор основного идентификатора, назначенный системой, вы можете просто использовать reference следующим образом:

reference(variables('IdentityName'), '2018-11-30', 'full').identity.principalId

Идентификатор, назначенный системой, не является отдельным ресурсом, поэтому он показывает идентификатор принципала непосредственно в идентификаторе. Но назначенное пользователем удостоверение - это ресурс, существующий в Azure, поэтому он отображается в удостоверении следующим образом:

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

Возможно, будет более подходящим, если вы получите идентификатор ресурса и покажете его идентификатор клиента.

Обновление:

Вы можете получить все назначенные пользователем свойства идентификации:

reference(variables('IdentityName'), '2018-11-30', 'full').identity.userAssignedIdentities

Но когда вам нужно получить идентификатор клиента, вам нужно использовать идентификатор ресурса в качестве имени свойства. Я думаю, у вас нет возможности сделать это в шаблоне.

person Charles Xu    schedule 24.12.2020
comment
Вы говорите, что в ссылочной функции я должен использовать ResourceID вместо имени ресурса, как показано здесь. reference(resourceName or resourceIdentifier, [apiVersion], ['Full']) - person WiredLessInTX; 24.12.2020
comment
@WiredLessInTX Я не это имел в виду. Я имею в виду, что ссылка подходит для получения информации, но вам нужно получить свойство информации, а свойство зависит от идентификатора, назначенного пользователем. Это ресурс в Azure. Как показано на скриншоте в ответе. Трудно получить собственность userAssignedIdentities. - person Charles Xu; 25.12.2020
comment
Если посмотреть на доступные свойства для самого идентификатора пользователя, у него нет клиента, которого я бы получил. Если вы не покажете мне, как будет выглядеть линия, я не пойму, как ваш ответ поможет. Но спасибо за попытку! - person WiredLessInTX; 26.12.2020
comment
@WiredLessInTX Не помогает? Вы хотите получить идентификатор клиента для назначенного пользователем идентификатора, и я показал вам, как это выглядит в свойствах. - person Charles Xu; 28.12.2020
comment
ClientID нет в списке свойств - person WiredLessInTX; 28.12.2020
comment
@WiredLessInTX Так какой идентификатор клиента вы имеете в виду? Насколько мне известно, идентификатор клиента - это присвоенное пользователем свойство идентификации. - person Charles Xu; 28.12.2020
comment
Если вы поместите это в вывод шаблона: reference(variables('IdentityName'), '2018-11-30', 'full') какие свойства возвращаются в объекте? - person bmoore-msft; 07.01.2021
comment
@ bmoore-msft Свойство идентификатора, назначенного пользователем. - person Charles Xu; 07.01.2021
comment
Спрашивал OP - это должно вернуть свойство clientId, и выше было упомянуто, что его там нет. - person bmoore-msft; 07.01.2021
comment
@ bmoore-msft Если вы используете назначенный пользователем идентификатор ресурса идентификатора в качестве IdentityName, вы можете изменить функцию на ссылку (переменные ('IdentityName'), '2018-11-30', 'full'). properties.clientId `. - person Charles Xu; 08.01.2021
comment
Я знаю, как это работает (работаю в ARM Team) - пытаюсь посмотреть, разблокирован ли OP. - person bmoore-msft; 11.01.2021
comment
@ bmoore-msft Хорошо, что я могу сделать, так это указать правильный путь, но я ничего не могу сделать, если покупатель не поймет этого или не попробует. - person Charles Xu; 12.01.2021
comment
Удостоверение @CharlesXu: [ссылка (переменные ('IdentityName'), '2018-11-30', 'full'). Properties.clientId] это правильно? - person twinkle hema; 13.05.2021