如何在脚本中使用System.AccessToken创建Azure DevOps服务连接及配置权限
使用System.AccessToken创建Azure DevOps服务连接的权限要求
System.AccessToken对应的身份为「Project Collection Build Service ({OrgName})」和「{Project Name} Build Service ({Org Name})」两个服务账号,创建服务连接需要为这两个账号授予以下特定权限:
- 项目级权限(创建项目内服务连接必备):进入目标项目的「服务连接」页面,点击右上角「安全」,为两个账号授予以下权限:
- 创建服务连接
- 查看服务连接
- 管理服务连接权限(可选,若后续需要修改该服务连接的权限配置时使用)
- 项目集合级权限(创建跨项目共享、组织级服务连接必备):进入组织设置的「服务连接」安全页,为「Project Collection Build Service ({OrgName})」账号授予「创建服务连接」权限。
授权未生效的排查解决步骤
注意:全局的项目/组织权限不会自动继承到服务连接的安全配置,所有权限必须在服务连接对应的安全配置页单独授予才会生效。
- 检查流水线作业授权范围配置
进入目标项目的「项目设置」->「流水线」->「设置」,确认两个配置项:- 若你要创建跨项目的服务连接,需要关闭「限制作业授权范围为当前项目」开关
- 确认「禁用项目集合构建服务账号的访问」开关未开启
- 验证System.AccessToken的权限生效状态
在执行创建服务连接的流水线中添加临时验证步骤,执行以下命令核对权限是否已经正确授予:az devops security permission show --id 49b4801f-076c-450a-925b-96105f654e38 --subject "Project Collection Build Service ({OrgName})" --token "ServiceEndpoints/" - 确认服务连接类型的额外要求
部分需要对接外部资源的服务连接(如Azure ARM、GitHub服务连接),创建时除了Azure DevOps内的服务连接创建权限,还需要持有对应外部资源的合法访问凭证。若你使用System.AccessToken直接调用接口创建这类服务连接,需要将外部资源的凭证作为参数传入接口,否则会返回创建失败,该场景下无需改用个人PAT。
内容的提问来源于stack exchange,提问作者Anjali Loganathan
相关产品推荐
相关产品推荐

