如何在Azure策略中排除Azure DevOps技术用户,允许其修改特定标签资源?
Azure策略排除特定用户/服务主体的实现方案
完全可以实现你的需求,有两种常用方式:
方式1:通过策略分配的例外设置(推荐)
这是最快捷的操作方式,不需要修改策略本身:
- 找到你已创建的那条拒变更策略的分配记录
- 进入「例外」配置页,添加Azure DevOps流水线使用的技术用户(即对应的服务主体)
- 保存后,该服务主体发起的所有变更操作都会被这条策略豁免,不会被拒绝
方式2:修改策略定义,内置排除逻辑
如果需要把排除规则固化到策略里,可以调整策略的policyRule,加入针对操作发起者的判断:
"policyRule": { "if": { "allOf": [ { "field": "tags['source']", "equals": "terraform" }, { "not": { "field": "identity.principalId", "equals": "你的Azure DevOps服务主体ID" } }, // 保留原有的资源变更动作判断,比如覆盖各类写入/更新操作 { "field": "action", "like": "*write" } ] }, "then": { "effect": "deny" } }
如果有多个需要排除的主体,把equals改成in,值换成主体ID数组即可,比如"in": ["主体ID1", "主体ID2"]。
补充说明:UI发起的操作一般用的是用户个人身份,而Azure DevOps流水线用的是独立服务主体,所以排除这个服务主体后,就能精准实现“只阻止UI变更,允许流水线操作”的目标。
内容的提问来源于stack exchange,提问作者Marvin Core
相关产品推荐
相关产品推荐

