Azure Key Vault Service原理身份验证失败

时间:2020-06-30 16:37:02

标签: azure-keyvault service-principal

经过一天的努力,终于可以寻求帮助了。我正在尝试使用Azure Key Vault在Typescript应用程序中存储一些配置。我已经在Azure Active Directory和Key Vault中创建了服务原理。在“密钥保管箱”中,我已转到“角色分配”,并为应用程序指定了角色“密钥保管箱秘密”用户(应提供列表和读取权限)。据我所知,我的应用程序正在成功进行身份验证,但是当它请求一个秘密时,它得到的是403。我可能遗漏了什么步骤?

表明身份验证成功的日志 azure:identity:info IdentityClient: [https://login.microsoftonline.com/38e3589f-a40f-4fe6-beee-f4028442450e/oauth2/v2.0/token] token acquired, expires on 1593536920022

记录失败 The user, group or application 'appid=355ca45f-a94f-43e6-9234-65c713965c9b;oid=524f25bb-ee3f-4216-8474-1f01fd79f1f8;iss=https://sts.windows.net/38e3589f-a40f-4fe6-beee-f4028442450e/' does not have secrets get permission on key vault '<MyVault>;location=westus2'. For help resolving this issue, please see https://go.microsoft.com/fwlink/?linkid=2125287

2 个答案:

答案 0 :(得分:1)

我错过的步骤是添加访问策略。我不了解访问控制(IAM)和访问策略之间的区别,所以我不明白为什么两者都需要。希望这对其他人有帮助。

答案 1 :(得分:1)

我不了解访问控制(IAM)和访问策略之间的区别,所以我不明白为什么两者都需要。

实际上,要访问密钥库中的秘密,Access Policies中的许可就足够了。

对密钥库的访问分为两个部分:管理平面(Access control (IAM))和数据平面(Access Policies)。

管理平面中的权限使您可以管理密钥库,例如设置Key Vault标签后,数据平面中的权限使您可以对秘密,密钥,证书进行操作。

在您的情况下,即使您为应用程序(服务主体)在Access control (IAM)中授予RBAC角色,它也没有访问秘密的权限,因此您需要将其添加到{{1 }}。

您应该注意的是,有些角色有权添加访问策略,例如access policies,这意味着如果您将角色赋予您的应用程序,它将能够将其自身添加到访问策略中。但是,如果它没有将自身添加到访问策略中,则将没有数据平面权限。

有关更多详细信息,请参阅此文档-Secure access to a key vault