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

Azure Git Repos锁定特定YAML及extends模板变更校验方案咨询

场景背景

当前存在两个归属不同团队的Azure Git Repos,权限边界如下:

  • Team1仅拥有所属Repo1的查看、贡献权限,Repo1内包含Entry.yaml文件
  • Team2仅拥有所属Repo2的查看、贡献权限,Repo2内包含Extends.yaml文件
  • Entry.yaml及Extends.yaml实际归属权均为Team2,Entry.yaml默认配置为引用Repo2中的Extends.yaml作为流水线扩展模板,现有配置如下:
resources:
  repositories:
    - repository: repoSource
      type: git
      name: Project1/repo2
extends:
  template: extends.yaml@repoSource

需要实现两个核心安全目标:

  1. 保留Team1对Repo1内其余文件的贡献权限,同时禁止Team1修改Entry.yaml,避免恶意替换扩展引用、直接在入口文件定义作业盗用生产服务连接执行未授权脚本
  2. 当流水线引用的extends模板被篡改或移除时,自动失效对应CI/CD作业,阻断流水线运行

方案1:Repo1入口文件细粒度权限控制

通过多层权限配置锁死Entry.yaml的修改入口,不影响Team1对其他文件的正常操作:

  • 配置路径级权限:进入项目设置-Repos-仓库列表,选中Repo1切换到权限配置页,先给Team1组保留仓库级别的「读取」「参与」默认权限,保证其可以正常修改仓库内其他文件;再进入路径权限配置项,选中根目录下的Entry.yaml,单独给Team1组配置该文件的「参与」「强制推送」「编辑策略」「管理权限」为拒绝,Azure DevOps的拒绝权限优先级最高,配置后Team1所有成员都无法直接修改、强制覆盖这个文件。
  • 叠加保护分支策略:将Repo1中用于触发正式流水线的分支(如main、release分支)设为保护分支,关闭直接推送权限,所有代码变更必须通过PR合并;同时在分支策略中添加路径校验规则,只要PR包含对Entry.yaml的修改,自动触发审批要求,必须由Team2指定的管理员组全部通过才能合并,作为路径权限的兜底校验。
  • 锁死流水线配置权限:将使用Entry.yaml作为入口的正式CI/CD流水线的编辑、配置权限收归Team2所有,给Team1仅开放流水线查看、排队运行权限,防止Team1成员修改流水线配置、将入口文件替换为自定义的其他YAML文件绕开限制。
  • 收紧生产服务连接权限:所有生产环境的服务连接关闭「为所有流水线授予访问权限」选项,改为仅允许预先授权的正式流水线调用,就算Team1成员私自新建流水线,也无法调用生产服务连接执行高危操作。

方案2:模板篡改/移除自动阻断机制

从模板引用、运行前校验、源端防护多个层面实现异常自动阻断:

  • 固定可信模板版本:修改Entry.yaml中的仓库资源配置,不要默认拉取Repo2对应分支的最新版模板,而是绑定Team2审核确认过的可信tag或提交哈希,配置示例如下:
resources:
  repositories:
    - repository: repoSource
      type: git
      name: Project1/repo2
      ref: refs/tags/v3.1.0-prod-official # 绑定经Team2审批的固定可信版本
extends:
  template: extends.yaml@repoSource

配置后如果Extends.yaml被篡改、删除,对应tag下的文件哈希会变化或者文件直接不存在,流水线启动时会因为拉取不到可信版本的模板直接失败,不会继续执行后续作业。

  • 配置运行前哈希校验:通过Azure DevOps服务钩子配置流水线启动前置检查,当流水线触发排队时,自动拉取本次运行要加载的Extends.yaml内容,计算文件哈希后和Team2预存在安全配置库中的可信哈希值做比对,如果哈希不匹配(证明内容被篡改)或者拉取文件失败(证明被移除),直接调用流水线取消接口终止本次运行,返回明确的阻断原因。
  • 开启模板权限强制隔离:在项目Pipelines设置中打开「扩展模板权限强制模式」,所有流水线的运行权限完全由被引用的Extends.yaml声明,就算模板被恶意篡改添加了未授权操作,只要模板没有提前声明对应生产服务连接的使用权限,作业也会因为权限不足直接失败。同时配置审计规则,只要Extends.yaml发生修改、删除操作,第一时间给Team2发送告警,临时禁用所有引用该模板的流水线,直到Team2完成内容审核、更新可信版本哈希后再恢复运行。
  • 强化模板源端防护:给Repo2中存放Extends.yaml的分支配置最高等级保护策略,禁止任何人直接推送,所有对模板的修改必须走PR流程,经过Team2安全负责人全员审批、通过静态代码扫描(检测无外发数据、提权、非法命令执行等恶意逻辑)后才能合并,从源头上降低模板被非法篡改的概率。

内容的提问来源于stack exchange,提问作者Loke Moon Ng

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 15:03:48