写入 Key Vault 秘密的 Azure 最低权限角色,特定于特定的保险库甚至特定的秘密名称(或全局通配符)
Azure least permission role to write a Key Vault secret, specific to a particular vault and even particular secret names (or globbed wildcard)
我想以一个服务 account/principal 结束,它的最小权限越小越好。它需要将 new/updated 个机密写入特定的 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 甚至是与 glob-wildcard(例如 keyprefix*)匹配的秘密。
您的解决方案不正确。
Azure keyvault 由管理平面(Access control (IAM)
) 和数据平面(Access policies
) 保护,secrets
由数据平面管理。即使您在管理平面中向您的 user/service 委托人提供 owner
/your custom rbac role
,它也不允许您访问密钥库中的秘密。
要解决您的问题,无需授予 RBAC 角色,只需导航到密钥库中的 Access policies
,添加具有正确权限的 user/service 主体。在你的情况下,给你的 user/service 委托人一个 Set
秘密权限,那么它将只拥有对密钥库的 Set
秘密权限。
有关安全访问密钥库的更多详细信息,您可以参考此link。
此外,如果你想测试你的解决方案,只需如下指定AssignableScopes
,然后你就可以添加你的user/service主体作为密钥保管库 Access control (IAM)
中的自定义角色。然后你可以在不设置访问策略的情况下测试create/update秘密,你会得到一个Forbidden错误。
"AssignableScopes": [
"/subscriptions/{subscription id}/resourceGroups/{resource group name}/providers/Microsoft.KeyVault/vaults/{keyvault name}"
]
我想以一个服务 account/principal 结束,它的最小权限越小越好。它需要将 new/updated 个机密写入特定的 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 甚至是与 glob-wildcard(例如 keyprefix*)匹配的秘密。
您的解决方案不正确。
Azure keyvault 由管理平面(Access control (IAM)
) 和数据平面(Access policies
) 保护,secrets
由数据平面管理。即使您在管理平面中向您的 user/service 委托人提供 owner
/your custom rbac role
,它也不允许您访问密钥库中的秘密。
要解决您的问题,无需授予 RBAC 角色,只需导航到密钥库中的 Access policies
,添加具有正确权限的 user/service 主体。在你的情况下,给你的 user/service 委托人一个 Set
秘密权限,那么它将只拥有对密钥库的 Set
秘密权限。
有关安全访问密钥库的更多详细信息,您可以参考此link。
此外,如果你想测试你的解决方案,只需如下指定AssignableScopes
,然后你就可以添加你的user/service主体作为密钥保管库 Access control (IAM)
中的自定义角色。然后你可以在不设置访问策略的情况下测试create/update秘密,你会得到一个Forbidden错误。
"AssignableScopes": [
"/subscriptions/{subscription id}/resourceGroups/{resource group name}/providers/Microsoft.KeyVault/vaults/{keyvault name}"
]