

# 統合について
<a name="temporary-delegation-understanding-integration"></a>

オンボーディングプロセスが完了すると、IAM 一時委任との統合を構築することができます。完全な統合は、通常、次の 3 つの作業で構成されています。

## 1. ユーザーエクスペリエンスとワークフローの設計
<a name="temporary-delegation-user-experience"></a>

一時委任のワークフローを使って、顧客をガイドするフロントエンドのエクスペリエンスをパートナーアプリケーションに構築します。パートナーアプリケーションは以下を行う必要があります。
+ 顧客が一時的なアクセス許可を付与できる、オンボーディングまたは設定の明確なフローを提示します。このアクションに「IAM 一時委任を使ってデプロイする」といったわかりやすいラベルを付けます。
+ CreateDelegationRequest API が返すコンソールリンクを使用して、顧客を AWS マネジメントコンソールにリダイレクトし、委任リクエストを確認および承認します。
+ リクエストされたアクセス許可とその理由に関する適切なメッセージを提供します。顧客は、このメッセージを委任リクエストの詳細ページで確認できます。
+ AWS での承認が完了したら、アプリケーションへの顧客からの返信に対処します。

### 一時委任リクエストのベストプラクティス
<a name="temporary-delegation-request-best-practices"></a>

パートナーアプリケーション向けに一時委任を実装する場合は、以下の定義済みベストプラクティスに従って、顧客がリクエストの信頼性と正確性を検証できるようにします。

**1. リクエストメッセージにユーザー識別可能なコンテキストを含める**

委任リクエストメッセージには、ユーザー固有のコンテキストを含める必要があります。この情報は、ユーザーが既存のパートナーワークフローからリクエストを識別し、正当なリクエストを区別するのに役立ちます。リクエストメッセージで推奨される情報:
+ サービスにおける顧客のアカウント識別子またはユーザー名
+ WorkSpace 名、サブスクリプション ID、または組織識別子
+ アクセスする特定のリソース (クラスター名、プロジェクト名、環境)
+ この委任試行で生成された一意のトランザクションまたはリクエスト識別子

リクエストメッセージの例:

```
Request from Partner A workspace "production-analytics"
Account: user@example.com
Workspace ID: 1234ABCD
Cluster: ml-training-cluster-01
Request ID: 1111-2222-3333-4444
```

**2. (オプション) 委任を開始するときに AWS アカウント ID を含める**

顧客アカウント ID が利用可能な場合は、委任リクエストに含めます。この検証ステップでは、顧客のインテントと委任トークンの間に追加のバインドを作成します。

**3. セキュリティ検証用のリクエストメッセージを設計する**

アクセスを付与する前に顧客が確信を持って正当性を検証できるようにリクエストメッセージを構造化します。ユーザーエクスペリエンスの要件:
+ AWS にリダイレクトする前に、アプリケーションインターフェイスでリクエストメッセージを目立つように表示する
+ 顧客の現在のアクションに直接つながる明確で説明的な表現を使用する
+ あらゆる委任リクエストに適用できるような一般的なメッセージを避ける
+ リクエストが意図したワークフローと一致することを顧客が確認するのに十分な詳細を含める
+ 委任されたアクセスを受け取る AWS アカウント ID を表示する
+ アプリケーションがリクエストするアクセス許可を明確に説明する

顧客を AWS の同意画面にリダイレクトする前に、アプリケーションに確認通知を含めます。

```
⚠️ Redirecting to IAM Temporary Delegation
You are about to grant [Your Service Name] temporary access to your AWS account.

Before clicking "Allow" on the AWS consent screen:
• Verify the request details match your current action
• Confirm the AWS account ID matches your intended account
• Ensure you initiated this request from [Your Service Name]
```

**4. セッションバインディングの推奨事項**

AWS IAM がコア承認フローを処理する間、アプリケーションに以下のプラクティスを実装してセッションの整合性を強化します。
+ 委任の試行ごとに一意の単一使用のリクエスト識別子を生成する
+ 委任リクエストを顧客のアクティブなアプリケーションセッションに関連付ける
+ 委任プロセスに応じて、適切なリクエストの有効期限を実装する
+ 委任コールバックが元のリクエストコンテキストと一致することを確認する
+ セキュリティモニタリングのすべての委任リクエストの開始と完了をログに記録する

これらのベストプラクティスに従うことで、より安全な一時委任エクスペリエンスを実現できます。

## 2. API の統合
<a name="temporary-delegation-api-integration"></a>

IAM 一時委任 API を使用して、委任リクエストを送信および管理します。AWS アカウントが登録されると、次の API にアクセスできます。
+ *IAM CreateDelegationRequest* – 顧客の AWS アカウントの委任リクエストを作成します。この API は、リクエストの確認および承認用に、顧客をリダイレクトするコンソールリンクを返します。
+ *AWS STS GetDelegatedAccessToken* – 顧客が委任リクエストを承認した後、一時的な AWS 認証情報を取得します。顧客のアカウントでアクションを実行するときはこれらの認証情報を使用します。

統合により、リクエストの作成、ステータスのモニタリング、承認時の一時的な認証情報の取得など、委任リクエストのすべてのライフサイクルに対処できる必要があります。

## 3. リソース設定とオーケストレーション
<a name="temporary-delegation-resource-configuration"></a>

一時的な認証情報を取得したら、顧客の AWS アカウントで必要なワークフローを組み立ててリソースを設定します。これには、次のようなものがあります。
+ AWS サービス API を直接呼び出してリソースを作成および設定する
+ AWS CloudFormation テンプレートを使用してインフラストラクチャをデプロイする
+ 継続的なアクセスのため IAM ロールを作成する (アクセス許可の境界を使用する必要あり)

顧客は、委任の承認を再試行または変更する必要がある場合があるため、オーケストレーションのロジックはべき等とし、障害を適切に処理する必要があります。