你现在可以使用 Azure DevOps 服务连接,而不是 PAT 或构建会话令牌

💡 原文英文,约900词,阅读约需4分钟。
📝

内容提要

Azure DevOps 推出新的服务连接方式,使用 Microsoft Entra 工作负载身份(服务主体或托管身份)替代个人访问令牌(PAT),提升安全性,支持免 PAT 认证、最小权限、无持久密钥和审计追踪。配置时需先添加身份并分配权限,支持手动配置回退。该连接可用于跨组织仓库检出、模板引用、制品源访问、REST API 调用及脚本操作,并支持运行时参数选择连接。

🔎

延伸解读

安全优势与适用场景

该服务连接通过 Entra 工作负载身份替代 PAT,消除了持久密钥的存储和轮换需求,并支持按管道或任务级权限分配,降低共享账户风险。所有认证尝试都会记录在审计日志中,便于追踪。它适用于跨组织仓库检出、模板引用、制品源访问、REST API 调用及脚本操作,尤其适合需要跨组织协作或自动化场景。

配置前提与手动回退

创建服务连接前,必须先手动在 Entra 中添加服务主体或托管身份,并在 Azure DevOps 组织中将其添加为用户并分配权限。若用户缺少 Microsoft Graph 权限,自动创建联合凭据会失败,此时界面会提供手动配置回退,管理员需根据显示的 issuer 和 subject 手动添加联合凭据。

运行时参数与模板复用

新增的运行时参数支持在仓库资源中动态选择服务连接,使 YAML 模板可在不同组织或环境间复用,调用方只需传入连接名称。这简化了跨组织模板引用和资源访问的配置,减少了硬编码连接信息的维护成本。

Q&A

Azure DevOps 服务连接是什么?它如何替代 PAT 或会话令牌?

Azure DevOps 服务连接是一种新的连接方式,允许管道使用 Microsoft Entra 工作负载身份(服务主体或托管身份)进行认证,从而替代个人访问令牌(PAT)或会话令牌。它通过 Entra 联合凭据实现免 PAT 认证,无需存储和轮换令牌。

使用 Azure DevOps 服务连接有哪些安全优势?

安全优势包括:免 PAT 认证(无需创建、存储和轮换个人访问令牌)、最小权限(可使用管道级或任务级权限,而非共享构建服务账户权限)、无持久密钥(使用 Entra 联合凭据而非密码)、审计追踪(所有认证尝试记录在 Azure DevOps 审计日志中)。

如何配置 Azure DevOps 服务连接?需要哪些前提条件?

配置前,必须先添加服务主体或托管身份作为组织用户,并分配所需权限。然后创建服务连接,选择 Azure DevOps(预览),并选择已创建的身份。如果自动创建联合身份凭据失败,可以手动配置回退,界面会显示 issuer 和 subject,管理员可手动添加联合凭据。

Azure DevOps 服务连接可以用于哪些场景?

可用于:跨组织仓库检出、引用 YAML 模板、访问制品源(如 NuGet 源)、调用 Azure DevOps REST API(通过 Invoke REST API 任务)、以及在脚本中使用(通过 AzureCLI@3 任务)。还支持运行时参数选择连接,使模板可跨组织和环境复用。

如何使用 Azure DevOps 服务连接从另一个组织检出仓库?

在管道中定义仓库资源时,使用 type: git 和 endpoint 指定服务连接名称,例如:resources: repositories: - repository: external-repo type: git endpoint: my-azdo-connection name: 'external-project/external-repo' ref: 'refs/heads/main'。然后使用 checkout 步骤检出。

如何在脚本中使用 Azure DevOps 服务连接进行认证?

使用 AzureCLI@3 任务,设置 connectionType: 'azureDevOps' 和 azureDevOpsServiceConnection 为服务连接名称。这会创建 Entra 认证会话,可以使用 az devops 命令或获取访问令牌调用 REST API。例如,使用 az account get-access-token --resource "499b84ac-1321-427f-aa17-267ca6975798" 获取令牌。

Azure DevOps 服务连接是否支持跨组织访问?

是的,因为连接以 Microsoft Entra 身份认证,所以可以访问同一 Entra 租户下的其他 Azure DevOps 组织中的资源。

🏷️

标签

➡️

继续阅读