我创建了一个 Azure Keyvault。我已将证书和私钥添加到 Keyvault。 keyvault 使用基于角色的访问控制。
我有一个 Azure AD 用户帐户,我正在尝试授予读取私钥的访问权限。
我已在保管库级别向用户授予以下权限:
我已授予个人证书以下权限:
请求失败,权限被拒绝。但是,如果我在保管库级别添加
Key Vault Certificate User
角色,请求就会成功。
文档这里明确指出:
Key Vault Certificate User
- 读取整个证书内容,包括秘密和密钥部分。仅适用于使用“Azure 基于角色的访问控制”权限模型的密钥保管库。因此,不仅确认了
Key Vault Certificate User
是访问证书的适当权限。他们还指出证书上的个人权限是可能的,尽管这不是最佳实践。
为什么当我在证书级别分配权限时我无法访问私钥,但在保管库级别分配权限时它工作正常?
最初,我将 Key Vault Reader 角色和读者角色分配给保管库级别的用户,并将 Key Vault 证书用户分配给用户:
现在,当我尝试下载引用此MsDoc的证书的私钥时,我得到了错误“调用者无权对资源执行操作”:
az login
az keyvault secret download --id https://rukkv3394.vault.azure.net/secrets/rukkpfx --file "C:\Users\rukmini\Desktop\certificate.pfx"
因此,作为解决方法,我尝试通过传递正确的证书范围来将用户 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
现在当我尝试下载证书私钥和公共元数据时,它成功了,如下所示:
az keyvault secret download --id https://rukkv3394.vault.azure.net/secrets/rukkpfx --file "C:\Users\rukmini\Desktop\certificate.pfx"
为了验证,我在 Key Vault 中又创建了一个证书,并为该证书的用户添加了角色:
当我尝试下载证书时,收到错误“调用者无权对资源执行操作”,如下所示:
通过使用上述解决方法,您可以授予对 Azure Key Vault 中的单个证书的访问权限。