我想最终获得一个服务帐户/本金,该帐户/本金具有最小的特权,并尽可能地窄。它需要将新的/更新的机密写入特定的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" ]
}
我找不到能够帮助我确定范围的文档。如上所述,它应该尽可能地窄,至少指向特定的密钥保管库,甚至指向与通配符匹配的机密(例如keyprefix *)。
答案 0 :(得分:3)
您的解决方案不正确。
Azure密钥库由管理平面(Access control (IAM)
)和数据平面(Access policies
)保护,secrets
由数据平面管理。即使您在管理平面中为用户/服务主体提供了owner
/ your custom rbac role
,它也不允许您访问密钥库中的机密。
要解决您的问题,无需授予RBAC角色,只需导航到密钥库中的Access policies
,然后以正确的权限添加用户/服务主体。在您的情况下,将Set
秘密权限授予您的用户/服务主体,那么它将仅对密钥库具有Set
秘密权限。
有关安全访问密钥库的更多详细信息,请参阅此link。
此外,如果您想测试解决方案,只需按如下所示指定AssignableScopes
,然后您就可以将用户/服务主体作为自定义角色添加到{ {1}}您的密钥库。然后,您可以测试它以创建/更新秘密,而无需设置访问策略,则会收到“禁止访问”错误。
Access control (IAM)