如何在 ARM 模板中获取用户分配身份的客户端 ID?
Posted
技术标签:
【中文标题】如何在 ARM 模板中获取用户分配身份的客户端 ID?【英文标题】:How to get client id of user assigned identity in an ARM template? 【发布时间】:2021-04-02 16:20:39 【问题描述】:试图在 azure ARM 模板中获取用户分配的身份的 ClientID。
我使用此行,它适用于其他属性,但不适用于 clientid。
"USER_ASSIGNED_IDENTITY_CLIENT_ID": "[reference(variables('IdentityName'), '2018-11-30', 'full').clientId]"
我认为可以使用“完整”客户端 ID。客户端 ID 列在顶部的门户页面上,但不在属性列表中:(
这适用于用户分配的而非系统分配的身份。
有什么想法吗?
【问题讨论】:
【参考方案1】:这行得通,
[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('IdentityName'))).clientId]
【讨论】:
【参考方案2】:当您获得系统分配的身份主体 ID 时,您可以像这样使用reference
:
reference(variables('IdentityName'), '2018-11-30', 'full').identity.principalId
系统分配的身份不是一个单独的资源,所以它直接在身份中显示主体ID。但是用户分配的标识是 Azure 中存在的资源,所以它在标识中显示如下:
如果您获取资源标识并显示其客户端 ID,也许更合适。
更新:
您可以获得所有用户分配的身份属性:
reference(variables('IdentityName'), '2018-11-30', 'full').identity.userAssignedIdentities
但是当你需要获取它的client id时,你需要使用resource id作为属性名。我认为你没有办法在模板中做到这一点。
【讨论】:
你是说在引用函数中我应该使用 ResourceID 而不是资源名称,如此处所示。reference(resourceName or resourceIdentifier, [apiVersion], ['Full'])
@WiredLessInTX 我不是这个意思。我的意思是获取信息的引用是正确的,但是您需要获取信息的属性,并且该属性取决于用户分配的身份。它是 Azure 中的一种资源。就像答案中显示的屏幕截图一样。 userAssignedIdentities
的属性很难得到。
在查看用户身份本身的可用属性时,它没有我想要的客户端。除非你向我展示这条线的样子,否则我看不出你的回答有什么帮助。但是感谢您的尝试!
@WiredLessInTX 它没有帮助吗?您想获取用户分配身份的客户端 ID,我已经向您展示了它在属性中的样子。
ClientID 不在属性列表中以上是关于如何在 ARM 模板中获取用户分配身份的客户端 ID?的主要内容,如果未能解决你的问题,请参考以下文章
ARM - 如何从存储帐户获取访问密钥,以便稍后在模板中的 AppSettings 中使用?
如何在 Windows 窗体应用程序中获取 *** 用户的当前用户身份?
为具有身份验证的应用服务部署 ARM 模板时自动创建应用服务标识