-1

我想最终得到一个服务帐户/委托人,它具有尽可能窄的最小权限。它需要将新的/更新的机密写入特定的 Azure Key Vault。因此,我想为此创建一个自定义角色并将该角色分配给服务帐户。我已经能够找到足够的文档来知道我需要一个类似的角色:

{
  "Name": "Vault-Secret-Write",
  "Description": "Allow writing new secrets to a particular Key Vault",
  "Actions": [ "Microsoft.KeyVault/vaults/secrets/write" ],
  "AssignableScopes": [ "MAGIC-GOES-HERE" ]
}

我无法找到可以帮助我确定范围的文档。如上所述,它应该尽可能窄,至少指向特定的 Key Vault,甚至是与全局通配符匹配的机密(例如 keyprefix*)。

4

1 回答 1

5

您的解决方案不正确。

Azure keyvault 由管理平面 ( Access control (IAM)) 和数据平面 ( Access policies) 保护,secrets由数据平面管理。即使您在管理平面中为您的用户owner/your custom rbac role服务主体提供 /,它也不允许您访问密钥库中的机密。

要解决您的问题,无需授予 RBAC 角色,只需导航到Access policies您的密钥库中,添加具有正确权限的用户/服务主体。在您的情况下,Set向您的用户/服务主体授予秘密权限,然后它将仅拥有密钥库的Set秘密权限。

在此处输入图像描述

有关安全访问密钥保管库的更多详细信息,您可以参考此链接

此外,如果您想测试您的解决方案,只需指定AssignableScopes以下内容,您就可以将您的用户/服务主体添加Access control (IAM)为您的密钥库中的自定义角色。然后你可以在不设置访问策略的情况下测试它来创建/更新秘密,你会得到一个禁止错误。

"AssignableScopes": [
    "/subscriptions/{subscription id}/resourceGroups/{resource group name}/providers/Microsoft.KeyVault/vaults/{keyvault name}"
  ]
于 2019-06-18T03:10:21.457 回答