Azure DevOps Pipelines以哪个用户身份运行?如何查询指定管道运行身份?
Azure DevOps Pipelines运行身份查询与权限配置说明
你管理员的表述完全错误,不需要给所有开发人员授予Blob存储读写权限,相关规则和查询方法如下:
核心规则澄清
- 管道访问Azure资源的运行身份和触发人没有默认绑定关系,无论是手动触发还是定时/自动触发,默认都不会以触发人的个人身份执行Azure侧的操作。
- 你在管道编辑页顶部找到的安全选项卡,仅用于配置哪些人/组拥有管道的操作权限(比如触发、编辑、查看运行记录的权限),和管道运行时访问外部资源的身份配置完全无关,你在这里找不到对应入口是正常的。
查询指定管道实际运行身份的方法
- 打开目标管道的任意一次历史运行记录,进入执行日志页
- 找到你使用的
Azure Blob File Copy任务,展开详细日志,日志头部会明确打印当前任务关联的Azure服务连接名称、对应的身份主体(服务主体ID/托管身份ID),这个就是实际对Blob存储发起写入操作的身份。 - 如果你要调整这个身份,不要在管道安全页找,直接去项目设置的「服务连接」板块,找到任务里选中的那个Azure Resource Manager服务连接,里面定义的服务主体/托管身份就是管道访问Azure用的身份。
正确的权限配置方案
- 你只需要给上述查到的服务连接关联身份,分配目标存储账户的
Storage Blob Data Contributor角色即可满足写入要求,所有开发人员只要拥有管道的触发权限就能正常运行部署,完全不需要给个人账号配存储的读写权限,不存在粗粒度权限风险。 - 只有你显式在任务中开启「使用触发人身份访问」相关配置、并额外配置Azure AD联合身份认证的特殊场景下,管道才会以触发人身份访问Azure资源,默认配置下不会出现这种情况。
内容的提问来源于stack exchange,提问作者John Little
相关产品推荐
相关产品推荐

