如何授予对 Azure Key Vault 中单个证书的访问权限

问题描述 投票:0回答:1

我创建了一个 Azure Keyvault。我已将证书和私钥添加到 Keyvault。 keyvault 使用基于角色的访问控制。

我有一个 Azure AD 用户帐户,我正在尝试授予读取私钥的访问权限。

我已在保管库级别向用户授予以下权限:

  • 密钥库读取器
  • 读者

我已授予个人证书以下权限:

  • Key Vault 证书用户

请求失败,权限被拒绝。但是,如果我在保管库级别添加

Key Vault Certificate User
角色,请求就会成功。

文档这里明确指出:

  • Key Vault Certificate User
    - 读取整个证书内容,包括秘密和密钥部分。仅适用于使用“Azure 基于角色的访问控制”权限模型的密钥保管库。
  • 单个密钥、机密和证书角色分配的最佳实践 - 单个密钥、机密和证书权限应仅用于特定场景:在多个应用程序之间共享单个机密,例如,一个应用程序需要访问来自其他应用

因此,不仅确认了

Key Vault Certificate User
是访问证书的适当权限。他们还指出证书上的个人权限是可能的,尽管这不是最佳实践。

为什么当我在证书级别分配权限时我无法访问私钥,但在保管库级别分配权限时它工作正常?

azure-active-directory azure-keyvault azure-rbac
1个回答
0
投票

最初,我将 Key Vault Reader 角色和读者角色分配给保管库级别的用户,并将 Key Vault 证书用户分配给用户:

enter image description here

现在,当我尝试下载引用此MsDoc的证书的私钥时,我得到了错误“调用者无权对资源执行操作”

az login

az keyvault secret download --id https://rukkv3394.vault.azure.net/secrets/rukkpfx --file "C:\Users\rukmini\Desktop\certificate.pfx"

enter image description here

因此,作为解决方法,我尝试通过传递正确的证书范围来将用户 Key Vault 证书用户分配给用户:

az role assignment create --role "Key Vault Certificate User" --assignee [email protected] --scope /subscriptions/SubID/resourcegroups/RGName/providers/microsoft.keyvault/vaults/KeyVaultName/secrets/CertificateName

enter image description here

现在当我尝试下载证书私钥和公共元数据时,它成功了,如下所示:

az keyvault secret download --id https://rukkv3394.vault.azure.net/secrets/rukkpfx --file "C:\Users\rukmini\Desktop\certificate.pfx"

enter image description here

enter image description here

为了验证,我在 Key Vault 中又创建了一个证书,并为该证书的用户添加了角色:

enter image description here

当我尝试下载证书时,收到错误“调用者无权对资源执行操作”,如下所示:

通过使用上述解决方法,您可以授予对 Azure Key Vault 中的单个证书的访问权限。

© www.soinside.com 2019 - 2024. All rights reserved.