gpt4 book ai didi

没有 user_impersonation 的 Azure 资源管理 API,可能吗?

转载 作者:行者123 更新时间:2023-12-02 00:06:25 28 4
gpt4 key购买 nike

我正在尝试在 Azure 资源管理的上下文中找到应用程序权限的安全最佳实践。

目前,management.azure.com 仅列出了一项权限,它是management.azure.com/user_impersonation(预览版)。这种委托(delegate)用户模拟可能是一个严重的问题,并可能导致恶意应用程序接管帐户。

考虑这样一个场景:具有全局管理员角色同意的用户并向应用授予访问 token 。应用程序可以使用该 token 并对 azure 租户执行任何操作。

另一种情况是特权用户将贡献者角色分配给多个订阅。应用程序可能会滥用此用户授权的 token 来修改任何订阅中的资源。

与图形(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。

enter image description here

3) 转到 Azure 资源(根据您的要求订阅、资源组或管理组级别)并将 IAM/RBAC 角色添加到注册的应用程序。我在订阅级别将贡献者角色分配给 TestPermissions 应用程序。

enter image description here

4) 按照 client credential grant flow 请求 oauth2 访问 token 。您可以在 POST 请求正文中提供 client_id 和 client_secret,也可以将其作为 Authorization Basic base64 编码 header 提供(这就是我所做的)。保存访问 token 以供将来使用(直到过期)。

注意:我无法同时添加多个受众(范围)。如果您想获取图形 api 的 token ,可以通过将范围更改为 http://graph.microsoft.com/.default 来请求单独的 token 。

enter image description here

5) 使用上一步中捕获的访问 token 与 azure 资源管理器交互。您需要在每个对 https://management.azure.com 的请求的授权 header (此处未显示)中添加 jwt 持有者 token 。 。在此示例中,我正在为我的即用即付订阅之一创建一个名为 TestCreateRG003 的新资源组。

enter image description here

6) 让我们验证/验证资源是否在 Azure 中创建或更新。宾果游戏,他们在那里!应用程序可以读取/修改(基于 RBAC)azure 资源,而无需授予模拟权限。

enter image description here

关于没有 user_impersonation 的 Azure 资源管理 API,可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60461875/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com