【问题标题】:What is the minimal Azure role (RBAC) that lets me read certificates from a key vault?允许我从密钥保管库读取证书的最小 Azure 角色 (RBAC) 是什么?
【发布时间】:2021-12-14 14:50:33
【问题描述】:

我有一个在托管标识的上下文中运行的 Azure 应用服务。我希望我的应用能够使用 CertificateClient.DownloadCertificateAsync 从密钥库中读取证书。

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

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

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

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

【问题讨论】:

  • 啊,就是Azure权限的随机数生成器。 :)
  • 您好@clausAppel,您是否尝试过在密钥库中为托管身份提供访问策略,因为您只能在证书权限中提供获取。这是最低要求。

标签: azure x509certificate azure-keyvault rbac azure-managed-identity


【解决方案1】:

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

也就是说,如果出于其他原因强制要求 RBAC,您可以选择创建自己的 custom role

参考Key Vault provider operations,您可以授予DataAction 权限Microsoft.KeyVault/vaults/certificates/read 以及您想要/需要的任何其他权限。

但有一个限制,来自文档:“不能在管理组范围内分配具有 DataActions 的自定义角色。”

这样,您可以实现最佳的最少访问原则,但当然,在访问策略是 Key Vault 的内置功能的情况下,您必须管理和维护您自己的角色。

【讨论】:

    【解决方案2】:

    “Key Vault Reader”似乎是适合此任务的 RBAC 角色,以便读取证书。

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

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

    【讨论】:

    • “Key Vault 机密用户”角色不允许读取证书。 OP提到了,我可以确认。
    【解决方案3】:

    我建议不要使用 RBAC,而是使用 Key Vault access policies。您可以更具体地了解它们。

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

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

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

    【讨论】:

      猜你喜欢
      • 2020-10-19
      • 2022-01-19
      • 2020-06-28
      • 2021-07-28
      • 1970-01-01
      • 2022-01-18
      • 1970-01-01
      • 2020-04-04
      • 1970-01-01
      相关资源
      最近更新 更多