【问题标题】:How to get client id of user assigned identity in an ARM template?如何在 ARM 模板中获取用户分配身份的客户端 ID?
【发布时间】: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 列在顶部的门户页面上,但不在属性列表中:(

这适用于用户分配的而非系统分配的身份。

有什么想法吗?

【问题讨论】:

    标签: azure templates identity azure-resource-manager clientid


    【解决方案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 不在属性列表中
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-22
      • 1970-01-01
      • 2013-12-01
      • 1970-01-01
      • 2021-04-12
      • 2017-01-22
      • 1970-01-01
      相关资源
      最近更新 更多