

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Azure リソースの接続
<a name="connecting-azure-connecting-azure-resources"></a>

Azure リソースの統合により、 AWS DevOps Agent はインシデント調査中に Azure サブスクリプション内のリソースを検出して調査できます。エージェントは、リソース検出に Azure リソースグラフを使用し、Azure 環境全体のメトリクス、ログ、および設定データにアクセスできます。

この統合は、 AWS アカウントレベルで Azure を登録し、特定の Azure サブスクリプションを個々のエージェントスペースに関連付けるという 2 つのステップのプロセスに従います。

## 前提条件
<a name="prerequisites"></a>

Azure リソースを接続する前に、以下を確認してください。
+  AWS DevOps エージェントコンソールへのアクセス
+ ターゲットサブスクリプションにアクセスできる Azure アカウント
+ 管理者の同意方法: Microsoft Entra ID で管理者の同意を実行するアクセス許可を持つアカウント
+ アプリ登録方法の場合: フェデレーティッド ID 認証情報を設定するアクセス許可を持ち、 AWS アカウントで[アウトバウンド ID フェデレーション](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_enable-federation.html)が有効になっている Entra アプリケーション

**注:** エージェントスペース内から登録を開始することもできます。**セカンダリソース**に移動し、**追加**をクリックして **Azure** を選択します。Azure Cloud がまだ登録されていない場合は、コンソールが最初に登録を案内します。

## 管理者の同意による Azure リソースの登録
<a name="registering-azure-resources-via-admin-consent"></a>

管理者同意メソッドは、 AWS DevOps Agent マネージドアプリケーションで同意ベースのフローを使用します。

### ステップ 1: 登録を開始する
<a name="step-1-start-the-registration"></a>

1.  AWS マネジメントコンソールにサインインし、 AWS DevOps エージェントコンソールに移動します。

1. **機能プロバイダー**ページに移動する

1. **Azure Cloud** セクションを見つけて **Register** をクリックします。

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. 管理者の同意後、承認されたテナントのメンバーとして ID を検証するユーザー認可を求められます。

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>

アプリ登録メソッドは、フェデレーティッド ID 認証情報を使用して独自の Entra アプリケーションを使用します。

### ステップ 1: 登録を開始する
<a name="step-1-start-the-registration"></a>

1.  AWS DevOps エージェントコンソールで、**機能プロバイダー**ページに移動します。

1. **Azure Cloud** セクションを見つけて **Register** をクリックします。

1. **アプリ登録**方法を選択する

### ステップ 2: Entra アプリケーションを作成して設定する
<a name="step-2-create-and-configure-your-entra-application"></a>

コンソールに表示される手順に従って、次の操作を行います。

1.  AWS アカウントでアウトバウンド ID フェデレーションを有効にする (IAM コンソールで、**アカウント設定** → **アウトバウンド ID フェデレーション**に移動)

1. Microsoft Entra ID で Entra アプリケーションを作成するか、既存のアプリケーションを使用します。

1. アプリケーションでフェデレーション ID 認証情報を設定する

### ステップ 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 Portal で、ターゲットサブスクリプションに移動します。

1. **アクセスコントロール (IAM)** に移動する

1. **Add** > **Add role assignment** をクリックします。

1. **リーダー**ロールを選択し、**次へ** をクリックします。

1. **メンバーの選択**をクリックし、アプリケーション (管理者の同意のための **AWS DevOps エージェント**、またはアプリ登録のための独自の Entra アプリケーション) を検索します。

1. アプリケーションを選択し、**レビュー \$1 割り当て** をクリックします。

1. (オプション) エージェントが Azure Kubernetes Service (AKS) クラスターにアクセスできるようにするには、次の AKS アクセス設定を完了します。

**セキュリティ要件:** サービスプリンシパルには、**リーダー**ロール (およびオプションで以下に示す AKS 読み取り専用ロール) のみを割り当てる必要があります。リーダーロールは、エージェントを読み取り専用オペレーションに制限し、間接的なプロンプトインジェクション攻撃の影響を制限するセキュリティ境界として機能します。書き込みまたはアクションのアクセス許可を持つロールを割り当てると、プロンプトインジェクションの爆発範囲が大幅に増加し、Azure リソースが侵害される可能性があります。 AWS DevOps Agent は読み取りオペレーションのみを実行します。エージェントは 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 Service Cluster ユーザーロール**をアプリケーションに割り当てます。

Azure ポータルで、**サブスクリプション** → サブスクリプションの選択 → **アクセスコントロール (IAM)** → **ロールの割り当ての追加** → **Azure Kubernetes サービスクラスターユーザーロールの選択** → アプリケーション (管理者同意用の **AWS DevOps エージェント**、またはアプリ登録用の独自の Entra アプリケーション) への割り当てに移動します。

これは、サブスクリプション内のすべての AKS クラスターを対象としています。特定のクラスターに限定するには、代わりにリソースグループまたは個々のクラスターレベルで を割り当てます。

#### ステップ 2: Kubernetes API アクセス
<a name="step-2-kubernetes-api-access"></a>

クラスターの認証設定に基づいて 1 つのオプションを選択します。

**オプション A: Azure Role-Based Access Control (RBAC) for Kubernetes (推奨)**

1. まだ有効になっていない場合は、クラスターで Azure RBAC を有効にする: Azure Portal → AKS クラスター → **設定** → **セキュリティ設定** → **認証と認可** → **Azure RBAC** を選択する

1. 読み取り専用ロールの割り当て: Azure Portal → **サブスクリプション** → サブスクリプションの選択 → **アクセスコントロール (IAM)** → **ロールの割り当ての追加** → **Azure Kubernetes Service RBAC Reader** の選択 → アプリケーションへの割り当て

これは、サブスクリプション内のすべての 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. をサービスプリンシパルのオブジェクト ID `<SERVICE_PRINCIPAL_OBJECT_ID>`に置き換えます。これを見つけるには: Azure Portal → Entra ID → Enterprise Applications → search for the application name (**AWS DevOps Agent** for Admin consent, or your own Entra application for App Registration)。

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>

アクセスコントロールを強化するには、広範なリーダーロールではなく、 AWS DevOps Agent が使用するリソースプロバイダーのみを対象とするカスタム Azure ロールを作成できます。

```
{
  "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 Cloud 登録を完全に削除するには、**「機能プロバイダー**」ページに移動し、登録を削除します。最初にすべてのエージェントスペースの関連付けを削除する必要があります。