允许我从密钥保管库读取证书的最小 Azure 角色 (RBAC) 是什么?

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

我有一个在托管标识上下文中运行的 Azure 应用服务。我希望我的应用程序能够使用

CertificateClient.DownloadCertificateAsync
从密钥保管库读取证书。

我需要授予我的托管身份一些权限才能做到这一点(否则我只会得到一个例外)。

“Reader”或“Key Vault Secrets User”不足以让它读取证书。

到目前为止,我发现让我的托管身份读取这些证书的最小角色 (RBAC) 是“Key Vault 证书官员”。我有点难过将该角色授予托管身份,因为据我了解,该角色还包括一些写入权限,我不确定托管身份应该具有这些权限。

我可以做得更好吗?授予托管身份权限以从密钥保管库读取证书的最小方法是什么?

azure x509certificate azure-keyvault rbac azure-managed-identity
5个回答
3
投票

我建议不要使用 RBAC,而是使用 Key Vault 访问策略。您可以对它们进行更具体的了解。

访问策略的好处在于它们非常细粒度,您可以选择一个或多个主体,并为不同的对象类型提供非常具体的访问权限。

例如,您可以创建一个仅允许“获取”访问证书的策略,该策略不允许在该级别写入、删除甚至列出——您必须确切地知道您想要读取哪个证书。

您可以使用 Azure 门户、CLI、Terraform 等通过多种方式创建访问策略。


1
投票

正如 @mherzig 所说,您可以依靠访问策略来正确实现这一目标。

也就是说,如果 RBAC 由于其他原因是强制性的,您可以选择创建自己的自定义角色

参考 Key Vault 提供商操作,您可以授予

DataAction
权限
Microsoft.KeyVault/vaults/certificates/read
以及您想要/需要的任何其他权限。

但是,文档中存在一个限制:“无法在管理组范围内分配具有 DataActions 的自定义角色。”

这样,您就可以实现最佳的最少访问原则,但当然,这会带来必须管理和维护自己的角色的成本,其中访问策略是 Key Vault 的内置功能。


1
投票

我在文档中发现: https://learn.microsoft.com/en-us/azure/app-service/configure-ssl-certificate?tabs=apex%2Cportal#import-a-certificate-from-key-vault

目前 Key Vault 证书仅支持 Key Vault 访问策略 但不是 RBAC 模型。


0
投票

“Key Vault Reader”似乎是正确的 RBAC 角色,以便读取证书。

https://learn.microsoft.com/en-us/azure/key-vault/general/rbac-guide?tabs=azure-cli

也就是说(我还没有测试过这一点),您可以使用“Key Vault Secrets User”将证书作为秘密读取


0
投票

根据 MS-Documentation,密钥“Vault Secrets User”应用于从 Vault 中将证书作为应用程序读取。

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