

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 连接 Azure DevOps
<a name="connecting-azure-connecting-azure-devops"></a>

Azure DevOps 集成使 AWS DevOps 代理能够访问 Azure DevOps 组织中的存储库和管道执行历史记录。代理可以将代码更改和部署与操作事件关联起来，以帮助确定潜在的根本原因。

**注意：**Azure DevOps 管道可以使用 Azure 存储库或 Bitbucket 中的源代码。 GitHub无论源提供者如何，Azure DevOps 集成都提供对管道执行历史记录的访问权限。但是，要在调查期间访问实际源代码，必须通过支持的集成（例如）单独连接存储库[正在连接 GitHub](connecting-to-cicd-pipelines-connecting-github.md)。无法通过此集成直接访问 Bitbucket 中的源代码。

此集成遵循两个步骤的过程： DevOps 在 AWS 帐户级别注册 Azure，然后将特定项目与各个代理空间相关联。

## 先决条件
<a name="prerequisites"></a>

在连接 Azure 之前 DevOps，请确保你有：
+ 访问 AWS DevOps 代理控制台
+ 至少有一个包含存储库和管道历史记录的项目的 Azure DevOps 组织
+ 向你的 Azure DevOps 组织添加用户的权限
+ 对于管理员同意方法：有权在 Microsoft Entra ID 中进行管理员同意的帐户
+ 对于应用程序注册方法：具有配置联合身份凭证权限的 Entra 应用程序，并在您的 AWS 账户中启用了[出站联合身份验证](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_enable-federation.html)

**注意：**您也可以从代理空间内开始注册。导航到 “**管道**” 部分，单击 “**添加**”，然后选择 **Azure DevOps**。如果 Azure DevOps 尚未注册，则控制台会引导你先完成注册。

## DevOps 通过管理员同意注册 Azure
<a name="registering-azure-devops-via-admin-consent"></a>

管理员同意方法在 AWS DevOps 代理托管的应用程序中使用基于同意的流程。

### 第 1 步：开始注册
<a name="step-1-start-the-registration"></a>

1. 登录 AWS 管理控制台并导航到 AWS DevOps 代理控制台

1. 前往 “**能力提供者**” 页面

1. 找到 **Azure DevOps** 部分，然后单击 “**注册**”

1. 出现提示时输入你的 **Azure DevOps 组织名称**

### 第 2 步：完成管理员同意
<a name="step-2-complete-admin-consent"></a>

1. 点击继续-您将被重定向到 Microsoft Entra 管理员同意页面

1. 使用有权执行管理员同意的用户主账号登录

1. 审查 AWS DevOps 代理申请并授予同意

### 步骤 3：完成用户授权
<a name="step-3-complete-user-authorization"></a>

1. 管理员同意后，系统会提示您进行用户授权，以验证您作为授权租户成员的身份

1. 使用属于同一 Azure 租户的帐户登录

1. 授权后，您将重定向回 AWS DevOps 代理控制台，状态为成功

### 步骤 4：在 Azure 中授予访问权限 DevOps
<a name="step-4-grant-access-in-azure-devops"></a>

请参阅 DevOps下面的[在 Azure 中授予访问权限](#granting-access-in-azure-devops)。添加用户时搜索**AWS DevOps 代理**。

## DevOps 通过应用程序注册注册 Azure
<a name="registering-azure-devops-via-app-registration"></a>

应用程序注册在 Azure 资源和 Azure 之间共享 DevOps。如果你已经完成了 Azure 资源的应用程序注册，可以跳到在 Az [ure 中授予访问权限 DevOps](#granting-access-in-azure-devops)。

### 第 1 步：开始 ADO 应用程序注册
<a name="step-1-start-the-ado-app-registration"></a>

1. 在 AWS DevOps 代理控制台中，转到**功能提供者**页面

1. 找到 “A **zure 云**” 部分，然后单击 “**注册**”

1. 选择**应用程序注册**方法

### 第 2 步：创建和配置您的 Entra 应用程序
<a name="step-2-create-and-configure-your-entra-application"></a>

按照控制台中显示的说明执行以下操作：

1. 在您的 AWS 账户中启用出站身份联合（在 IAM 控制台中，前往**账户设置** → **出站联合身份验证**）

1. 在你的 Microsoft Entra ID 中创建 Entra 应用程序，或者使用现有的 Entra 应用程序

1. 在应用程序上配置联合身份凭证

### 第 3 步：提供注册详情
<a name="step-3-provide-registration-details"></a>

在注册表中填写以下内容：
+ **租户 ID** — 你的 Azure 租户标识符
+ **租户名称**-租户的显示名称
+ **客户端 ID** — Entra 应用程序的应用程序（客户端）ID
+ **受众**-联邦凭证的受众标识符

### 步骤 4：创建 IAM 角色
<a name="step-4-create-the-iam-role"></a>

当您通过控制台提交注册时，将自动创建 IAM 角色。它允许 AWS DevOps 代理使用凭据并调用`sts:GetWebIdentityToken`。

### 第 5 步：完成注册
<a name="step-5-complete-the-registration"></a>

1. 在 AWS DevOps 代理控制台中确认配置

1. 单击 “**提交**” 完成注册

### 步骤 6：在 Azure 中授予访问权限 DevOps
<a name="step-6-grant-access-in-azure-devops"></a>

请参阅 DevOps下面的[在 Azure 中授予访问权限](#granting-access-in-azure-devops)。添加用户时，搜索您在应用程序注册期间创建的 Entra 应用程序。

## 在 Azure 中授权访问权限 DevOps
<a name="granting-access-in-azure-devops"></a>

注册后，向你的 Azure DevOps 组织授予应用程序访问权限。管理员同意和应用程序注册方法的此步骤相同。

1. 在 Azure 中 DevOps，前往 **“组织设置” > “****用户**” > “**添加用户**”

1. 搜索应用程序（管理员同意**AWS DevOps 代理**或您自己的 Entra 应用程序注册应用程序）

1. 将访问级别设置为 “**基本**”

1. 在 “**添加到项目**” 下，选择您希望代理访问的项目

1. 在 **Azure DevOps 群组**下，选择**项目读取器**

1. 单击 “**添加**” 完成

**安全要求：**仅分配**项目读者**组。只读访问权限充当安全边界，将代理限制为只读操作，并限制间接提示注入攻击的影响。为群组分配写入或操作权限会大大增加提示注入的爆炸半径，并可能导致 Azure DevOps 资源受到损害。

## 将项目与代理空间关联
<a name="associating-a-project-with-an-agent-space"></a>

 DevOps 在帐户级别注册 Azure 后，将特定项目与您的代理空间相关联：

1. 在 AWS DevOps 代理控制台中，选择您的代理空间

1. 前往 “**功能**” 选项卡

1. 在 “**管道**” 部分中，单击 “**添加**”

1.  DevOps从可用提供程序列表中选择 **Azure**

1. 从可用项目的下拉列表中选择项目

1. 单击 “**添加**” 完成关联

## 管理 Azure DevOps 连接
<a name="managing-azure-devops-connections"></a>
+ **查看连接的项目**-在 “**功能**” 选项卡中，“**管道**” 部分列出了所有连接的 Azure DevOps 项目。
+ **移除项目**-要断开项目与代理空间的连接，请在 “**管道**” 部分将其选中，然后单击 “**删除**”。
+ **移除注册**-要完全删除 Azure DevOps 注册，请转到**功能提供者**页面并删除注册。必须先移除所有代理空间关联。