连接到 Microsoft Azure
Azure DevOps Services | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018
注意
在 Microsoft Team Foundation Server (TFS) 2018 和更低版本中,生成和发布管道被称为“定义”,运行被称为“生成”,服务连接被称为“服务终结点”,阶段被称为“环境”,而作业被称为“阶段” 。
若要将应用部署到 Azure 资源 (到应用服务或虚拟机) ,需要 Azure 资源管理器 服务连接。
有关其他类型的连接以及有关创建和使用连接的一般信息,请参阅 有关生成和发布的服务连接。
使用自动化安全性创建 Azure 资源管理器服务连接
如果以下情况下,建议采用以下简单方法:
- 你已以Azure Pipelines组织和 Azure 订阅的所有者身份登录。
- 无需进一步限制通过服务连接访问的 Azure 资源的权限。
- 你未连接到 Azure Stack 或 Azure 政府 Cloud。
- 你未从 Azure DevOps Server 2019 或早期版本的 TFS 进行连接
在Azure DevOps中,从项目设置页打开“服务连接”页。 在 TFS 中,从顶部菜单栏中的“设置”图标打开 “服务 ”页。
选择“+ New service connection”并选择“Azure Resource Manager”。

指定下列参数。
参数 说明 连接名称 必需。 用于在任务属性中引用此服务连接的名称。 这不是 Azure 订阅的名称。 范围级别 选择“订阅”或“管理组”。 管理组 是有助于跨多个订阅管理访问、策略和合规性的容器。 订阅 如果选择了范围的订阅,请选择现有的 Azure 订阅。 如果未看到任何 Azure 订阅或实例,请参阅 Azure 资源管理器服务连接疑难解答。 管理组 如果选择了作用域的管理组,请选择现有的 Azure 管理组。 请参阅 “创建管理组”。 资源组 留空以允许用户访问订阅中定义的所有资源,或选择要限制用户访问权限的资源组, (用户只能访问该组中定义的资源) 。 创建新服务连接后:
- 如果使用经典编辑器,请选择在管道的 Azure 订阅 设置中分配的连接名称。
- 如果使用 YAML,请将连接名称作为值复制到代码
azureSubscription中。
若要部署到特定的 Azure 资源,该任务需要有关该资源的其他数据。
- 如果使用经典编辑器,请选择所需的数据。 例如,App 服务名称。
- 如果使用 YAML,请转到Azure 门户中的资源,然后将数据复制到代码中。 例如,若要部署 Web 应用,请将App 服务的名称复制到值
WebAppName中。
注意
遵循此方法时,Azure DevOps与Azure Active Directory (Azure AD) 连接,并使用有效期为两年的机密创建应用注册。 当服务连接接近两岁时,Azure AD显示此提示:证书或机密即将过期。新建一个。 在此方案中,必须刷新服务连接。
若要刷新服务连接,请在Azure DevOps门户中编辑连接并选择“验证”。 保存编辑后,服务连接将再有效两年。
另请参阅:排查 Azure 资源管理器服务连接问题。
如果使用此方法时遇到问题 ((例如下拉列表) 中未显示任何订阅),或者想要进一步限制用户的权限,则可以改用具有托管服务标识的服务主体或 VM。
使用现有服务主体创建 Azure 资源管理器服务连接
如果要使用预定义的一组访问权限,并且尚未定义合适的服务主体,请按照以下教程之一创建新的服务主体:
在Azure DevOps中,从项目设置页打开“服务连接”页。 在 TFS 中,从顶部菜单栏中的“设置”图标打开 “服务 ”页。
选择“+ New service connection”并选择“Azure Resource Manager”。

选择“服务主体” (手动) 选项,然后输入“服务主体详细信息”。

输入在引用此服务连接时要使用的用户友好 连接名称 。
选择环境名称 (,例如 Azure Cloud、Azure Stack 或 Azure 政府 Cloud) 。
如果未选择Azure 云,请输入环境 URL。 对于 Azure Stack,这类似于
https://management.local.azurestack.external选择所需的 范围级别 :
- 如果选择 “订阅”,请选择现有的 Azure 订阅。 如果未看到任何 Azure 订阅或实例,请参阅 Azure 资源管理器服务连接疑难解答。 |
- 如果选择 “管理组”,请选择现有的 Azure 管理组。 请参阅 “创建管理组”。 |
在 Azure 订阅对话框文本框中输入有关服务主体的信息:
- 订阅 ID
- 订阅名称
- 服务主体 ID
- 服务主体客户端密钥,或者,如果选择 了证书,请输入 *.pem 文件的证书和私钥部分的内容。
- 租户 ID
如果在Azure PowerShell窗口中下载并运行此 PowerShell 脚本,则可以获取此信息。 出现提示时,输入订阅名称、密码、角色 (可选) ,以及 Azure 云 (默认) 、Azure Stack 或 Azure 政府 云等云类型。
选择 “验证连接 ”以验证输入的设置。
创建新服务连接后:
- 如果在 UI 中使用,请选择在管道的 Azure 订阅 设置中分配的连接名称。
- 如果在 YAML 中使用连接名称,请将连接名称作为 azureSubscription 值复制到代码中。
如果需要,请修改服务主体以公开相应的权限。 有关详细信息,请参阅使用Role-Based 访问控制管理对 Azure 订阅资源的访问。 此博客文章 还包含有关使用服务主体身份验证的详细信息。
另请参阅:排查 Azure 资源管理器服务连接问题。
使用托管服务标识创建与 VM 的 Azure 资源管理器服务连接
注意
需要使用 Azure VM 上的自承载代理才能使用托管服务标识
可以在 Azure Active Directory (Azure AD) 中使用 Azure 托管服务标识配置基于 Azure 虚拟机 (VM 的代理) 。 这样,便可以使用系统分配的标识 (服务主体) 向基于 Azure VM 的代理授予对支持Azure AD的任何 Azure 资源的访问权限,例如密钥保管库,而不是在连接Azure DevOps中保留凭据。
在Azure DevOps中,从项目设置页打开“服务连接”页。 在 TFS 中,从顶部菜单栏中的“设置”图标打开 “服务 ”页。
选择“+ New service connection”并选择“Azure Resource Manager”。

选择 “托管标识身份验证 ”选项。

输入在引用此服务连接时要使用的用户友好 连接名称 。
选择环境名称 (,例如 Azure Cloud、Azure Stack 或 Azure 政府 Cloud) 。
在连接对话框的以下字段中输入订阅的值:
- 订阅 ID
- 订阅名称
- 租户 ID
创建新服务连接后:
- 如果在 UI 中使用,请选择在管道的 Azure 订阅 设置中分配的连接名称。
- 如果在 YAML 中使用连接名称,请将连接名称作为 azureSubscription 值复制到代码中。
确保 VM (代理) 具有适当的权限。 例如,如果代码需要调用 Azure 资源管理器,请使用 Azure AD 中的 Role-Based 访问控制 (RBAC) 为 VM 分配适当的角色。 有关详细信息,请参阅 如何对 Azure 资源使用托管标识? 并使用 Role-Based访问控制来管理对 Azure 订阅资源的访问。
另请参阅: 排查 Azure 资源管理器服务连接问题。
连接到 Azure 政府云
有关连接到 Azure 政府云的信息,请参阅:
连接到 Azure Stack
有关连接到 Azure Stack 的信息,请参阅:
帮助和支持
- 请查看疑难解答页面
- 在 Stack Overflow 上获取建议,还可随时在 Azure DevOps 开发者社区发布问题、搜索答案或提供功能建议。 支持页面。