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

问题描述 投票:0回答:3

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

当前,仅列出了management.azure.com的一个权限,management.azure.com/user_impersonation(预览)。这种委派的用户假冒行为可能是一个严重的问题,并且可能导致恶意应用程序接管帐户。

考虑具有全局管理员角色的用户同意并授权该应用访问令牌的情况。应用程序可以使用令牌,并与天蓝色的租户一起做任何想要的事情。

另一种情况是特权用户将贡献者角色分配给多个订阅。该用户授权的令牌可能会被应用滥用,以修改任何订阅中的资源。

不同于图(graph.microsoft.com)api,您可以在其中手动选择权限(user.read),资源管理api只有一个选项-user_impersonation!

您可能会争论为什么特权用户会授权该操作,但人们会犯错误。我们的工作是通过设计来阻止或最小化此类风险。那么,允许应用程序天蓝色管理资源并使安全风险最小化的最佳方法是什么?

azure oauth-2.0 impersonation azure-management-api
3个回答
1
投票

确实,通过授予该权限,您允许应用程序充当you,并附带所有带来的权限。

当需要限制时,我看到的主要方式是您:

  • 在您的Azure AD中注册应用程序
  • 授予服务主体必要的角色(例如,特定资源的读者)
  • 在应用程序中设置租户ID,客户ID,客户机密等

这当然需要应用程序本身支持此方法。如果它仅允许通过模拟使用,则您需要信任或不使用它。


1
投票

感谢@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访问令牌。您可以在POST请求的正文中提供client_id和client_secret,也可以将其作为Authorization Basic base64编码的标头提供(这就是我所做的)。保存访问令牌以备将来使用(直到到期)。

注意:我无法同时添加多个受众群体(范围)。如果要获取图形api的令牌,可以通过将范围更改为http://graph.microsoft.com/.default

来请求单独的令牌

enter image description here

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

enter image description here

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

enter image description here


0
投票

让我看看是否可以回答这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.