

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 連接 Azure 資源
<a name="connecting-azure-connecting-azure-resources"></a>

Azure 資源整合可讓 AWS DevOps 代理程式在事件調查期間探索和調查 Azure 訂閱中的資源。代理程式使用 Azure Resource Graph 進行資源探索，並可跨 Azure 環境存取指標、日誌和組態資料。

此整合遵循兩個步驟：在 AWS 帳戶層級註冊 Azure，然後將特定 Azure 訂閱與個別客服人員空間建立關聯。

## 先決條件
<a name="prerequisites"></a>

連接 Azure 資源之前，請確定您已：
+ 存取 AWS DevOps 代理程式主控台
+ 可存取目標訂閱的 Azure 帳戶
+ 針對管理員同意方法：具有在 Microsoft Entra ID 中執行管理員同意許可的帳戶
+ 對於應用程式註冊方法：具有設定聯合身分憑證許可的 Entra 應用程式，以及在 AWS 您的帳戶中啟用[傳出身分聯合](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_enable-federation.html) 

**注意：**您也可以從 代理程式空間內開始註冊。導覽至**次要來源**，按一下**新增**，然後選取 **Azure**。如果 Azure Cloud 尚未註冊，主控台會先引導您完成註冊。

## 透過管理員同意註冊 Azure 資源
<a name="registering-azure-resources-via-admin-consent"></a>

管理員同意方法使用以同意為基礎的流程搭配 AWS DevOps 代理程式受管應用程式。

### 步驟 1：開始註冊
<a name="step-1-start-the-registration"></a>

1. 登入 AWS 管理主控台並導覽至 AWS DevOps 代理程式主控台

1. 前往**功能提供者**頁面

1. 找到 **Azure 雲端**區段，然後按一下**註冊**

1. 選取**管理員同意**註冊方法

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

1. 檢閱請求的許可

1. 按一下以繼續 - 系統會將您重新導向至 Microsoft Entra 管理員同意頁面

1. 使用具有執行管理員同意許可的使用者主體帳戶登入

1. 檢閱並授予對 AWS DevOps Agent 應用程式的同意

### 步驟 3：完成使用者授權
<a name="step-3-complete-user-authorization"></a>

1. 管理員同意後，系統會提示您輸入使用者授權，以驗證您的身分為授權租用戶的成員

1. 使用屬於相同 Azure 租用戶的帳戶登入

1. 授權之後，系統會將您重新導向回成功狀態的 AWS DevOps 代理程式主控台

### 步驟 4：指派角色
<a name="step-4-assign-roles"></a>

請參閱以下[指派 Azure 角色](#assigning-azure-roles)。選取成員時搜尋 **AWS DevOps 代理**程式。

## 透過應用程式註冊註冊 Azure 資源
<a name="registering-azure-resources-via-app-registration"></a>

應用程式註冊方法使用您自己的 Entra 應用程式搭配聯合身分憑證。

### 步驟 1：開始註冊
<a name="step-1-start-the-registration"></a>

1. 在 AWS DevOps 代理程式主控台中，前往**功能提供者**頁面

1. 找到 **Azure 雲端**區段，然後按一下**註冊**

1. 選取**應用程式註冊**方法

### 步驟 2：建立和設定您的 Entra 應用程式
<a name="step-2-create-and-configure-your-entra-application"></a>

遵循主控台中顯示的指示，以：

1. 在 AWS 帳戶中啟用傳出聯合身分 （在 IAM 主控台中，前往**帳戶設定** → **傳出聯合身分**)

1. 在 Microsoft Entra ID 中建立 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-assign-roles"></a>

請參閱以下[指派 Azure 角色](#assigning-azure-roles)。搜尋您在選取成員時建立的 Entra 應用程式。

### 步驟 6：完成註冊
<a name="step-6-complete-the-registration"></a>

1. 在 AWS DevOps 代理程式主控台中確認組態

1. 按一下**提交**以完成註冊

## 指派 Azure 角色
<a name="assigning-azure-roles"></a>

註冊後，授予應用程式對 Azure 訂閱的讀取存取權。管理員同意和應用程式註冊方法的此步驟相同。

1. 在 Azure 入口網站中，導覽至您的目標訂閱

1. 前往**存取控制 (IAM)**

1. 按一下**新增** > **新增角色指派**

1. 選取**讀取器**角色，然後按一下**下一步**

1. 按一下**選取成員**，搜尋應用程式 (**AWS DevOps Agent** for Admin Consent 或您自己的 Entra 應用程式用於應用程式註冊）

1. 選取應用程式，然後按一下**檢閱 \$1 指派**

1. （選用） 若要讓代理程式存取 Azure Kubernetes Service (AKS) 叢集，請完成下列 AKS 存取設定。

**安全需求：**服務主體必須僅指派**讀取**器角色 （以及選擇性地指派下列 AKS 唯讀角色）。Reader 角色可做為安全界限，將代理程式限制為唯讀操作，並限制間接提示注入攻擊的影響。指派具有寫入或動作許可的角色會大幅增加提示注入的爆量半徑，並可能導致 Azure 資源遭到入侵。 AWS DevOps 代理程式只會執行讀取操作。代理程式不會修改、建立或刪除 Azure 資源。

### AKS 存取設定 （選用）
<a name="aks-access-setup-optional"></a>

#### 步驟 1：Azure Resource Manager (ARM) 層級存取
<a name="step-1-azure-resource-manager-arm-level-access"></a>

將 **Azure Kubernetes 服務叢集使用者角色**指派給應用程式。

在 Azure 入口網站中，前往**訂閱** → 選取訂閱 → **存取控制 (IAM)** → **新增角色指派** → 選取 **Azure Kubernetes 服務叢集使用者角色** → 指派給應用程式 (**AWS DevOps Agent** for Admin Consent 或您自己的 Entra 應用程式用於應用程式註冊）。

這涵蓋訂閱中的所有 AKS 叢集。若要限定特定叢集的範圍，請改為在資源群組或個別叢集層級指派 。

#### 步驟 2：Kubernetes API 存取
<a name="step-2-kubernetes-api-access"></a>

根據叢集的身分驗證組態選擇一個選項：

**選項 A：Kubernetes 的 Azure 角色型存取控制 (RBAC) （建議）**

1. 如果尚未啟用，請在叢集上啟用 Azure RBAC：Azure 入口網站 → AKS 叢集 → **設定** → **安全組態** → **身分驗證和授權** → 選取 **Azure RBAC**

1. 指派唯讀角色：Azure 入口網站 → **訂閱** → 選取訂閱 → **存取控制 (IAM)** → **新增角色指派** → 選取 **Azure Kubernetes Service RBAC 讀取器** → 指派給應用程式

這涵蓋訂閱中的所有 AKS 叢集。

**選項 B：Azure Active Directory (Azure AD) \$1 Kubernetes RBAC**

如果您的叢集已使用預設的 Azure AD 身分驗證組態，且您不想啟用 Azure RBAC，請使用此選項。這需要每個叢集`kubectl`的設定。

1. 將下列資訊清單儲存為 `devops-agent-reader.yaml`：

```
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: devops-agent-reader
rules:
  - apiGroups: [""]
    resources: ["namespaces", "pods", "pods/log", "services", "events", "nodes"]
    verbs: ["get", "list"]
  - apiGroups: ["apps"]
    resources: ["deployments", "replicasets", "statefulsets", "daemonsets"]
    verbs: ["get", "list"]
  - apiGroups: ["metrics.k8s.io"]
    resources: ["pods", "nodes"]
    verbs: ["get", "list"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: devops-agent-reader-binding
subjects:
  - kind: User
    name: "<SERVICE_PRINCIPAL_OBJECT_ID>"
    apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: devops-agent-reader
  apiGroup: rbac.authorization.k8s.io
```

1. `<SERVICE_PRINCIPAL_OBJECT_ID>` 以服務主體的物件 ID 取代 。若要尋找它：Azure Portal → Entra ID → 企業應用程式 → 搜尋應用程式名稱 (**AWS DevOps Agent** for Admin Consent 或您自己的 Entra 應用程式用於應用程式註冊）。

1. 套用至每個叢集：

```
az aks get-credentials --resource-group <rg> --name <cluster-name>
kubectl apply -f devops-agent-reader.yaml
```

**注意：**僅支援使用本機帳戶的叢集 （不含 Azure AD)。建議您在叢集上啟用 Azure AD 整合，以使用此功能。

### 最低權限自訂角色 （選用）
<a name="least-privileged-custom-role-optional"></a>

若要加強存取控制，您可以建立自訂 Azure 角色，範圍僅限於資源提供者 AWS DevOps 代理程式使用的 ，而非廣泛的讀取器角色：

```
{
  "Name": "AWS DevOps Agent - Azure Reader",
  "Description": "Least-privilege read-only access for AWS DevOps Agent incident investigations.",
  "Actions": [
    "Microsoft.AlertsManagement/*/read",
    "Microsoft.Compute/*/read",
    "Microsoft.ContainerRegistry/*/read",
    "Microsoft.ContainerService/*/read",
    "Microsoft.ContainerService/managedClusters/commandResults/read",
    "Microsoft.DocumentDB/*/read",
    "Microsoft.Insights/*/read",
    "Microsoft.KeyVault/vaults/read",
    "Microsoft.ManagedIdentity/*/read",
    "Microsoft.Monitor/*/read",
    "Microsoft.Network/*/read",
    "Microsoft.OperationalInsights/*/read",
    "Microsoft.ResourceGraph/resources/read",
    "Microsoft.ResourceHealth/*/read",
    "Microsoft.Resources/*/read",
    "Microsoft.Sql/*/read",
    "Microsoft.Storage/*/read",
    "Microsoft.Web/*/read"
  ],
  "NotActions": [],
  "DataActions": [],
  "NotDataActions": [],
  "AssignableScopes": [
    "/subscriptions/{your-subscription-id}"
  ]
}
```

## 將訂閱與客服人員空間建立關聯
<a name="associating-a-subscription-with-an-agent-space"></a>

在帳戶層級註冊 Azure 之後，請將特定訂閱與您的 代理程式空間建立關聯：

1. 在 AWS DevOps 代理程式主控台中，選取您的代理程式空間

1. 前往**功能**索引標籤

1. 在**次要來源**區段中，按一下**新增**

1. 選取 **Azure**

1. 提供您要關聯的 Azure 訂閱的訂閱 **ID** 

1. 按一下**新增**以完成關聯

您可以將多個訂閱與相同的代理程式空間建立關聯，讓代理程式在您的 Azure 環境中可見性。

## 管理 Azure 資源連線
<a name="managing-azure-resources-connections"></a>
+ **檢視連線訂閱** – 在**功能**索引標籤中，**次要來源**區段會列出所有連線的 Azure 訂閱。
+ **移除訂閱** – 若要中斷訂閱與客服人員空間的連線，請在**次要來源**清單中選取訂閱，然後按一下**移除**。這不會影響帳戶層級註冊。
+ **移除註冊** – 若要完全移除 Azure 雲端註冊，請前往**功能提供者**頁面並刪除註冊。必須先移除所有 Agent Space 關聯。