You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure CLI中无法为注册服务配置Key Vault访问策略的问题

解决Azure CLI配置Key Vault服务主体权限的问题

问题核心原因

你遇到的问题源于混淆了应用注册与服务主体的标识,以及未使用服务主体的正确身份参数:

  1. 服务主体没有UPN属性,因此--upn参数对服务主体无效;
  2. --spn/--object-id需要传入GUID格式的标识,而非应用的显示名称;
  3. 你使用的GUID是应用注册(Application Registration)的Object ID,而非服务主体(Service Principal)的Object ID——这是两个不同的安全实体,所以权限会被分配到"Unknown"主体,而非目标服务主体。

正确操作步骤

1. 获取服务主体的正确标识

先通过Azure CLI查询目标服务主体的Object ID或SPN(即应用注册的客户端ID):

# 按应用显示名称查找服务主体,返回Object ID和SPN
az ad sp list --display-name "app-web-service" --query "[].{ObjectId:id, SPN:appId}" -o table

如果存在多个同名服务主体,可以添加更精确的筛选条件,比如结合应用注册的客户端ID:

az ad sp list --filter "appId eq '<应用注册的客户端ID>'" --query "[].id" -o tsv

2. 配置Key Vault访问策略

使用查询到的服务主体Object ID执行命令:

az keyvault set-policy --name kv-holder --object-id <服务主体Object ID> --secret-permissions all

或者使用服务主体的SPN(客户端ID):

az keyvault set-policy --name kv-holder --spn <服务主体SPN(客户端ID)> --secret-permissions all

执行成功后,在门户的Key Vault访问策略中,就能看到权限被正确分配到"Application"区域的目标服务主体。

CLI配置相关文档参考

  • 直接在终端执行az keyvault set-policy --help,可以查看命令所有参数的详细说明,包括各标识参数的适用场景;
  • Azure官方文档中,关于Key Vault访问策略的CLI配置章节,明确区分了用户主体与服务主体的身份参数要求,重点强调服务主体需使用其Object ID或SPN(客户端ID)进行权限分配。

内容的提问来源于stack exchange,提问作者Konrad Viltersten

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 02:50:08