You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何锁定Azure资源组禁止用户操作,允许Azure DevOps流水线(Terraform)执行?

解决方案

一、资源组锁定+允许DevOps流水线操作

可以通过Azure资源锁结合RBAC权限实现需求:

  • 给目标资源组添加CanNotDelete或ReadOnly锁(前者禁止删除,后者禁止所有修改/删除),直接阻断普通用户的违规操作。
  • 给Azure DevOps流水线使用的服务主体分配Resource Group Contributor权限,同时额外赋予该主体Microsoft.Authorization/locks/delete和Microsoft.Authorization/locks/write权限——因为资源锁默认会拦截所有变更请求,包括Terraform的操作,必须让DevOps身份拥有绕过锁的权限。
  • 可以直接在Terraform代码中定义资源锁,示例:
    resource "azurerm_management_lock" "prod_rg_lock" {
      name       = "prod-rg-protection-lock"
      scope      = azurerm_resource_group.prod.id
      lock_level = "CanNotDelete"
      notes      = "Prevent accidental deletion/modification of prod resources"
    }
    

二、避免本地测试误覆盖UAT/PROD

  • 用Terraform工作区隔离环境:给本地、UAT、PROD分别创建独立工作区,每个工作区对应专属的状态文件和Azure资源配置,从根源避免环境混淆。
  • 用变量控制资源命名:给不同环境的资源组设置差异化前缀(如rg-dev-xxx、rg-uat-xxx、rg-prod-xxx),本地测试时强制加载dev环境的变量文件,杜绝误操作生产资源组。
  • 给UAT/PROD流水线加审批:部署前必须经过人工确认,即使本地误触发流水线,也不会直接执行生产环境变更。

三、手动操作的折中方案

针对需要手动调整资源的场景,推荐权限分层策略:

  • 给普通用户默认分配Reader权限,仅允许查看资源。
  • 创建自定义RBAC角色,包含你需要的手动操作权限(如虚拟机扩容、重启、NSG规则修改等),仅授权给需要执行手动操作的特定用户/小组。
  • 开启Azure活动日志监控,记录所有资源变更操作(含手动和流水线),方便追溯异常操作。

内容的提问来源于stack exchange,提问作者KKI

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 17:22:06