Pro*_*dip 2 impersonation azure oauth-2.0 azure-management-api
我正在尝试在天蓝色资源管理的上下文中找到应用程序权限的安全最佳实践。
目前,management.azure.com 仅列出了一项权限,即 management.azure.com/user_impersonation(预览版)。这种委托用户模拟可能是一个严重的问题,并可能导致恶意应用程序接管帐户。
考虑这样一个场景:具有全局管理员角色同意的用户并向应用程序授权访问令牌。应用程序可以使用该令牌并对 azure 租户执行任何它想要的操作。
另一种情况是特权用户将贡献者角色分配给多个订阅。应用程序可能会滥用该用户授权的令牌来修改任何订阅中的资源。
与图 (graph.microsoft.com) api 不同,您可以手动选择权限 (user.read),资源管理 api 只有一个选项 - user_impersonation!
您可能会争论为什么特权用户会授权该操作,但人们会犯错误。我们的工作是通过设计来阻止或最小化此类风险。那么,允许应用程序在azure中管理资源并最大程度地降低安全风险的最佳方式是什么?
感谢@juunas 提供大纲和提示。感谢@Gaurav 尝试解决我的问题。我能够修改订阅上的 azure 资源,而无需在 management.azure.com api 上授予 user_impersonation 权限。以下是步骤-
1)注册一个应用程序(在我的例子中是TestPermissions)
2)添加API权限(可选)。您不需要添加 management.azure.com。
3) 转到 Azure 资源(根据您的要求订阅、资源组或管理组级别)并将 IAM/RBAC 角色添加到注册的应用程序。我在订阅级别将贡献者角色分配给 TestPermissions 应用程序。
4) 按照客户端凭证授予流程请求 oauth2 访问令牌。您可以在 POST 请求正文中提供 client_id 和 client_secret,也可以将其作为 Authorization Basic base64 编码标头提供(这就是我所做的)。保存访问令牌以供将来使用(直到过期)。
注意:我无法同时添加多个受众(范围)。如果您想获取图形 api 的令牌,可以通过将范围更改为http://graph.microsoft.com/.default来请求单独的令牌
5) 使用上一步中捕获的访问令牌与azure资源管理器交互。您需要在对https://management.azure.com的每个请求的授权标头(此处未显示)中添加 jwt 持有者令牌。在此示例中,我正在为我的即用即付订阅之一创建一个名为 TestCreateRG003 的新资源组。
6) 让我们验证/验证资源是否在 Azure 中创建或更新。宾果游戏,他们在那里!应用程序可以读取/修改(基于 RBAC)azure 资源,而无需授予模拟权限。
| 归档时间: |
|
| 查看次数: |
2922 次 |
| 最近记录: |