Azure DevOps 如何配置自定义构建代理仅允许运行指定限定任务
自定义构建代理特权操作安全管控配置方案
要实现仅允许运行自定义特权任务、禁止通用脚本任务执行的需求,可按以下步骤完成配置:
1. 隔离专属代理池
- 新建独立的特权操作专用代理池,不与通用构建代理池混用
- 调整代理池权限,移除普通贡献者、默认构建服务账号的代理池使用权限,仅授权给受信任的管道或自定义特权任务的服务主体调用
2. 固化自定义特权任务
- 将所有需要管控的特权操作封装为专属自定义扩展任务,所有执行逻辑内置固化,不开放可注入自定义脚本的参数入口
- 自定义任务发布到组织任务库后,设置仅管理员可编辑更新,普通用户仅拥有使用权限
3. 代理侧任务禁用配置(核心管控逻辑)
在自定义构建代理的主机上配置环境变量禁用指定任务,具体操作如下:
- 首先收集所有需要禁止的通用任务ID,常用需禁用的任务ID包括:
- Az CLI任务:
6c731c3c-3c28-465e-94a2-5256d7d6a941 - PowerShell任务:
e213ff0f-5d5c-4791-802d-325c81994862 - Bash任务:
3689a2a2-c37f-45a6-9013-5e97e2c1b229 - Cmd命令行任务:
d9bafed4-0b18-4f50-9560-c444d500c629 - Azure PowerShell任务:
72a19319-ec23-4473-a067-86b4e29b7952
- Az CLI任务:
- Windows代理:新增系统环境变量,变量名为
DISABLE_PIPELINE_TASKS,变量值为逗号分隔的所有需禁用的任务ID,配置完成后重启代理服务生效 - Linux/macOS代理:在代理启动脚本中添加
export DISABLE_PIPELINE_TASKS=任务ID1,任务ID2,...,保存后重启代理进程生效
4. 本地执行兜底拦截
- 限制代理运行账号的权限,仅授予执行特权操作所需的最小权限,禁止该账号启动PowerShell、Az CLI、Bash等通用命令行工具
- 开启代理运行诊断日志,留存所有任务执行记录,定期审计排查绕过尝试
5. 管道权限加固
- 所有使用该特权代理池的管道设置为仅受信任的管理员可编辑,普通用户仅可触发运行,无权修改管道定义
提示:可根据实际业务需求调整禁用的任务范围,查询对应任务ID后补充到禁用列表即可,注意不要误添加自定义特权任务的ID。
内容的提问来源于stack exchange,提问作者Carl in 't Veld
相关产品推荐
相关产品推荐

