

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

# 外部 ID プロバイダー (IdP) 認証の設定
<a name="aws-devops-agent-security-setting-up-external-identity-provider-idp-authentication"></a>

外部 ID プロバイダー (IdP) 認証を使用すると、組織は Okta や Microsoft Entra ID などの既存の OIDC 互換 ID プロバイダーを使用して、 AWS DevOps エージェントスペースウェブアプリケーションへのユーザーアクセスを管理できます。ユーザーは、 AWS IAM アイデンティティセンターを必要とせずに、IdP から直接企業認証情報でサインインします。

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

外部 IdP 認証を設定する前に、以下を確認してください。
+ OIDC 互換 ID プロバイダー (Okta または Microsoft Entra ID)
+ ID プロバイダーへの管理者アクセス
+  AWS DevOps エージェントコンソールにアクセスするための管理者権限
+ エージェントスペースが設定済みまたは作成準備完了

## 仕組み
<a name="how-it-works"></a>

外部 IdP 認証を設定する場合:
+ ユーザーがエージェントスペースウェブアプリ URL に移動する
+ ID プロバイダーのログインページにリダイレクトされます。
+ 企業の認証情報を使用して認証すると、ウェブアプリにリダイレクトされます。
+ ウェブアプリケーションは、認証トークンをエージェントスペースにスコープされた有効期間の短い AWS 認証情報と交換します。

セッションは最大 8 時間有効です。認証情報は、ユーザーが再認証する必要なく、OIDC 更新トークンを使用して自動的に更新されます。

## 外部 IdP 認証の設定
<a name="configuring-external-idp-authentication"></a>

### ステップ 1: ID プロバイダーにアプリケーションを登録する
<a name="step-1-register-an-application-in-your-identity-provider"></a>

ID プロバイダーを選択し、対応するセットアップ手順に従います。

#### オプション A: Okta
<a name="option-a-okta"></a>

1. Okta 管理コンソールで、**アプリケーション** > **アプリケーション**に移動し、**アプリケーション統合の作成**を選択します。

1. サインイン方法として **OIDC - OpenID Connect** を選択し、**アプリケーションタイプとしてウェブ**アプリケーションを選択します。**[次へ]** を選択します。

1. アプリケーションのわかりやすい名前を設定する (例: `AWS DevOps Agent`)

1. **付与タイプ**で、以下がチェックされていることを確認します。
   + **認可コード** (デフォルト)
   + **更新トークン** — これはセッションの更新に必要です。有効になっていない場合、ユーザーはセッションを維持できません。

**注記**  
** Okta は、デフォルトで更新トークン許可タイプを有効にしません。明示的に有効にする必要があります。

1. **サインインリダイレクト URIs**は、現時点ではデフォルト値のままにしておきます。エージェントスペースの設定後に更新します。

1. **「割り当て**」で、アクセス権を持つユーザーまたはグループを割り当てます。

1. **[保存]** を選択します。

1. アプリケーションの**全般**タブで、次の値を書き留めます。
   + **クライアント ID**
   + **クライアントシークレット** — **コピー**を選択してこの値を安全に保存します

1. **Okta ドメイン**に注意してください。これは発行者 URL です (例: `https://dev-12345678.okta.com`)。

**注記**  
** ** サインオン**タブで、**発行者が Okta URL ** (動的ではない) **に設定**されていることを確認します。これにより、発行者の URL が安定します。

**注記**  
認可サーバーの**クレームタブの ID トークンにグループクレーム**を追加しないでください**。 AWS DevOps エージェントは IdP のグループメンバーシップを使用しません。

#### オプション B: Microsoft Entra ID
<a name="option-b-microsoft-entra-id"></a>

1. Azure ポータルで、**Microsoft Entra ID** > **アプリ登録** > **新規登録**に移動します。

1. わかりやすい名前を設定する (例: `AWS DevOps Agent`)

1. **サポートされているアカウントタイプ**で、組織に適したオプションを選択します (通常は**この組織ディレクトリのアカウントのみ**)。

1. 現時点では**、リダイレクト URI **は空白のままにしておきます。**登録**を選択する

1. アプリケーション**の概要**ページで、次の値を書き留めます。
   + **アプリケーション (クライアント) ID** — エージェントスペースを設定するときにクライアント ID として使用されます
   + **ディレクトリ (テナント) ID** — 発行者 URL の構築に使用されます

1. **証明書とシークレット** > **新しいクライアントシー**クレットに移動する
   + 説明と有効期限を設定する
   + シークレット**値****の追加**とコピーをすぐに選択する — 再度表示されません

1. Entra ID の発行者 URL はこの形式に従います。をステップ 5 のディレクトリ (テナント) ID `{tenant-id}`に置き換えます。
   + `https://login.microsoftonline.com/{tenant-id}/v2.0`

**注記**  
トークン設定 **でグループオプションクレーム****を有効にしないでください****。 AWS DevOps エージェントは IdP のグループメンバーシップを使用しません。

### ステップ 2: IdP 認証でオペレーターアプリを有効にする
<a name="step-2-enable-the-operator-app-with-idp-authentication"></a>

1.  AWS DevOps エージェントコンソールで、エージェントスペースを選択します。

1. **アクセス**タブに移動する

1. **ユーザーアクセス**で、**外部 ID プロバイダー**を選択します。

1. 設定フォームで、以下を設定します。
   + **ID プロバイダー** — ID プロバイダー (Okta または Microsoft Entra ID) を選択します。
   + **発行者 URL** — ID プロバイダーからの OIDC 発行者 URL
   + **クライアント ID** — 作成した OIDC アプリケーションのクライアント ID
   + **クライアントシークレット** — OIDC アプリケーションからのクライアントシークレット

1. **ID プロバイダーアプリケーションロール名**で、次の 3 つのオプションのいずれかを選択します。
   + **新しい DevOps エージェントロールの自動作成** (推奨) — 適切なアクセス許可を持つ新しいサービスロールを作成します
   + **既存のロールを割り当てる** — 既に作成した既存の IAM ロールを使用します。
   + **ポリシーテンプレートを使用して新しい DevOps エージェントロールを作成する** — 提供された詳細を使用して、IAM コンソールで独自のロールを作成します。

1. フォームの下部に表示される**コールバック URL** 警告アラートを確認します。この URL をコピーする — ユーザーがサインインする前に、ID プロバイダーの許可されたリダイレクト URIs に追加する必要があります。

1. [**Connect (接続)**] を選択します。

**Connect** を選択すると、コンソールに次の詳細を含む**外部 ID プロバイダー設定**が表示されます。
+ **プロバイダー** — 選択した ID プロバイダー
+ **発行者 URL** — 設定された OIDC 発行者 URL
+ **クライアント ID** — 設定されたクライアント ID
+ **IAM ロール ARN** — ユーザーアクセスに使用される IAM ロール
+ **コールバック URL** — ID プロバイダーでこの URL を許可されたリダイレクト URI として設定します。
+ **ログイン URL** — この URL を使用して、ID プロバイダーを介してウェブアプリケーションにアクセスします。

### ステップ 3: ID プロバイダーにコールバック URL を追加する
<a name="step-3-add-the-callback-url-to-your-identity-provider"></a>

#### Okta
<a name="okta"></a>

1. Okta 管理コンソールで、アプリケーションの**全般**タブに移動します。

1. **ログイン** で編集 を選択します**。**

1. コールバック URL **をサインインリダイレクト URI **として追加します。
   + `https://{agentSpaceId}.aidevops.global.app.aws/authorizer/idp/callback`

1. (オプション) **ログインの開始 URI** を設定して、Okta ダッシュボードから IdP 開始ログインを有効にします。
   + `https://{agentSpaceId}.aidevops.global.app.aws/authorizer/idp/login`

1. (推奨) **サインアウトリダイレクト URI** を追加して、ログアウト後にユーザーをウェブアプリにリダイレクトします。これを行わないと、ログアウト時にエラーページが表示されることがあります。
   + `https://{agentSpaceId}.aidevops.global.app.aws/authorizer/welcome`

1. **[保存]** を選択します。

#### Microsoft Entra ID
<a name="microsoft-entra-id"></a>

1. Azure ポータルで、アプリケーションの**認証**ページに移動します。

1. **プラットフォーム設定**で、**プラットフォームの追加** > **Web **を選択します。

1. コールバック URL を**リダイレクト URI **として入力します。
   + `https://{agentSpaceId}.aidevops.global.app.aws/authorizer/idp/callback`

1. (オプション) サインアウトリダイレクト URI を追加して、ログアウト後にユーザーをウェブアプリにリダイレクトします。
   + `https://{agentSpaceId}.aidevops.global.app.aws/authorizer/welcome`

1. **Configure **を選択する

### ステップ 4: 設定を確認する
<a name="step-4-verify-the-configuration"></a>

1. コンソールに表示される**ログイン URL** に移動します。
   + `https://{agentSpaceId}.aidevops.global.app.aws/authorizer/idp/login`

1. ID プロバイダーのログインページにリダイレクトされます

1. 会社の認証情報を使用してサインインする

1. 認証に成功すると、エージェントスペースウェブアプリにリダイレクトされます。

## IdP 設定の更新
<a name="updating-idp-configuration"></a>

クライアントシークレットは、切断せずにローテーションできます。

1.  AWS DevOps エージェントコンソールで、エージェントスペースを選択します。

1. **アクセス**タブに移動する

1. **外部 ID プロバイダー設定**で、**クライアントシークレットのローテーション**を選択します。

1. 新しい**クライアントシークレット**を入力する

1. **[保存]** を選択します。

他の IdP 設定フィールド (発行者 URL、クライアント ID、ID プロバイダーなど) を変更するには、既存の IdP を切断し、新しい IdP を設定する必要があります。

## ユーザーが エージェントスペースウェブアプリにアクセスする方法
<a name="how-users-access-the-agent-space-web-app"></a>

外部 IdP 認証を設定した後:
+ エージェントスペースのウェブアプリ URL を承認されたユーザーと共有する
+ ユーザーが URL に移動すると、ID プロバイダーのログインページにリダイレクトされます。
+ 認証情報を入力する (IdP で設定されている場合は MFA を完了する) と、エージェントスペースウェブアプリにリダイレクトされます。
+ セッションの自動更新 — 詳細については、[「セッション管理](#session-management)」を参照してください。

## セッション管理
<a name="session-management"></a>

エージェントスペースウェブアプリの外部 IdP セッションには、次の特性があります。
+ **セッション期間** — ブラウザセッションは最大 8 時間続きます。これは AWS DevOps エージェントでは設定できません。IdP のセッション有効期間が 8 時間を超える場合、ユーザーは認証情報を入力せずに次回のアクセス時に自動的に再認証される可能性があります。組織のセキュリティ要件に従って、IdP のセッションとトークンの有効期間を設定します。
+ **認証情報の更新** — セッションは OIDC 更新トークンを使用して自動的に更新され、ユーザーが再認証する必要はありません。
+ **多要素認証** — ID プロバイダーで設定されている場合にサポートされます。IdP はログイン中に MFA を処理します。 AWS DevOps エージェントで追加の設定は必要ありません

### ログアウト動作
<a name="logout-behavior"></a>

ユーザーがウェブアプリで**ログアウト**をクリックすると、次のようになります。

1. すべてのセッション Cookie はすぐにクリアされます

1. ユーザーは ID プロバイダーの OIDC ログアウトエンドポイントにリダイレクトされ、SSO セッションを終了します。

1. サインアウトリダイレクト URI が設定されている場合、ユーザーはウェブアプリのウェルカムページにリダイレクトされます。

### ユーザーアクセスの取り消し
<a name="revoking-user-access"></a>

ユーザーのアクセスをすぐに取り消すには、ID プロバイダーの管理ポータルでセッションを直接取り消すことができます。
+ **Okta** — Okta 管理コンソールで、**ディレクトリ** > **ユーザー**に移動し、ユーザーを選択し、**その他のアクション** > **ユーザーセッションのクリアを選択します。**
+ **Microsoft Entra ID** — Azure ポータルで、**ユーザー**に移動し、ユーザーを選択し、**セッションの取り消し**を選択します。

## セキュリティに関する考慮事項
<a name="security-considerations"></a>

**クライアントシークレットストレージ** — セットアップ時に指定したクライアントシークレットは、エージェントスペースの作成時にカスタマーマネージド KMS キーを指定した場合、またはサービス所有キーを使用して暗号化されます。初期設定後に API レスポンスで返されたり、コンソールに表示されたりすることはありません。

**クライアントシークレットのローテーション** — Entra クライアントシークレットには設定可能な有効期限があります。 AWS DevOps エージェントコンソールのクライアントシークレットのローテーションオプションを使用して、有効期限が切れる前にシー**クレットをロー**テーションするようにリマインダーを設定します。シークレットの有効期限が切れると、ユーザーはローテーションされるまでログインできなくなります。

**トークンの有効期間管理** — ID プロバイダーによって発行されたトークン (アクセストークン、更新トークン) の有効期間は、IdP の設定によって制御されます。IdP で適切なトークン有効期間を設定することをお勧めします。
+ **Okta** — **セキュリティ** > **API** > **認可サーバー** > **アクセスポリシー**でトークンの有効期間を設定する
+ **Microsoft Entra ID** — トークンライフタイム[ポリシーを使用してトークンライフタイム](https://learn.microsoft.com/en-us/entra/identity-platform/configurable-token-lifetimes)を設定する

**グループクレーム** — ID プロバイダーのトークン設定でグループクレームを有効にしないでください。 AWS DevOps エージェントは現在、IdP のグループメンバーシップを使用しません。

**ユーザー識別子** — AWS DevOps Agent はプロバイダー固有のクレームを使用してユーザーを一意に識別します。
+ **Okta** — ID トークンからの `sub`クレームを使用します
+ **Microsoft Entra ID** — ID トークンからの `oid` (オブジェクト識別子) クレームを使用します

これらの識別子はイミュータブルであり、監査目的で CloudTrail ログに表示されます。

## 外部 IdP の切断
<a name="disconnecting-external-idp"></a>

1.  AWS DevOps エージェントコンソールで、エージェントスペースを選択します。

1. **アクセス**タブに移動する

1. **ユーザーアクセス**で、**切断**を選択します。

1. 確認ダイアログに記載されている影響を確認し、確認します。

切断すると、次のようになります。
+ エージェントスペースから IdP 設定を削除する
+ ユーザーが外部 ID プロバイダー経由でログインできないようにする
+ IdP ユーザーアカウントに関連付けられた個々のチャットとアーティファクトの履歴を削除する

アクティブなユーザーセッションは、有効期限が切れるか、次の認証情報の更新が失敗するまで続行されます。

## トラブルシューティング
<a name="troubleshooting"></a>
+ **IdP へのリダイレクトが失敗**する — 発行者 URL が IdP の OIDC 検出エンドポイントと一致することを確認します。Okta の場合は、**Sign On** タブで**発行者が** **Okta URL** (**動的**ではない) に設定されていることを確認します。Entra の場合は、 の形式を使用します`https://login.microsoftonline.com/{tenant-id}/v2.0`。
+ **アクセス拒否またはポリシーエラー (Okta)** — ユーザーまたはそのグループが**割り当て**の下でアプリケーションに割り当てられていることを確認します。**サインオン** > **サインオンポリシー**ルールを確認します。
+ **ログイン後の IdP 設定エラー** — ID プロバイダーが更新トークンを返さなかった。`offline_access` スコープと更新トークンのグラントタイプが有効になっていることを確認します。
  + **Okta** — アプリケーションの**全般**タブに移動し、**グラントタイプの**下の**トークンの更新**チェックボックスを有効にします
  + **Entra** — **API アクセス許可**に移動し、 `offline_access`が委任されたアクセス許可の下にリストされていることを確認します。
+ **認証は成功しましたが、ウェブアプリケーションにエラーが表示されます** — IdP のリダイレクト URI が、 AWS DevOps エージェントコンソールに表示される**コールバック URL** と正確に一致することを確認します。
+ **認証の失敗** — IdP で**グループ**オプションクレームが有効になっている場合は、無効にします。 AWS DevOps エージェントはグループクレームを使用しません。
+ **IdP 認証後にログインが失敗**する — Entra の場合、アプリケーション**マニフェスト**`null`で `requestedAccessTokenVersion` が に設定されていないことを確認します。Okta の場合は、**発行者 URL** が正しいことを確認します。
+ **ログアウト (Okta) をクリックした後のエラーページ** — ログアウト後に`post_logout_redirect_uri`エラーが表示された場合は、Okta アプリケーションの**全般**タブに**サインアウトリダイレクト URI** `https://{agentSpaceId}.aidevops.global.app.aws/authorizer/welcome`として を追加します。
+ **ユーザーはログアウト後に ID プロバイダーページに留まる (Entra)** — ログアウト後にユーザーをウェブアプリケーションにリダイレクトするには、Entra アプリケーションの**認証**ページで**リダイレクト URI** `https://{agentSpaceId}.aidevops.global.app.aws/authorizer/welcome`として を追加します。