如何为应用程序服务获取AzureMSI的引用?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (62)

我一直在测试最近发布的Azure托管服务标识(MSI),并使用本文中描述的ARM模板方法成功地为我们的App服务创建了MSI:How to use Azure Managed Service Identity (public preview) in App Service and Azure Functions

但是,我希望允许访问其他资源(如密钥库)上的托管身份。我已经能够通过门户完成这一任务,但需要能够在PowerShell中编写脚本,以便与我们的持续部署构建集成。

通过执行set-AzureRmKeyVaultAccessPolicycmdlet,我已经成功地使用PowerShell创建了访问。但是,我只能使用硬编码的对象id来完成这个任务,在创建msi之后,可以从门户手动复制和粘贴。

My question is, how in PowerShell can I get a reference to the MSI's object id, so that I can grant access to it on other resources? The only examples I can find (such as this one), refer only to VMs and not App Services.

提问于
用户回答回答于

你可以用Get-AzureADServicePrincipal.

$web=Get-AzureADServicePrincipal -SearchString "<name>"
$web.ObjectId

默认情况下,这个名称是您的web应用程序名称。

Update:

对于OP的场景,我们可以使用template to get a reference to an Azure MSI.

用户回答回答于

如果您想使用Azure RM PowerShell命令,请使用以下命令:

$(Get-AzureRmADServicePrincipal -SearchString $Name | where {$_.DisplayName -eq $Name}).Id

The where part is to make sure you have the specific SP and not multiple results starting with the same name.

编辑:即使这样,上面也可能产生多个值。一个更好的解决方案是像这样进一步过滤:

Get-AzureRmADServicePrincipal -SearchString $Name | where {($_.DisplayName -eq $Name) -and ($_.ServicePrincipalNames -match "https://identity.azure.net")}

所属标签

可能回答问题的人

  • Richel

    9 粉丝0 提问3 回答
  • 无聊至极

    6 粉丝504 提问2 回答
  • 学生

    8 粉丝476 提问2 回答
  • 风华一代

    3 粉丝469 提问2 回答

扫码关注云+社区

领取腾讯云代金券