跨Azure订阅运行Logic Apps与Functions所需目标订阅权限咨询
Hey Kelly, let's walk through exactly what you need to set up here—no need for over-powered Owner accounts, we can stick to the principle of least privilege which is always best practice for Azure security.
一、目标订阅所需的权限配置
First, instead of using a user account with cross-subscription access, you should use managed identities for your Logic Apps and Azure Functions. This is the most secure approach because you don't have to manage credentials, and Azure handles identity lifecycle automatically.
Here's the breakdown of roles needed for each operation:
- 停止VM操作:给你的Logic App/Functions托管身份分配
Virtual Machine Contributor角色(在目标VM所在的资源组或订阅级别)。这个角色包含启动、停止、解除分配VM的权限。如果想更严格,可以创建自定义角色,只包含Microsoft.Compute/virtualMachines/deallocate/action这个具体的停止VM权限。 - 修改NSG设置:分配
Network Contributor角色。这个角色允许完全访问NSG等网络资源,支持添加/删除安全规则、关联NSG到子网等操作。 - 运行恶意软件扫描:如果使用Azure Defender内置的恶意软件扫描,分配
Security Contributor角色。这个角色可以管理安全策略并触发跨Azure资源的扫描。如果只需要针对特定VM触发扫描,也可以结合Virtual Machine Contributor和包含Microsoft.Security/assessments/trigger/action权限的自定义角色。
权限分配步骤:
- 在Azure门户中,导航到目标订阅(或包含VM/NSG的具体资源组)。
- 进入访问控制(IAM) > 添加 > 添加角色分配。
- 从角色列表中选择对应的角色(比如Virtual Machine Contributor)。
- 在分配访问权限至选项中选择托管标识,然后从列表中选中你的Logic App或Azure Functions的托管标识。
- 保存角色分配即可。
二、是否需要跨订阅Owner权限的账户?
简短回答:不需要。
使用托管标识完全不需要拥有跨订阅Owner权限的用户账户。托管标识只会被授予完成所需操作(停止VM、修改NSG、运行扫描)的最小必要权限,这比使用拥有两个订阅完全控制权的Owner账户安全得多——除非绝对必要,否则应避免使用Owner权限。
额外注意事项
- 始终遵循最小权限原则:只分配完成任务所需的最窄权限集合,内置角色过宽时可以用自定义角色实现更精细的控制。
- 如果有多个Logic Apps/Functions,可以使用单个用户分配的托管身份统一管理权限,简化配置流程。
- 配置完成后记得测试:运行一次测试工作流,确保Logic App能顺利执行所有操作,没有权限错误。
内容的提问来源于stack exchange,提问作者kay106

