如何授予应用注册访问 Azure KeyVault 的权限?

时间:2021-06-11 15:45:39

标签: azure azure-keyvault

我在需要访问 Azure 中的 KeyVault 的 Ubuntu Linux 虚拟机上运行了一个 python 脚本。如果根据“应用注册”配置了以下环境变量。

AZURE_CLIENT_ID=<Client ID from App Registration>
AZURE_TENANT_ID=<Tenent ID from App Registration>
AZURE_CLIENT_SECRET=<SECRET Created in App Registration>

当我尝试访问 KeyVault 时,出现访问被拒绝错误。

Code: Forbidden
Message: The user, group or application 'appid=<APP_ID>;oid= 
<GUID_VALUE>;iss=https://sts.windows.net/<GUID_VALUE>/' does not have secrets get permission 
on key vault '<KEY_VAULT_NAME>;location=westus'. For help resolving this issue, please see 
https://go.microsoft.com/fwlink/?linkid=2125287
Inner error: {
    "code": "AccessDenied"
}

我想我得到了这个,因为 KeyVault 中没有角色分配,但是我可能错了。

当我尝试向 KeyVault 添加新角色分配时,“分配访问”下没有“应用注册”选项。我尝试了“用户、组或服务主体”和“用户分配的托管标识”,但总是收到错误消息“找不到用户、组或服务主体。”。

enter image description here

我在这里遗漏了什么?

1 个答案:

答案 0 :(得分:0)

<块引用>

我在这里遗漏了什么?

这里有几个问题:

  1. 您正在尝试为应用注册分配 RBAC 角色。您需要做的是为服务主体分配一个 RBAC 角色。要获取服务主体 ID,您需要转到 Azure AD 中的 Enterprise Applications 部分并找到服务主体的 ID(对象 ID)。

  2. 分配 Reader RBAC 角色不起作用,因为该角色用于管理 Key Vault 本身,而不是其中的数据。有两种方法可以解决这个问题:

  • 使用访问策略:您可以在 Azure Key Vault 中定义适当的访问策略,以向服务主体授予对密钥、机密和证书的访问权限。
  • 使用数据 RBAC 角色:您需要使用 RBAC 角色来管理 Key Vault 内的数据,而不是使用管理 RBAC 角色(如读者、贡献者等)。

有关详细信息,请参阅此链接:https://docs.microsoft.com/en-us/azure/key-vault/general/assign-access-policy-portal