- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在 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。
3) 转到 Azure 资源(根据您的要求订阅、资源组或管理组级别)并将 IAM/RBAC 角色添加到注册的应用程序。我在订阅级别将贡献者角色分配给 TestPermissions 应用程序。
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 。
5) 使用上一步中捕获的访问 token 与 azure 资源管理器交互。您需要在每个对 https://management.azure.com 的请求的授权 header (此处未显示)中添加 jwt 持有者 token 。 。在此示例中,我正在为我的即用即付订阅之一创建一个名为 TestCreateRG003 的新资源组。
6) 让我们验证/验证资源是否在 Azure 中创建或更新。宾果游戏,他们在那里!应用程序可以读取/修改(基于 RBAC)azure 资源,而无需授予模拟权限。
关于没有 user_impersonation 的 Azure 资源管理 API,可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60461875/
通常,在阅读 OAuth2 时,您可以找到应在范围中定义权限的信息,以准确说明所需内容。我最近研究了 Microsoft 如何在其 Azure 门户中做到这一点。事实证明,访问门户时我获得的唯一范围是
通常,在阅读 OAuth2 时,您可以找到应在范围中定义权限的信息,以准确说明所需内容。我最近研究了 Microsoft 如何在其 Azure 门户中做到这一点。事实证明,访问门户时我获得的唯一范围是
我想知道 Azure 专家中是否有人可以澄清 New-AzureADApplication 的行为。当我在 PowerShell 中创建应用程序注册时,它似乎在 GUI 中的 Expose and A
我正在尝试在 Azure 资源管理的上下文中找到应用程序权限的安全最佳实践。 目前,management.azure.com 仅列出了一项权限,它是management.azure.com/user_
我正在尝试在 Azure 资源管理的上下文中找到应用程序权限的安全最佳实践。 目前,management.azure.com 仅列出了一项权限,它是management.azure.com/user_
我是一名优秀的程序员,十分优秀!