

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

# AWS DevOps エージェントセキュリティ
<a name="aws-devops-agent-security"></a>

このドキュメントでは、 AWS DevOps Agent のセキュリティ上の考慮事項、データ保護、アクセスコントロール、コンプライアンス機能について説明します。この情報を使用して、 AWS DevOps Agent がセキュリティおよびコンプライアンス要件を満たすように設計されている方法を理解します。

## マルチレイヤーセキュリティ
<a name="multi-layered-security"></a>

AWS DevOps Agent は、複数のレイヤーにセキュリティを実装します。より広範なアクセス許可がエージェントの IAM ロールに付与されている場合でも、エージェントは独自の内部アクセスコントロールを適用してアクションの範囲を制限します。たとえば、顧客が完全な Amazon S3 アクセス IAM ポリシーをエージェントの IAM ロールに追加すると、 AWS DevOps Agent は、トラブルシューティングの目的で`AWSLogs`プレフィックスの後のログのみが読み取られるようにします。

 AWS DevOps Agent の IAM アクセス許可を設定し、複数のレイヤーにセキュリティを実装するときは、最小特権の原則に従うことをお勧めします。多層防御により、単一の設定ミスによって環境のセキュリティが損なわれることはありません。

## エージェントスペース
<a name="agent-spaces"></a>

エージェントスペースは、 AWS DevOps エージェントの主要なセキュリティ境界として機能します。各エージェントスペース:
+ 独自の設定とアクセス許可で独立して動作します
+ エージェントがアクセスできる AWS アカウントとリソースを定義します。
+ サードパーティープラットフォームへの接続を確立します

エージェントスペースは、セキュリティを確保し、さまざまな環境やチーム間の意図しないアクセスを防ぐために、厳密な分離を維持します。

## リージョン処理とデータフロー
<a name="regional-processing-and-data-flow"></a>

AWS DevOps エージェントは、リージョンの処理機能を使用してグローバルに運用されています。エージェントは、設定されたエージェントスペース内のアクセス権が付与されたすべての AWS アカウントの AWS リージョンから運用データを取得します。このマルチリージョンのクロスアカウントデータ収集は、推論処理の地理的境界を尊重しながら、包括的なインシデント分析を実現します。

### Amazon Bedrock の使用とクロスリージョン推論
<a name="amazon-bedrock-usage-and-cross-region-inference"></a>

AWS DevOps エージェントは、推論リクエストを処理するために、地理的な最適なリージョンを自動的に選択します。これにより、利用可能なコンピューティングリソース、モデルの可用性を最大化し、最高のカスタマーエクスペリエンスを実現します。データは、エージェントスペースが作成されたリージョンにのみ保存されますが、次のリストで説明するように、入力プロンプトと出力結果がそのリージョン外で処理される場合があります。すべてのデータは Amazon の安全なネットワーク経由で暗号化されて送信されます。

AWS DevOps Agent は、次のように、推論リクエストをリクエスト元の地理的領域内の利用可能なコンピューティングリソースに安全にルーティングします。
+ 欧州連合を起点とする推論リクエストは、欧州連合内で処理されます。
+ 米国を起点とする推論リクエストは、米国内で処理されます。
+ オーストラリアを起点とする推論リクエストは、オーストラリア内で処理されます。
+ 日本国内からの推論リクエストは、日本国内で処理されます。
+ 推論リクエストがリストされていないエリアで発生した場合、デフォルトで米国内で処理されます。
+ DevOps エージェントと Bedrock は、顧客コンテンツを特定のリージョンに制限するサービスコントロールポリシー (SCPsまたは Control Tower の顧客ポリシーの影響を受けません。
+ Bedrock は、パフォーマンスと可用性を最適化するために、地域内の発信元リージョン以外のリージョンを使用してステートレス推論を実行する場合があります。

## ID とアクセス管理
<a name="identity-and-access-management"></a>

### 認証方法
<a name="authentication-methods"></a>

AWS DevOps エージェントには、 AWS DevOps エージェントスペースウェブアプリにログインするための 2 つの認証方法が用意されています。
+ **AWS アイデンティティセンターの統合** – プライマリ認証方法では、HTTP 専用 Cookie を使用したセッションベースの認証で OAuth 2.0 を使用します。 AWS アイデンティティセンターは、Okta、Ping Identity、Microsoft Entra ID などのプロバイダーを含む標準の OIDC および SAML プロトコルを通じて外部 ID プロバイダーとフェデレーションできます。このメソッドは、ID プロバイダーを介した多要素認証をサポートします。 AWS Identity Center はデフォルトで最大 12 時間のセッション期間に設定され、希望する期間に設定できます。
+ **IAM 認証リンク** – 別の方法では、既存の AWS マネジメントコンソールセッションから派生した JWT ベースのトークンを使用して、 AWS マネジメントコンソールからウェブアプリケーションに直接アクセスできます。このオプションは、完全な Identity Center 統合を実装する前に AWS DevOps エージェントを評価する場合や、Identity Center ベースの認証を通じて AWS DevOps Agent ウェブアプリケーションにアクセスできなくなった場合に管理アクセスを取得する場合に便利です。セッションは 10 分に制限されています。

### IAM ロール
<a name="iam-roles"></a>

AWS DevOps エージェントは IAM ロールを使用してアクセス許可を定義します。
+ **プライマリアカウントロール** – エージェントスペースを作成する AWS アカウントのリソースへのアクセスと、セカンダリアカウントロールへのアクセスをエージェントに許可します。
+ **セカンダリアカウントロール** – エージェントスペースに接続された追加の AWS アカウントのリソースへのアクセス権をエージェントに付与します。
+ **ウェブアプリケーションロール** – ウェブアプリケーションの AWS DevOps エージェント調査データと検出結果へのアクセス権をユーザーに付与します。

これらのロールは、最小特権の原則に従って設定し、調査に必要な読み取り専用アクセス許可のみを付与する必要があります。

## データ保護
<a name="data-protection"></a>

### データ暗号化
<a name="data-encryption"></a>

AWS DevOps エージェントは、すべての顧客データを暗号化します。
+ **保管時の暗号化** – すべてのデータは AWSマネージドキーで暗号化されます。
+ **転送中の暗号化** – 取得されたすべてのログ、メトリクス、ナレッジ項目、チケットメタデータ、およびその他のデータは、エージェントのプライベートネットワーク内および外部ネットワークへの転送中に暗号化されます。

### データストレージと保持
<a name="data-storage-and-retention"></a>

データはエージェントスペースが作成されたリージョンに保存されますが、上記の Amazon Bedrock の使用に関するセクションで説明されているように、推論処理はお客様の地域内で発生する可能性があります。

### 個人を特定できる情報 (PII)
<a name="personal-identifiable-information-pii"></a>

AWS DevOps エージェントは、調査、レコメンデーション評価、またはチャットレスポンス中に収集されたデータを要約する際に PII 情報をフィルタリングしません。PII データは、オブザーバビリティログに保存する前に編集することをお勧めします。

## エージェントジャーナルと監査ログ記録
<a name="agent-journal-and-audit-logging"></a>

### エージェントジャーナル
<a name="agent-journal"></a>

Incident Investigation and Prevention 機能はいずれも、次のような詳細なジャーナルを維持します。
+ すべての推論ステップと実行されたアクションをログに記録する
+ エージェントの意思決定プロセスに完全な透明性を持たせる
+ 一度記録するとエージェントは変更できず、プロンプトインジェクションなどの攻撃が重要なアクションを非表示にしないようにします。
+ 調査ページからすべてのチャットメッセージを含める

### AWS CloudTrail 統合
<a name="aws-cloudtrail-integration"></a>

すべての AWS DevOps エージェント API コールは、ホスティング AWS アカウント内の AWS CloudTrail によって自動的にキャプチャされます。CloudTrail によって収集されたデータを使用して、以下の情報を判断できます。
+ エージェントに対して行われたリクエスト
+ リクエストが行われた IP アドレス
+ リクエストを行ったユーザー
+ リクエストが行われた時刻

## プロンプトインジェクション保護
<a name="prompt-injection-protection"></a>

プロンプトインジェクション攻撃は、攻撃者が外部データに悪意のある指示を埋め込むときに発生します。 ウェブページやドキュメント、 生成 AI システムが後で処理します。 AWS DevOps Agent は、通常のオペレーションの一環として多くのデータソースをネイティブに消費します。 ログ、 リソースタグ、 およびその他の運用データ。 AWS DevOps Agent は、以下の保護手段を通じてプロンプトインジェクション攻撃から保護します。 ただし、接続されているすべてのデータソースと、それらのデータソースへのユーザーアクセスが信頼されていることを確認することが重要です。詳細については、[「 責任共有モデル](#aws-devops-agent-security)」セクションを参照してください。

プロンプトインジェクションの保護:
+ 書き込み**機能の制限** – エージェントが利用できるツールは、チケットの開封とサポートケースを除き、リソースを変更することはできません。これにより、悪意のある指示によってインフラストラクチャやアプリケーションが変更されるのを防ぐことができます。
+ **アカウント境界の適用** – AWS DevOps エージェントは、プライマリアカウントと接続されたセカンダリ AWS アカウントのエージェントに割り当てられたロールによって許可された境界内でのみ動作します。エージェントは、設定された範囲外のリソースにアクセスしたり変更したりすることはできません。
+ **AI 安全保護** – AWS DevOps エージェントは AI 安全レベル 3 (ASL-3) 保護を備えたモデルを使用します。これらの保護には、エージェントの動作に影響を与える前にプロンプトインジェクション攻撃を検出して防止する分類子が含まれます。
+ **イミュータブルな監査証跡** – エージェントジャーナルは、すべての推論ステップと実行されたアクションを記録します。一度記録すると、エージェントはジャーナルエントリを変更できないため、プロンプトインジェクション攻撃によって悪意のあるアクションが非表示になります。

 AWS DevOps Agent はプロンプトインジェクション攻撃に対して複数の保護レイヤーを提供しますが、特定の設定はリスクを高める可能性があります。
+ **カスタム MCP サーバーツール** – bring-your-own MCP 機能を使用すると、エージェントにカスタムツールを導入できるため、プロンプトインジェクションの機会が増える可能性があります。カスタムツールにはネイティブの AWS DevOps エージェントツールと同じセキュリティコントロールがない可能性があり、悪意のある指示はこれらのツールを意図しない方法で活用する可能性があります。詳細については、[「 責任共有モデル](#aws-devops-agent-security)」セクションを参照してください。
+ **許可されたユーザー攻撃** – AWS アカウント境界内または接続されたツール内で操作する権限を持つユーザーは、エージェントに対する攻撃を試みる可能性が高くなります。これらのユーザーは、ログやリソースタグなど、エージェントが消費するデータソースを変更できるため、エージェントが処理する悪意のある指示を簡単に埋め込むことができます。

これらのリスクを軽減するには:

1. エージェントスペースにデプロイする前に、カスタム MCP サーバーを慎重に確認してテストします。

   1. 読み取り専用アクションの実行のみが許可されていることを確認します。

   1. MCP サーバーによってアクセスされる外部ツールのユーザーが信頼されたエンティティであることを確認します。これは、これらのツールユーザーと AWS DevOps エージェントの間に確立された暗黙的な信頼関係が、DevOps エージェントとやり取りする AWS DevOps エージェントに依存しているためです。

1. エージェントにデータを提供するシステムへのアクセス権をユーザーに付与するときは、最小特権の原則を適用します。

1. エージェントスペースに接続されている MCP サーバーを定期的に監査する

1. 許可リストに登録された URLs から取得したコンテンツは、エージェントの動作を操作しようとする可能性があるため、許可リストには信頼できるソースのみを含めます。

## 統合セキュリティ
<a name="integration-security"></a>

AWS DevOps Agent は複数の統合タイプをサポートし、それぞれに独自のセキュリティモデルがあります。
+ **ネイティブ双方向統合** – エージェントにデータを送信し、エージェントから更新を受信できる組み込み統合。これにより、ベンダーの認証方法が使用されます。
+ **MCP サーバー** – OAuth 2.0 認証フローと API キーを使用して外部システムと安全に通信するリモートモデルコンテキストプロトコルサーバー。
+ **Webhook トリガー** – チケットやオブザーバビリティシステムなどのリモートサービスからの調査トリガー。ウェブフックは、セキュリティにハッシュベースのメッセージ認証コード (HMAC) を使用します。
+ **アウトバウンド通信** – Slack やチケットシステムなどの統合はエージェントから更新を受け取りますが、双方向通信はまだサポートされていません。

### 登録プロバイダー
<a name="registration-providers"></a>

一部の外部ツールはアカウントレベルで認証され、アカウント内のすべてのエージェントスペース間で共有されます。これらのツールを登録すると、アカウントレベルで 1 回認証され、各エージェントスペースはその登録された接続内の特定のリソースに接続できます。

以下のツールは、アカウントレベルの登録を使用します。
+ **GitHub** – 認証に OAuth フローを使用します。アカウントレベルで GitHub を登録すると、各エージェントスペースは GitHub 組織内の特定のリポジトリに接続できます。
+ **Dynatrace** – OAuth トークン認証を使用します。アカウントレベルで Dynatrace を登録した後、各エージェントスペースは特定の Dynatrace 環境またはモニタリング設定に接続できます。
+ **Slack** – OAuth トークン認証を使用します。アカウントレベルで Slack を登録した後、各エージェントスペースは特定の Slack チャネルチャネルに接続できます。
+ **Datadog** – OAuth フローで MCP を認証に使用します。アカウントレベルで Datadog を登録すると、各エージェントスペースは特定の Datadog モニタリングリソースに接続できます。
+ **New Relic** – API キー認証を使用します。アカウントレベルで New Relic を登録すると、各エージェントスペースは特定の New Relic モニタリング設定に接続できます。
+ **Splunk** – ベアラートークン認証を使用します。アカウントレベルで Splunk を登録すると、各エージェントスペースは特定の Splunk データソースに接続できます。
+ **GitLab** – アクセストークン認証を使用します。アカウントレベルで GitLab を登録すると、各エージェントスペースは特定の GitLab リポジトリに接続できます。
+ **ServiceNow** – OAuth クライアントキー/トークン認証を使用します。アカウントレベルで ServiceNow を登録すると、各エージェントスペースは特定の ServiceNow インスタンスまたはチケットキューに接続できます。
+ **一般公開アクセス可能なリモート MCP サーバー** – OAuth フローを認証に使用します。アカウントレベルでリモート MCP サーバーを登録すると、各エージェントスペースはそのサーバーによって公開されている特定のリソースに接続できます。

## ネットワーク接続
<a name="network-connectivity"></a>

AWS DevOps Agent は、サードパーティーのシステムとリモート MCP サーバーに接続して、調査やその他のオペレーションを実行します。

### AWS DevOps エージェントからシステムへのインバウンドトラフィック
<a name="inbound-traffic-from-aws-devops-agent-to-your-systems"></a>

AWS DevOps Agent は、サードパーティーシステムとリモート MCP サーバーへのアウトバウンド接続を開始し、インフラストラクチャへのインバウンドトラフィックとして到着します。このトラフィックを保護する方法は、ツールのホスト方法によって異なります。
+ **プライベートにホストされたツール** – ツールが AWS VPC 内から到達可能な場合は、 AWS DevOps Agent の*プライベート接続*を使用して、トラフィックを AWS ネットワークに隔離し、パブリックインターネットから切り離すことができます。詳細については、「[プライベートにホストされたツールへの接続](configuring-capabilities-for-aws-devops-agent-connecting-to-privately-hosted-tools.md)」を参照してください。
+ **パブリックにホストされたツール** – ツールがパブリックインターネット経由で到達可能であり、IP 許可リストまたはファイアウォールルールを使用する場合は、次の AWS DevOps エージェントソース IP アドレスからのインバウンドトラフィックを許可する必要があります。
  + アジアパシフィック (シドニー) (ap-southeast-2)
    + `13.237.95.197`
    + `13.238.84.102`
  + アジアパシフィック (東京) (ap-northeast-1)
    + `13.192.12.233`
    + `35.74.181.230`
    + `57.183.50.158`
  + ヨーロッパ (フランクフルト) (eu-central-1)
    + `18.158.110.140`
    + `52.57.96.160`
    + `52.59.55.56`
  + 欧州 (アイルランド) (eu-west-1)
    + `34.251.85.24`
    + `52.30.157.157`
    + `52.51.192.222`
  + 米国東部 (バージニア北部) (us-east-1)
    + `34.228.181.128`
    + `44.219.176.187`
    + `54.226.244.221`
  + 米国西部 (オレゴン) (us-west-2)
    + `34.212.16.133`
    + `52.89.67.212`
    + `54.187.135.61`

### VPC から AWS DevOps エージェントへのアウトバウンドトラフィック
<a name="outbound-traffic-from-your-vpc-to-aws-devops-agent"></a>

 AWS VPC から AWS DevOps エージェントへのアウトバウンドトラフィック ( の使用など[Webhook による DevOps エージェントの呼び出し](configuring-capabilities-for-aws-devops-agent-invoking-devops-agent-through-webhook.md)) では、VPC エンドポイントを使用して、このネットワークトラフィックを AWS ネットワークに分離したままにできます。詳細については、「[VPC エンドポイント (AWS PrivateLink)](aws-devops-agent-security-vpc-endpoints-aws-privatelink.md)」を参照してください。

## 責任共有モデル
<a name="shared-responsibility-model"></a>

### AWS 責任
<a name="aws-responsibilities"></a>

AWS は以下について責任を負います。
+ エージェントによって取得されたデータのセキュリティを維持する
+ エージェントで使用できるネイティブツールの保護
+  AWS DevOps エージェントを実行するインフラストラクチャの保護

### お客様の責任
<a name="customer-responsibilities"></a>

お客様は以下について責任を負います。
+ エージェントスペースへのユーザーアクセスの管理
+ 悪意のあるプロンプトインジェクションを試みるために使用される可能性のあるログ、CloudTrail イベント、チケットなどのサービスやリソースなど、エージェントに入力を提供する外部システムの信頼されたユーザーへのアクセスを制限します。
+ 接続されたすべてのデータソースに、プロンプトインジェクション攻撃の試みに使用される可能性が低い信頼できるデータがあることを確認します。
+ bring-your-own MCP サーバー統合を安全に運用する
+ エージェントに割り当てられた IAM ロールが適切にスコープ設定されていることを確認する
+ オブザーバビリティログやその他のエージェントデータソースに保存する前に PII データを編集する
+ Bringbring-your-own MCP サーバーなど、接続されたデータソースに読み取り専用アクセス許可のみを付与する推奨プラクティスに従う

## データ使用量
<a name="data-usage"></a>

AWS は、モデルをトレーニングしたり製品を改善したりするために、エージェントデータ、チャットメッセージ、または統合データソースからのデータを使用しません。 AWS DevOps エージェントスペースは、顧客の製品内フィードバックを使用してエージェントの応答と調査を改善しますが、サービス自体の改善には使用 AWS しません。

## コンプライアンス
<a name="compliance"></a>

プレビューでは、 AWS DevOps Agent は SOC 2、PCI-DSS、ISO 27001、または FedRAMP などの標準に準拠していません。 は、後でどのコンプライアンス証明書が利用可能になるか AWS を発表します。

# DevOps エージェント IAM アクセス許可
<a name="aws-devops-agent-security-devops-agent-iam-permissions"></a>

AWS DevOps エージェントは、サービス固有の AWS Identity and Access Management (IAM) アクションを使用して、その機能へのアクセスを制御します。これらのアクションにより、ユーザーが AWS DevOps エージェントコンソールと Operator Web App 内で実行できる操作が決まります。これは、エージェント自体がリソースの調査に使用する AWS サービス API アクセス許可とは異なります。

エージェントアクセスの制限の詳細については、「 [AWS アカウントのエージェントアクセスの制限」を参照してください。](https://docs.aws.amazon.com/devopsagent/latest/userguide/aws-devops-agent-security-limiting-agent-access-in-an-aws-account.html)

## エージェントスペース管理アクション
<a name="agent-space-management-actions"></a>

これらのアクションは、エージェントスペースの設定と管理へのアクセスを制御します。
+ **aidevops:GetAgentSpace** – ユーザーは、設定、ステータス、関連するアカウントなど、エージェントスペースの詳細を表示できます。ユーザーは、 AWS マネジメントコンソールでエージェントスペースにアクセスするには、このアクセス許可が必要です。
+ **aidevops:GetAssociation** – IAM ロールの設定や接続ステータスなど、特定のアカウントの関連付けに関する詳細をユーザーが表示できるようにします。
+ **aidevops:ListAssociations** – ユーザーは、プライマリ AWS アカウントとセカンダリアカウントの両方を含む、エージェントスペースに設定されたすべてのアカウント関連付けを一覧表示できます。

## 調査アクションと実行アクション
<a name="investigation-and-execution-actions"></a>

これらのアクションは、インシデント調査機能へのアクセスを制御します。
+ **aidevops:ListExecutions** – ユーザーは、タスクに関連する調査、緩和策、評価、チャット会話について、ID、ステータスなどの実行メタデータを表示できます。
+ **aidevops:ListJournalRecords** – 調査、緩和、評価、チャット会話中に相談されたエージェントの推論ステップ、実行されたアクション、データソースを示す詳細なログへのアクセスをユーザーに許可します。これは、エージェントが結論にどのように達したかを理解するのに役立ちます。

## チャット管理アクション
<a name="chat-management-actions"></a>

チャットを使用するには、次の IAM アクセス許可が必要です。
+ **aidevops:ListChats** – ユーザーがチャット会話履歴を一覧表示してアクセスできるようにします。
+ **aidevops:CreateChat** – ユーザーが新しいチャット会話を作成できるようにします。
+ **aidevops:SendMessage** – ユーザーがクエリを送信し、ストリーミングレスポンスを受信できるようにします。

## トポロジおよび検出アクション
<a name="topology-and-discovery-actions"></a>

これらのアクションは、アプリケーションリソースマッピング機能へのアクセスを制御します。
+ **aidevops:DiscoverTopology** – ユーザーがエージェントスペースのトポロジ検出とマッピングをトリガーできるようにします。このアクションは、 AWS アカウントをスキャンし、アプリケーションリソーストポロジを構築するプロセスを開始します。

## 防止アクションとレコメンデーションアクション
<a name="prevention-and-recommendation-actions"></a>

これらのアクションは、防止機能へのアクセスを制御します。
+ **aidevops:ListGoals** – ユーザーは、最近のインシデントパターンに基づいて、エージェントが取り組んでいる防止目標と目的を表示できます。
+ **aidevops:ListRecommendations** – ユーザーは、優先度やカテゴリなど、防止機能によって生成されたすべての推奨事項を表示できます。
+ **aidevops:GetRecommendation** – 特定のレコメンデーションに関する詳細情報の表示をユーザーに許可します。これには、防止したインシデントや実装ガイダンスが含まれます。

## バックログタスク管理アクション
<a name="backlog-task-management-actions"></a>

これらのアクションは、推奨事項をバックログタスクとして管理する機能を制御します。
+ **aidevops:CreateBacklogTask** – ユーザーがインシデント調査または防止評価タスクを作成できるようにします。
+ **aidevops:UpdateBacklogTask** – ユーザーが緩和計画を承認したり、アクティブな調査または評価をキャンセルしたりできます。
+ **aidevops:GetBacklogTask** – ユーザーが特定のタスクに関する詳細を取得できるようにします。
+ **aidevops:ListBacklogTasks** – ユーザーは、タスクタイプ、ステータス、優先度、または作成時間でフィルタリングされたエージェントスペースのタスクを一覧表示できます。

## ナレッジ管理アクション
<a name="knowledge-management-actions"></a>

これらのアクションは、エージェントが調査中に使用できるカスタムナレッジを追加および管理する能力を制御します。
+ **aidevops:CreateKnowledgeItem** – エージェントが参照するスキル、トラブルシューティングガイド、アプリケーション固有の情報などのカスタムナレッジ項目をユーザーが追加できるようにします。
+ **aidevops:ListKnowledgeItems** – ユーザーがエージェントスペースに設定されたすべてのナレッジ項目を表示できるようにします。
+ **aidevops:GetKnowledgeItem** – ユーザーが特定のナレッジ項目の詳細を取得できるようにします。
+ **aidevops:UpdateKnowledgeItem** – ユーザーが既存のナレッジ項目を変更して情報を最新の状態に保つことができます。
+ **aidevops:DeleteKnowledgeItem** – 関連性がなくなったナレッジ項目の削除をユーザーに許可します。

## AWS 統合アクションのサポート
<a name="aws-support-integration-actions"></a>

これらのアクションは、 AWS サポートケースとの統合を制御します。
+ **aidevops:InitiateChatForCase** – ユーザーが調査から直接 AWS Support とのチャットセッションを開始し、インシデントに関するコンテキストを自動的に提供できるようにします。
+ **aidevops:EndChatForCase** – ユーザーがアクティブな AWS サポートケースチャットセッションを終了できるようにします。
+ **aidevops:DescribeSupportLevel** – ユーザーがアカウントの AWS サポートプランレベルをチェックして、利用可能なサポートオプションを決定できるようにします。

## 使用状況とモニタリングアクション
<a name="usage-and-monitoring-actions"></a>

これらのアクションは、使用状況情報へのアクセスを制御します。
+ **aidevops:GetAccountUsage** – ユーザーは、調査時間、防止評価時間、チャットリクエストの AWS DevOps エージェント月間クォータ、および当月の使用状況を表示できます。

## 一般的な IAM ポリシーの例
<a name="common-iam-policy-examples"></a>

### 管理者ポリシー
<a name="administrator-policy"></a>

このポリシーは、すべての AWS DevOps エージェント機能へのフルアクセスを許可します。

```
{
  "Version": "2012-10-17",		 	 	 		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "aidevops:*",
      "Resource": "*"
    }
  ]
}
```

### オペレーターポリシー
<a name="operator-policy"></a>

このポリシーは、管理機能なしで調査および防止機能へのアクセスを許可します。

```
{
  "Version": "2012-10-17",		 	 	 		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "aidevops:GetAgentSpace",
        "aidevops:InvokeAgent",
        "aidevops:ListExecutions",
        "aidevops:ListJournalRecords",
        "aidevops:ListAssociations",
        "aidevops:GetAssociation",
        "aidevops:DiscoverTopology",
        "aidevops:ListRecommendations",
        "aidevops:GetRecommendation",
        "aidevops:CreateBacklogTask",
        "aidevops:UpdateBacklogTask",
        "aidevops:GetBacklogTask",
        "aidevops:ListBacklogTasks",
        "aidevops:ListKnowledgeItems",
        "aidevops:GetKnowledgeItem",
        "aidevops:InitiateChatForCase",
        "aidevops:EndChatForCase",
        "aidevops:ListChats",
        "aidevops:CreateChat",
        "aidevops:SendMessage",
        "aidevops:ListGoals",
        "aidevops:CreateKnowledgeItem",
        "aidevops:UpdateKnowledgeItem",
        "aidevops:DescribeSupportLevel",
        "aidevops:ListPendingMessages"
      ],
      "Resource": "*"
    }
  ]
}
```

### 読み取り専用ポリシー
<a name="read-only-policy"></a>

このポリシーは、調査とレコメンデーションへのビューのみのアクセスを許可します。

```
{
  "Version": "2012-10-17",		 	 	 		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "aidevops:GetAgentSpace",
        "aidevops:ListAssociations",
        "aidevops:GetAssociation",
        "aidevops:ListExecutions",
        "aidevops:ListJournalRecords",
        "aidevops:ListRecommendations",
        "aidevops:GetRecommendation",
        "aidevops:ListBacklogTasks",
        "aidevops:GetBacklogTask",
        "aidevops:ListKnowledgeItems",
        "aidevops:GetKnowledgeItem",
        "aidevops:GetAccountUsage"
      ],
      "Resource": "*"
    }
  ]
}
```

## AWS DevOps Agent のサービスにリンクされたロールの使用
<a name="using-service-linked-roles-for-aws-devops-agent"></a>

AWS DevOps エージェントは、 AWS Identity and Access Management (IAM) [サービスにリンクされたロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html)を使用します。サービスにリンクされたロールは、 AWS DevOps エージェントに直接リンクされた一意のタイプの IAM ロールです。サービスにリンクされたロールは、 AWS DevOps Agent によって事前定義されており、サービスがユーザーに代わって他の AWS サービスを呼び出すために必要なすべてのアクセス許可が含まれています。

### サービスにリンクされたロールのアクセス許可
<a name="service-linked-role-permissions"></a>

`AWSServiceRoleForAIDevOps` サービスにリンクされたロールは、`aidevops.amazonaws.com` サービスプリンシパルを信頼してロールを引き受けます。

ロールは、次のアクセス許可`AWSServiceRoleForAIDevOpsPolicy`を持つ 管理ポリシーを使用します。
+ `cloudwatch:PutMetricData` – 使用状況メトリクスを `AWS/AIDevOps` CloudWatch 名前空間に発行します。`AWS/AIDevOps` 名前空間のみを許可する`cloudwatch:namespace`条件によってスコープされます。
+ `vpc-lattice:CreateResourceGateway` – プライベート接続用の VPC Lattice リソースゲートウェイを作成します。サービスが `AWSAIDevOpsManaged` タグを持つリソースゲートウェイのみを作成できるように、 `aws:RequestTag/AWSAIDevOpsManaged`条件によってスコープされます。
+ `vpc-lattice:TagResource` – VPC Lattice リソースゲートウェイにタグを付けます。`aws:RequestTag/AWSAIDevOpsManaged` 条件によってスコープされます。
+ `vpc-lattice:DeleteResourceGateway` – VPC Lattice リソースゲートウェイを削除します。サービスが作成したリソースゲートウェイのみを削除できるように、 `aws:ResourceTag/AWSAIDevOpsManaged`条件によってスコープされます。
+ `vpc-lattice:GetResourceGateway` – VPC Lattice リソースゲートウェイに関する情報を取得します。サービスが作成したリソースゲートウェイのみを読み取ることができるように、 `aws:ResourceTag/AWSAIDevOpsManaged`条件によってスコープされます。
+ `ec2:DescribeVpcs`、`ec2:DescribeSubnets`、 `ec2:DescribeSecurityGroups` – リソースゲートウェイの設定に必要な VPC ネットワークリソースに関する情報を取得します。EC2 API は Describe 呼び出しのリソースレベルのアクセス許可をサポートしていないため、これらの読み取り専用アクションはすべての VPC リソースに適用されます。
+ `iam:CreateServiceLinkedRole` – リソースゲートウェイオペレーションに必要な VPC Lattice サービスにリンクされたロールを作成します。このアクセス許可は`vpc-lattice.amazonaws.com`サービスプリンシパルのみを対象としており、他のサービスのサービスにリンクされたロールの作成には使用できません。

### サービスリンクロールの作成
<a name="creating-the-service-linked-role"></a>

`AWSServiceRoleForAIDevOps` サービスリンクロールを手動で作成する必要はありません。 AWS DevOps エージェントの使用を開始すると、サービスにリンクされたロールが作成されます。

サービスがユーザーに代わってロールを作成できるようにするには、 アクセス`iam:CreateServiceLinkedRole`許可が必要です。最小特権の原則に従う`aidevops.amazonaws.com`には、 `iam:AWSServiceName`の条件を使用してこのアクセス許可の範囲を設定することをお勧めします。詳細については、「[サービスにリンクされたロールのアクセス許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-permissions)」を参照してください。

### サービスリンクロールの編集
<a name="editing-the-service-linked-role"></a>

サービスにリンクされたロール `AWSServiceRoleForAIDevOps` を編集することはできません。ロールの作成後は、さまざまなエンティティがロールを名前で参照する可能性があるため、ロールの名前を変更することはできません。ただし、IAM を使用してロールの説明を編集することはできます。詳細については、[「サービスにリンクされたロールの編集](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#edit-service-linked-role)」を参照してください。

### サービスリンクロールの削除
<a name="deleting-the-service-linked-role"></a>

 AWS DevOps エージェントを使用する必要がなくなった場合は、`AWSServiceRoleForAIDevOps`サービスにリンクされたロールを削除することをお勧めします。ロールを削除する前に、エージェントスペースで設定されたプライベート接続をすべて削除する必要があります。サービスにリンクされたロールを削除しても、サービスによって以前に作成された でタグ付けされた VPC Lattice `AWSAIDevOpsManaged` リソースゲートウェイは自動的に削除されません。これらのリソースゲートウェイが不要になった場合は、手動で削除する必要があります。詳細については、[「サービスにリンクされたロールの削除](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#delete-service-linked-role)」を参照してください。

## AWS AWS DevOps エージェントの管理ポリシー
<a name="aws-managed-policies-for-aws-devops-agent"></a>

AWS は、 によって作成および管理されるスタンドアロン IAM ポリシーを提供することで、多くの一般的なユースケースに対処します AWS。これらの AWS 管理ポリシーは、一般的なユースケースに必要なアクセス許可を付与するため、必要なアクセス許可を調査する必要がなくなります。詳細については、\$1IAM ユーザーガイド\$1 の「 [AWS 管理ポリシー](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)」を参照してください。

アカウントのユーザーにアタッチできる次の AWS 管理ポリシーは、 AWS DevOps エージェントに固有です。

### AIDevOpsAgentReadOnlyAccess
<a name="aidevopsagentreadonlyaccess"></a>

 AWS マネジメントコンソールを介して Amazon DevOps エージェントへの読み取り専用アクセスを提供します

```
{
	"Version": "2012-10-17",		 	 	 		 	 	 
	"Statement": [
		{
			"Sid": "AIDevOpsAgentReadOnlyAccess",
			"Effect": "Allow",
			"Action": [
				"aidevops:Get*",
				"aidevops:List*",
				"aidevops:SearchServiceAccessibleResource"
			],
			"Resource": "*"
		}
	]
}
```

### AIDevOpsAgentFullAccess
<a name="aidevopsagentfullaccess"></a>

 AWS マネジメントコンソールを介して Amazon DevOps エージェントへのフルアクセスを提供します

```
{
	"Version": "2012-10-17",		 	 	 		 	 	 
	"Statement": [
		{
			"Sid": "AIDevOpsAgentSpaceAccess",
			"Effect": "Allow",
			"Action": [
				"aidevops:CreateAgentSpace",
				"aidevops:DeleteAgentSpace",
				"aidevops:GetAgentSpace",
				"aidevops:ListAgentSpaces",
				"aidevops:UpdateAgentSpace"
			],
			"Resource": "*"
		},
		{
			"Sid": "AIDevOpsServiceAccess",
			"Effect": "Allow",
			"Action": [
				"aidevops:DeregisterService",
				"aidevops:GetService",
				"aidevops:ListServices",
				"aidevops:RegisterService",
				"aidevops:SearchServiceAccessibleResource"
			],
			"Resource": "*"
		},
		{
			"Sid": "AIDevOpsAssociationAccess",
			"Effect": "Allow",
			"Action": [
				"aidevops:AssociateService",
				"aidevops:DisassociateService",
				"aidevops:GetAssociation",
				"aidevops:ListAssociations",
				"aidevops:UpdateAssociation",
				"aidevops:ValidateAwsAssociations"
			],
			"Resource": "*"
		},
		{
			"Sid": "AIDevOpsWebhookAccess",
			"Effect": "Allow",
			"Action": [
				"aidevops:ListWebhooks"
			],
			"Resource": "*"
		},
		{
			"Sid": "AIDevOpsOperatorAppAccess",
			"Effect": "Allow",
			"Action": [
				"aidevops:DisableOperatorApp",
				"aidevops:EnableOperatorApp",
				"aidevops:GetOperatorApp",
				"aidevops:UpdateOperatorAppIdpConfig"
			],
			"Resource": "*"
		},
		{
			"Sid": "AIDevOpsKnowledgeAccess",
			"Effect": "Allow",
			"Action": [
				"aidevops:CreateKnowledgeItem",
				"aidevops:DeleteKnowledgeItem",
				"aidevops:GetKnowledgeItem",
				"aidevops:ListKnowledgeItems",
				"aidevops:ListKnowledgeItemVersions",
				"aidevops:UpdateKnowledgeItem"
			],
			"Resource": "*"
		},
		{
			"Sid": "AIDevOpsBacklogAccess",
			"Effect": "Allow",
			"Action": [
				"aidevops:CreateBacklogTask",
				"aidevops:GetBacklogTask",
				"aidevops:ListBacklogTasks",
				"aidevops:ListGoals",
				"aidevops:UpdateBacklogTask",
				"aidevops:UpdateGoal"
			],
			"Resource": "*"
		},
		{
			"Sid": "AIDevOpsRecommendationAccess",
			"Effect": "Allow",
			"Action": [
				"aidevops:GetRecommendation",
				"aidevops:ListRecommendations",
				"aidevops:UpdateRecommendation"
			],
			"Resource": "*"
		},
		{
			"Sid": "AIDevOpsAgentChatAccess",
			"Effect": "Allow",
			"Action": [
				"aidevops:CreateChat",
				"aidevops:ListChats",
				"aidevops:ListPendingMessages",
				"aidevops:SendMessage"
			],
			"Resource": "*"
		},
		{
			"Sid": "AIDevOpsJournalAccess",
			"Effect": "Allow",
			"Action": [
				"aidevops:ListExecutions",
				"aidevops:ListJournalRecords"
			],
			"Resource": "*"
		},
		{
			"Sid": "AIDevOpsTopologyAccess",
			"Effect": "Allow",
			"Action": [
				"aidevops:DiscoverTopology"
			],
			"Resource": "*"
		},
		{
			"Sid": "AIDevOpsSupportAccess",
			"Effect": "Allow",
			"Action": [
				"aidevops:DescribeSupportLevel",
				"aidevops:EndChatForCase",
				"aidevops:InitiateChatForCase"
			],
			"Resource": "*"
		},
		{
			"Sid": "AIDevOpsUsageAccess",
			"Effect": "Allow",
			"Action": [
				"aidevops:GetAccountUsage"
			],
			"Resource": "*"
		},
		{
			"Sid": "AIDevOpsTaggingAccess",
			"Effect": "Allow",
			"Action": [
				"aidevops:ListTagsForResource",
				"aidevops:TagResource",
				"aidevops:UntagResource"
			],
			"Resource": "*"
		},
		{
			"Sid": "AIDevOpsVendedLogs",
			"Effect": "Allow",
			"Action": [
				"aidevops:AllowVendedLogDeliveryForResource"
			],
			"Resource": "*"
		}
	]
}
```

### AIDevOpsOperatorAppAccessPolicy
<a name="aidevopsoperatorappaccesspolicy"></a>

エージェントスペースの AWS DevOps オペレーターウェブアプリを使用するためのアクセスを提供します。

```
{
	"Version": "2012-10-17",		 	 	 		 	 	 
	"Statement": [
		{
			"Sid": "AllowOperatorAgentSpaceActions",
			"Effect": "Allow",
			"Action": [
				"aidevops:GetAgentSpace",
				"aidevops:GetAssociation",
				"aidevops:ListAssociations",
				"aidevops:CreateBacklogTask",
				"aidevops:GetBacklogTask",
				"aidevops:UpdateBacklogTask",
				"aidevops:ListBacklogTasks",
				"aidevops:ListJournalRecords",
				"aidevops:DiscoverTopology",
				"aidevops:ListGoals",
				"aidevops:ListRecommendations",
				"aidevops:ListExecutions",
				"aidevops:GetRecommendation",
				"aidevops:UpdateRecommendation",
				"aidevops:CreateKnowledgeItem",
				"aidevops:ListKnowledgeItems",
				"aidevops:ListKnowledgeItemVersions",
				"aidevops:GetKnowledgeItem",
				"aidevops:UpdateKnowledgeItem",
				"aidevops:DeleteKnowledgeItem",
				"aidevops:ListPendingMessages",
				"aidevops:InitiateChatForCase",
				"aidevops:EndChatForCase",
				"aidevops:DescribeSupportLevel",
				"aidevops:ListChats",
				"aidevops:CreateChat",
				"aidevops:SendMessage"
			],
			"Resource": "arn:aws:aidevops:*:*:agentspace/${aws:PrincipalTag/AgentSpaceId}",
			"Condition": {
				"StringEquals": {
					"aws:ResourceAccount": "${aws:PrincipalAccount}"
				}
			}
		},
		{
			"Sid": "AllowOperatorAccountActions",
			"Effect": "Allow",
			"Action": [
				"aidevops:GetAccountUsage"
			],
			"Resource": "*",
			"Condition": {
				"StringEquals": {
					"aws:ResourceAccount": "${aws:PrincipalAccount}"
				}
			}
		},
		{
			"Sid": "AllowSupportOperatorActions",
			"Effect": "Allow",
			"Action": [
				"support:DescribeCases",
				"support:InitiateChatForCase",
				"support:DescribeSupportLevel"
			],
			"Resource": "*",
			"Condition": {
				"StringEquals": {
					"aws:ResourceAccount": "${aws:PrincipalAccount}"
				}
			}
		}
	]
}
```

### AIDevOpsAgentAccessPolicy
<a name="aidevopsagentaccesspolicy"></a>

 AWS DevOps Agent が顧客 AWS リソースの調査と分析を実行するために必要なアクセス許可を提供します。

```
{
    "Version": "2012-10-17",		 	 	 		 	 	 
    "Statement": [
        {
            "Sid": "AIOPSServiceAccess",
            "Effect": "Allow",
            "Action": [
                "access-analyzer:GetAnalyzer",
                "access-analyzer:List*",
                "acm-pca:Describe*",
                "acm-pca:GetCertificate",
                "acm-pca:GetCertificateAuthorityCertificate",
                "acm-pca:GetCertificateAuthorityCsr",
                "acm-pca:List*",
                "acm:DescribeCertificate",
                "acm:GetAccountConfiguration",
                "aidevops:GetKnowledgeItem",
                "aidevops:ListKnowledgeItems",
                "airflow:List*",
                "amplify:GetApp",
                "amplify:GetBranch",
                "amplify:GetDomainAssociation",
                "amplify:List*",
                "aoss:BatchGetCollection",
                "aoss:BatchGetLifecyclePolicy",
                "aoss:BatchGetVpcEndpoint",
                "aoss:GetAccessPolicy",
                "aoss:GetSecurityConfig",
                "aoss:GetSecurityPolicy",
                "aoss:List*",
                "appconfig:GetApplication",
                "appconfig:GetConfigurationProfile",
                "appconfig:GetEnvironment",
                "appconfig:GetHostedConfigurationVersion",
                "appconfig:List*",
                "appflow:Describe*",
                "appflow:List*",
                "application-autoscaling:Describe*",
                "application-signals:BatchGetServiceLevelObjectiveBudgetReport",
                "application-signals:GetService",
                "application-signals:GetServiceLevelObjective",
                "application-signals:List*",
                "applicationinsights:Describe*",
                "applicationinsights:List*",
                "apprunner:Describe*",
                "apprunner:List*",
                "appstream:Describe*",
                "appstream:List*",
                "appsync:GetApiAssociation",
                "appsync:GetDataSource",
                "appsync:GetDomainName",
                "appsync:GetFunction",
                "appsync:GetGraphqlApi",
                "appsync:GetGraphqlApiEnvironmentVariables",
                "appsync:GetIntrospectionSchema",
                "appsync:GetResolver",
                "appsync:GetSourceApiAssociation",
                "appsync:List*",
                "aps:Describe*",
                "aps:List*",
                "arc-zonal-shift:GetManagedResource",
                "arc-zonal-shift:List*",
                "athena:GetCapacityAssignmentConfiguration",
                "athena:GetCapacityReservation",
                "athena:GetDataCatalog",
                "athena:GetNamedQuery",
                "athena:GetPreparedStatement",
                "athena:GetWorkGroup",
                "athena:List*",
                "auditmanager:GetAssessment",
                "auditmanager:List*",
                "autoscaling:Describe*",
                "backup-gateway:GetHypervisor",
                "backup-gateway:List*",
                "backup:Describe*",
                "backup:GetBackupPlan",
                "backup:GetBackupSelection",
                "backup:GetBackupVaultAccessPolicy",
                "backup:GetBackupVaultNotifications",
                "backup:GetRestoreTestingPlan",
                "backup:GetRestoreTestingSelection",
                "backup:List*",
                "batch:DescribeComputeEnvironments",
                "batch:DescribeJobQueues",
                "batch:DescribeSchedulingPolicies",
                "batch:List*",
                "bedrock:GetAgent",
                "bedrock:GetAgentActionGroup",
                "bedrock:GetAgentAlias",
                "bedrock:GetAgentKnowledgeBase",
                "bedrock:GetDataSource",
                "bedrock:GetGuardrail",
                "bedrock:GetKnowledgeBase",
                "bedrock:List*",
                "budgets:Describe*",
                "budgets:List*",
                "ce:Describe*",
                "ce:GetAnomalyMonitors",
                "ce:GetAnomalySubscriptions",
                "ce:List*",
                "chatbot:Describe*",
                "chatbot:GetMicrosoftTeamsChannelConfiguration",
                "chatbot:List*",
                "cleanrooms-ml:GetTrainingDataset",
                "cleanrooms-ml:List*",
                "cleanrooms:GetAnalysisTemplate",
                "cleanrooms:GetCollaboration",
                "cleanrooms:GetConfiguredTable",
                "cleanrooms:GetConfiguredTableAnalysisRule",
                "cleanrooms:GetConfiguredTableAssociation",
                "cleanrooms:GetMembership",
                "cleanrooms:List*",
                "cloudformation:Describe*",
                "cloudformation:GetResource",
                "cloudformation:GetStackPolicy",
                "cloudformation:GetTemplate",
                "cloudformation:List*",
                "cloudfront:Describe*",
                "cloudfront:GetCachePolicy",
                "cloudfront:GetCloudFrontOriginAccessIdentity",
                "cloudfront:GetContinuousDeploymentPolicy",
                "cloudfront:GetDistribution",
                "cloudfront:GetDistributionConfig",
                "cloudfront:GetFunction",
                "cloudfront:GetKeyGroup",
                "cloudfront:GetMonitoringSubscription",
                "cloudfront:GetOriginAccessControl",
                "cloudfront:GetOriginRequestPolicy",
                "cloudfront:GetPublicKey",
                "cloudfront:GetRealtimeLogConfig",
                "cloudfront:GetResponseHeadersPolicy",
                "cloudfront:List*",
                "cloudtrail:Describe*",
                "cloudtrail:GetChannel",
                "cloudtrail:GetEventConfiguration",
                "cloudtrail:GetEventDataStore",
                "cloudtrail:GetEventSelectors",
                "cloudtrail:GetInsightSelectors",
                "cloudtrail:GetQueryResults",
                "cloudtrail:GetResourcePolicy",
                "cloudtrail:GetTrail",
                "cloudtrail:GetTrailStatus",
                "cloudtrail:List*",
                "cloudtrail:LookupEvents",
                "cloudtrail:StartQuery",
                "cloudwatch:Describe*",
                "cloudwatch:GenerateQuery",
                "cloudwatch:GetDashboard",
                "cloudwatch:GetInsightRuleReport",
                "cloudwatch:GetMetricData",
                "cloudwatch:GetMetricStatistics",
                "cloudwatch:GetMetricStream",
                "cloudwatch:GetService",
                "cloudwatch:GetServiceLevelObjective",
                "cloudwatch:List*",
                "codeartifact:Describe*",
                "codeartifact:GetDomainPermissionsPolicy",
                "codeartifact:GetRepositoryPermissionsPolicy",
                "codeartifact:List*",
                "codebuild:BatchGetFleets",
                "codebuild:List*",
                "codecommit:GetRepository",
                "codecommit:GetRepositoryTriggers",
                "codedeploy:BatchGetDeployments",
                "codedeploy:BatchGetDeploymentTargets",
                "codedeploy:GetApplication",
                "codedeploy:GetDeploymentConfig",
                "codedeploy:GetDeploymentTarget",
                "codedeploy:List*",
                "codeguru-profiler:Describe*",
                "codeguru-profiler:GetNotificationConfiguration",
                "codeguru-profiler:GetPolicy",
                "codeguru-profiler:List*",
                "codeguru-reviewer:Describe*",
                "codeguru-reviewer:List*",
                "codepipeline:GetPipeline",
                "codepipeline:GetPipelineState",
                "codepipeline:List*",
                "codestar-connections:GetConnection",
                "codestar-connections:GetRepositoryLink",
                "codestar-connections:GetSyncConfiguration",
                "codestar-connections:List*",
                "codestar-notifications:Describe*",
                "codestar-notifications:List*",
                "cognito-identity:DescribeIdentityPool",
                "cognito-identity:GetIdentityPoolRoles",
                "cognito-identity:ListIdentityPools",
                "cognito-identity:ListTagsForResource",
                "cognito-idp:AdminListGroupsForUser",
                "cognito-idp:DescribeIdentityProvider",
                "cognito-idp:DescribeResourceServer",
                "cognito-idp:DescribeRiskConfiguration",
                "cognito-idp:DescribeUserImportJob",
                "cognito-idp:DescribeUserPool",
                "cognito-idp:DescribeUserPoolDomain",
                "cognito-idp:GetGroup",
                "cognito-idp:GetLogDeliveryConfiguration",
                "cognito-idp:GetUICustomization",
                "cognito-idp:GetUserPoolMfaConfig",
                "cognito-idp:GetWebACLForResource",
                "cognito-idp:ListGroups",
                "cognito-idp:ListIdentityProviders",
                "cognito-idp:ListResourceServers",
                "cognito-idp:ListUserPoolClients",
                "cognito-idp:ListUserPools",
                "cognito-idp:ListTagsForResource",
                "comprehend:Describe*",
                "comprehend:List*",
                "config:Describe*",
                "config:GetStoredQuery",
                "config:List*",
                "connect:Describe*",
                "connect:GetTaskTemplate",
                "connect:List*",
                "databrew:Describe*",
                "databrew:List*",
                "datapipeline:Describe*",
                "datapipeline:GetPipelineDefinition",
                "datapipeline:List*",
                "datasync:Describe*",
                "datasync:List*",
                "deadline:GetFarm",
                "deadline:GetFleet",
                "deadline:GetLicenseEndpoint",
                "deadline:GetMonitor",
                "deadline:GetQueue",
                "deadline:GetQueueEnvironment",
                "deadline:GetQueueFleetAssociation",
                "deadline:GetStorageProfile",
                "deadline:List*",
                "detective:GetMembers",
                "detective:List*",
                "devicefarm:GetDevicePool",
                "devicefarm:GetInstanceProfile",
                "devicefarm:GetNetworkProfile",
                "devicefarm:GetProject",
                "devicefarm:GetTestGridProject",
                "devicefarm:GetVPCEConfiguration",
                "devicefarm:List*",
                "devops-guru:Describe*",
                "devops-guru:GetResourceCollection",
                "devops-guru:List*",
                "dms:Describe*",
                "dms:List*",
                "ds:Describe*",
                "dynamodb:Describe*",
                "dynamodb:GetResourcePolicy",
                "dynamodb:List*",
                "ec2:Describe*",
                "ec2:GetAssociatedEnclaveCertificateIamRoles",
                "ec2:GetIpamPoolAllocations",
                "ec2:GetIpamPoolCidrs",
                "ec2:GetManagedPrefixListEntries",
                "ec2:GetNetworkInsightsAccessScopeContent",
                "ec2:GetSnapshotBlockPublicAccessState",
                "ec2:GetTransitGatewayMulticastDomainAssociations",
                "ec2:GetTransitGatewayRouteTableAssociations",
                "ec2:GetTransitGatewayRouteTablePropagations",
                "ec2:GetVerifiedAccessEndpointPolicy",
                "ec2:GetVerifiedAccessGroupPolicy",
                "ec2:GetVerifiedAccessInstanceWebAcl",
                "ec2:SearchLocalGatewayRoutes",
                "ec2:SearchTransitGatewayRoutes",
                "ecr:Describe*",
                "ecr:GetLifecyclePolicy",
                "ecr:GetRegistryPolicy",
                "ecr:GetRepositoryPolicy",
                "ecr:List*",
                "ecs:Describe*",
                "ecs:List*",
                "eks:AccessKubernetesApi",
                "eks:Describe*",
                "eks:List*",
                "elasticache:Describe*",
                "elasticache:List*",
                "elasticbeanstalk:Describe*",
                "elasticbeanstalk:List*",
                "elasticfilesystem:Describe*",
                "elasticloadbalancing:GetResourcePolicy",
                "elasticloadbalancing:GetTrustStoreCaCertificatesBundle",
                "elasticloadbalancing:GetTrustStoreRevocationContent",
                "elasticloadbalancing:Describe*",
                "elasticmapreduce:Describe*",
                "elasticmapreduce:List*",
                "emr-containers:Describe*",
                "emr-containers:List*",
                "emr-serverless:GetApplication",
                "emr-serverless:List*",
                "es:Describe*",
                "es:List*",
                "events:Describe*",
                "events:List*",
                "evidently:GetExperiment",
                "evidently:GetFeature",
                "evidently:GetLaunch",
                "evidently:GetProject",
                "evidently:GetSegment",
                "evidently:List*",
                "firehose:Describe*",
                "firehose:List*",
                "fis:GetExperimentTemplate",
                "fis:GetTargetAccountConfiguration",
                "fis:List*",
                "fms:GetNotificationChannel",
                "fms:GetPolicy",
                "fms:List*",
                "forecast:Describe*",
                "forecast:List*",
                "frauddetector:BatchGetVariable",
                "frauddetector:Describe*",
                "frauddetector:GetDetectors",
                "frauddetector:GetDetectorVersion",
                "frauddetector:GetEntityTypes",
                "frauddetector:GetEventTypes",
                "frauddetector:GetExternalModels",
                "frauddetector:GetLabels",
                "frauddetector:GetListElements",
                "frauddetector:GetListsMetadata",
                "frauddetector:GetModelVersion",
                "frauddetector:GetOutcomes",
                "frauddetector:GetRules",
                "frauddetector:GetVariables",
                "frauddetector:List*",
                "fsx:Describe*",
                "gamelift:Describe*",
                "gamelift:List*",
                "globalaccelerator:Describe*",
                "globalaccelerator:List*",
                "glue:GetDatabase",
                "glue:GetDatabases",
                "glue:GetJob",
                "glue:GetRegistry",
                "glue:GetSchema",
                "glue:GetSchemaVersion",
                "glue:GetTable",
                "glue:GetTags",
                "glue:GetTrigger",
                "glue:List*",
                "glue:querySchemaVersionMetadata",
                "grafana:Describe*",
                "grafana:List*",
                "greengrass:Describe*",
                "greengrass:GetDeployment",
                "greengrass:List*",
                "groundstation:GetConfig",
                "groundstation:GetDataflowEndpointGroup",
                "groundstation:GetMissionProfile",
                "groundstation:List*",
                "guardduty:GetDetector",
                "guardduty:GetFilter",
                "guardduty:GetIPSet",
                "guardduty:GetMalwareProtectionPlan",
                "guardduty:GetMasterAccount",
                "guardduty:GetMembers",
                "guardduty:GetThreatIntelSet",
                "guardduty:List*",
                "health:DescribeEvents",
                "health:DescribeEventDetails",
                "healthlake:Describe*",
                "healthlake:List*",
                "iam:GetGroup",
                "iam:GetGroupPolicy",
                "iam:GetInstanceProfile",
                "iam:GetLoginProfile",
                "iam:GetOpenIDConnectProvider",
                "iam:GetPolicy",
                "iam:GetPolicyVersion",
                "iam:GetRole",
                "iam:GetRolePolicy",
                "iam:GetSAMLProvider",
                "iam:GetServerCertificate",
                "iam:GetServiceLinkedRoleDeletionStatus",
                "iam:GetUser",
                "iam:GetUserPolicy",
                "iam:ListAttachedRolePolicies",
                "iam:ListOpenIDConnectProviders",
                "iam:ListRolePolicies",
                "iam:ListRoles",
                "iam:ListServerCertificates",
                "iam:ListVirtualMFADevices",
                "identitystore:DescribeGroup",
                "identitystore:DescribeGroupMembership",
                "identitystore:ListGroupMemberships",
                "identitystore:ListGroups",
                "imagebuilder:GetComponent",
                "imagebuilder:GetContainerRecipe",
                "imagebuilder:GetDistributionConfiguration",
                "imagebuilder:GetImage",
                "imagebuilder:GetImagePipeline",
                "imagebuilder:GetImageRecipe",
                "imagebuilder:GetInfrastructureConfiguration",
                "imagebuilder:GetLifecyclePolicy",
                "imagebuilder:GetWorkflow",
                "imagebuilder:List*",
                "inspector2:List*",
                "inspector:Describe*",
                "inspector:List*",
                "internetmonitor:GetMonitor",
                "internetmonitor:List*",
                "iot:Describe*",
                "iot:GetPackage",
                "iot:GetPackageVersion",
                "iot:GetPolicy",
                "iot:GetThingShadow",
                "iot:GetTopicRule",
                "iot:GetTopicRuleDestination",
                "iot:GetV2LoggingOptions",
                "iot:List*",
                "iotanalytics:Describe*",
                "iotanalytics:List*",
                "iotevents:Describe*",
                "iotevents:List*",
                "iotsitewise:Describe*",
                "iotsitewise:List*",
                "iotwireless:GetDestination",
                "iotwireless:GetDeviceProfile",
                "iotwireless:GetFuotaTask",
                "iotwireless:GetMulticastGroup",
                "iotwireless:GetNetworkAnalyzerConfiguration",
                "iotwireless:GetServiceProfile",
                "iotwireless:GetWirelessDevice",
                "iotwireless:GetWirelessGateway",
                "iotwireless:GetWirelessGatewayTaskDefinition",
                "iotwireless:List*",
                "ivs:GetChannel",
                "ivs:GetEncoderConfiguration",
                "ivs:GetPlaybackRestrictionPolicy",
                "ivs:GetRecordingConfiguration",
                "ivs:GetStage",
                "ivs:List*",
                "ivschat:GetLoggingConfiguration",
                "ivschat:GetRoom",
                "ivschat:List*",
                "kafka:Describe*",
                "kafka:GetClusterPolicy",
                "kafka:List*",
                "kafkaconnect:Describe*",
                "kafkaconnect:List*",
                "kendra:Describe*",
                "kendra:List*",
                "kinesis:Describe*",
                "kinesis:GetResourcePolicy",
                "kinesis:List*",
                "kinesisanalytics:Describe*",
                "kinesisanalytics:List*",
                "kinesisvideo:Describe*",
                "kms:DescribeKey",
                "kms:ListResourceTags",
                "kms:ListKeys",
                "kms:GetKeyPolicy",
                "kms:GetKeyRotationStatus",
                "kms:ListAliases",
                "kms:ListKeyRotations",
                "lakeformation:Describe*",
                "lakeformation:GetLFTag",
                "lakeformation:GetResourceLFTags",
                "lakeformation:List*",
                "lambda:GetAlias",
                "lambda:GetCodeSigningConfig",
                "lambda:GetEventSourceMapping",
                "lambda:GetFunctionCodeSigningConfig",
                "lambda:GetFunctionConfiguration",
                "lambda:GetFunctionEventInvokeConfig",
                "lambda:GetFunctionRecursionConfig",
                "lambda:GetFunctionUrlConfig",
                "lambda:GetLayerVersion",
                "lambda:GetLayerVersionPolicy",
                "lambda:GetPolicy",
                "lambda:GetProvisionedConcurrencyConfig",
                "lambda:GetRuntimeManagementConfig",
                "lambda:List*",
                "launchwizard:GetDeployment",
                "launchwizard:List*",
                "license-manager:GetLicense",
                "license-manager:List*",
                "lightsail:GetAlarms",
                "lightsail:GetBuckets",
                "lightsail:GetCertificates",
                "lightsail:GetContainerServices",
                "lightsail:GetDisk",
                "lightsail:GetDisks",
                "lightsail:GetInstance",
                "lightsail:GetInstances",
                "lightsail:GetLoadBalancer",
                "lightsail:GetLoadBalancers",
                "lightsail:GetLoadBalancerTlsCertificates",
                "lightsail:GetStaticIp",
                "lightsail:GetStaticIps",
                "logs:Describe*",
                "logs:FilterLogEvents",
                "logs:GetDataProtectionPolicy",
                "logs:GetDelivery",
                "logs:GetDeliveryDestination",
                "logs:GetDeliveryDestinationPolicy",
                "logs:GetDeliverySource",
                "logs:GetLogAnomalyDetector",
                "logs:GetLogDelivery",
                "logs:GetLogGroupFields",
                "logs:GetQueryResults",
                "logs:List*",
                "logs:StartQuery",
                "logs:StopLiveTail",
                "logs:StopQuery",
                "logs:TestMetricFilter",
                "m2:GetApplication",
                "m2:GetEnvironment",
                "m2:List*",
                "macie2:GetAllowList",
                "macie2:GetCustomDataIdentifier",
                "macie2:GetFindingsFilter",
                "macie2:GetMacieSession",
                "macie2:List*",
                "mediaconnect:Describe*",
                "mediaconnect:List*",
                "medialive:Describe*",
                "medialive:GetCloudWatchAlarmTemplate",
                "medialive:GetCloudWatchAlarmTemplateGroup",
                "medialive:GetEventBridgeRuleTemplate",
                "medialive:GetEventBridgeRuleTemplateGroup",
                "medialive:GetSignalMap",
                "medialive:List*",
                "mediapackage-vod:Describe*",
                "mediapackage-vod:List*",
                "mediapackage:Describe*",
                "mediapackage:List*",
                "mediapackagev2:GetChannel",
                "mediapackagev2:GetChannelGroup",
                "mediapackagev2:GetChannelPolicy",
                "mediapackagev2:GetOriginEndpoint",
                "mediapackagev2:GetOriginEndpointPolicy",
                "mediapackagev2:List*",
                "memorydb:Describe*",
                "memorydb:List*",
                "mobiletargeting:GetInAppTemplate",
                "mobiletargeting:List*",
                "mq:Describe*",
                "mq:List*",
                "network-firewall:Describe*",
                "network-firewall:List*",
                "networkmanager:Describe*",
                "networkmanager:GetConnectAttachment",
                "networkmanager:GetConnectPeer",
                "networkmanager:GetCoreNetwork",
                "networkmanager:GetCoreNetworkPolicy",
                "networkmanager:GetCustomerGatewayAssociations",
                "networkmanager:GetDevices",
                "networkmanager:GetLinkAssociations",
                "networkmanager:GetLinks",
                "networkmanager:GetSites",
                "networkmanager:GetSiteToSiteVpnAttachment",
                "networkmanager:GetTransitGatewayPeering",
                "networkmanager:GetTransitGatewayRegistrations",
                "networkmanager:GetTransitGatewayRouteTableAttachment",
                "networkmanager:GetVpcAttachment",
                "networkmanager:List*",
                "oam:GetLink",
                "oam:GetSink",
                "oam:GetSinkPolicy",
                "oam:List*",
                "omics:GetAnnotationStore",
                "omics:GetReferenceStore",
                "omics:GetRunGroup",
                "omics:GetSequenceStore",
                "omics:GetVariantStore",
                "omics:GetWorkflow",
                "omics:List*",
                "organizations:Describe*",
                "organizations:List*",
                "osis:GetPipeline",
                "osis:List*",
                "payment-cryptography:GetAlias",
                "payment-cryptography:GetKey",
                "payment-cryptography:List*",
                "pca-connector-ad:GetConnector",
                "pca-connector-ad:GetDirectoryRegistration",
                "pca-connector-ad:GetServicePrincipalName",
                "pca-connector-ad:GetTemplate",
                "pca-connector-ad:GetTemplateGroupAccessControlEntry",
                "pca-connector-ad:List*",
                "pca-connector-scep:GetChallengeMetadata",
                "pca-connector-scep:GetConnector",
                "pca-connector-scep:List*",
                "personalize:Describe*",
                "personalize:List*",
                "pi:DescribeDimensionKeys",
                "pi:GetResourceMetadata",
                "pi:GetResourceMetrics",
                "pi:ListAvailableResourceDimensions",
                "pi:ListAvailableResourceMetrics",
                "pipes:Describe*",
                "pipes:List*",
                "proton:GetEnvironmentTemplate",
                "proton:GetServiceTemplate",
                "proton:List*",
                "qbusiness:GetApplication",
                "qbusiness:GetDataSource",
                "qbusiness:GetIndex",
                "qbusiness:GetPlugin",
                "qbusiness:GetRetriever",
                "qbusiness:GetWebExperience",
                "qbusiness:List*",
                "ram:GetPermission",
                "ram:GetResourceShares",
                "ram:List*",
                "rds:Describe*",
                "rds:List*",
                "redshift-serverless:GetNamespace",
                "redshift-serverless:GetWorkgroup",
                "redshift-serverless:List*",
                "redshift:Describe*",
                "refactor-spaces:GetApplication",
                "refactor-spaces:GetEnvironment",
                "refactor-spaces:GetRoute",
                "refactor-spaces:List*",
                "rekognition:Describe*",
                "rekognition:List*",
                "resiliencehub:Describe*",
                "resiliencehub:List*",
                "resource-explorer-2:GetDefaultView",
                "resource-explorer-2:GetIndex",
                "resource-explorer-2:GetView",
                "resource-explorer-2:List*",
                "resource-explorer-2:Search",
                "resource-groups:GetGroup",
                "resource-groups:GetGroupConfiguration",
                "resource-groups:GetGroupQuery",
                "resource-groups:GetTags",
                "resource-groups:List*",
                "route53-recovery-control-config:Describe*",
                "route53-recovery-control-config:List*",
                "route53-recovery-readiness:GetCell",
                "route53-recovery-readiness:GetReadinessCheck",
                "route53-recovery-readiness:GetRecoveryGroup",
                "route53-recovery-readiness:GetResourceSet",
                "route53-recovery-readiness:List*",
                "route53:GetDNSSEC",
                "route53:GetHealthCheck",
                "route53:GetHealthCheckStatus",
                "route53:GetHostedZone",
                "route53:List*",
                "route53profiles:GetProfile",
                "route53profiles:GetProfileAssociation",
                "route53profiles:GetProfileResourceAssociation",
                "route53profiles:List*",
                "route53resolver:GetFirewallDomainList",
                "route53resolver:GetFirewallRuleGroup",
                "route53resolver:GetFirewallRuleGroupAssociation",
                "route53resolver:GetOutpostResolver",
                "route53resolver:GetResolverConfig",
                "route53resolver:GetResolverQueryLogConfig",
                "route53resolver:GetResolverQueryLogConfigAssociation",
                "route53resolver:GetResolverRule",
                "route53resolver:GetResolverRuleAssociation",
                "route53resolver:List*",
                "rum:GetAppMonitor",
                "rum:List*",
                "s3-outposts:ListEndpoints",
                "s3-outposts:ListOutpostsWithS3",
                "s3:GetAccessGrant",
                "s3:GetAccessGrantsInstance",
                "s3:GetAccessGrantsLocation",
                "s3:GetAccessPoint",
                "s3:GetAccessPointConfigurationForObjectLambda",
                "s3:GetAccessPointForObjectLambda",
                "s3:GetAccessPointPolicy",
                "s3:GetAccessPointPolicyForObjectLambda",
                "s3:GetAccessPointPolicyStatusForObjectLambda",
                "s3:GetBucketAbac",
                "s3:GetBucketAcl",
                "s3:GetBucketCORS",
                "s3:GetBucketLocation",
                "s3:GetBucketLogging",
                "s3:GetBucketMetadataTableConfiguration",
                "s3:GetBucketNotification",
                "s3:GetBucketObjectLockConfiguration",
                "s3:GetBucketOwnershipControls",
                "s3:GetBucketPolicy",
                "s3:GetBucketPublicAccessBlock",
                "s3:GetBucketTagging",
                "s3:GetBucketVersioning",
                "s3:GetEncryptionConfiguration",
                "s3:GetLifecycleConfiguration",
                "s3:GetMultiRegionAccessPoint",
                "s3:GetMultiRegionAccessPointPolicy",
                "s3:GetMultiRegionAccessPointPolicyStatus",
                "s3:GetReplicationConfiguration",
                "s3:GetStorageLensConfiguration",
                "s3:GetStorageLensConfigurationTagging",
                "s3:GetStorageLensGroup",
                "s3:ListAllMyBuckets",
                "sagemaker:Describe*",
                "sagemaker:List*",
                "scheduler:GetSchedule",
                "scheduler:GetScheduleGroup",
                "scheduler:List*",
                "schemas:Describe*",
                "schemas:GetResourcePolicy",
                "schemas:List*",
                "secretsmanager:Describe*",
                "secretsmanager:GetResourcePolicy",
                "secretsmanager:List*",
                "securityhub:BatchGetAutomationRules",
                "securityhub:BatchGetSecurityControls",
                "securityhub:Describe*",
                "securityhub:GetConfigurationPolicy",
                "securityhub:GetConfigurationPolicyAssociation",
                "securityhub:GetEnabledStandards",
                "securityhub:GetFindingAggregator",
                "securityhub:GetInsights",
                "securityhub:List*",
                "securitylake:GetSubscriber",
                "securitylake:List*",
                "servicecatalog:Describe*",
                "servicecatalog:GetApplication",
                "servicecatalog:GetAttributeGroup",
                "servicecatalog:List*",
                "servicequotas:GetServiceQuota",
                "ses:Describe*",
                "ses:GetAccount",
                "ses:GetAddonInstance",
                "ses:GetAddonSubscription",
                "ses:GetArchive",
                "ses:GetConfigurationSet",
                "ses:GetConfigurationSetEventDestinations",
                "ses:GetContactList",
                "ses:GetDedicatedIpPool",
                "ses:GetDedicatedIps",
                "ses:GetEmailIdentity",
                "ses:GetEmailTemplate",
                "ses:GetIngressPoint",
                "ses:GetRelay",
                "ses:GetRuleSet",
                "ses:GetTemplate",
                "ses:GetTrafficPolicy",
                "ses:List*",
                "shield:Describe*",
                "shield:List*",
                "signer:GetSigningProfile",
                "signer:List*",
                "sns:GetDataProtectionPolicy",
                "sns:GetSubscriptionAttributes",
                "sns:GetTopicAttributes",
                "sns:List*",
                "sqs:GetQueueAttributes",
                "sqs:GetQueueUrl",
                "sqs:List*",
                "ssm-contacts:GetContact",
                "ssm-contacts:GetContactChannel",
                "ssm-contacts:List*",
                "ssm-incidents:GetReplicationSet",
                "ssm-incidents:GetResponsePlan",
                "ssm-incidents:List*",
                "ssm-sap:GetApplication",
                "ssm-sap:List*",
                "ssm:Describe*",
                "ssm:GetDefaultPatchBaseline",
                "ssm:GetDocument",
                "ssm:GetParameters",
                "ssm:GetPatchBaseline",
                "ssm:GetResourcePolicies",
                "ssm:List*",
                "sso:GetInlinePolicyForPermissionSet",
                "sso:GetManagedApplicationInstance",
                "sso:GetPermissionsBoundaryForPermissionSet",
                "sso:GetSharedSsoConfiguration",
                "sso:ListAccountAssignments",
                "sso:ListApplicationAssignments",
                "sso:ListApplications",
                "sso:ListCustomerManagedPolicyReferencesInPermissionSet",
                "sso:ListInstances",
                "sso:ListManagedPoliciesInPermissionSet",
                "sso:ListTagsForResource",
                "states:GetExecutionHistory",
                "states:Describe*",
                "states:List*",
                "support:CreateCase",
                "support:DescribeCases",
                "synthetics:Describe*",
                "synthetics:GetCanary",
                "synthetics:GetCanaryRuns",
                "synthetics:GetGroup",
                "synthetics:List*",
                "tag:GetResources",
                "timestream:Describe*",
                "timestream:List*",
                "transfer:Describe*",
                "transfer:List*",
                "verifiedpermissions:GetIdentitySource",
                "verifiedpermissions:GetPolicy",
                "verifiedpermissions:GetPolicyStore",
                "verifiedpermissions:GetPolicyTemplate",
                "verifiedpermissions:GetSchema",
                "verifiedpermissions:List*",
                "vpc-lattice:GetAccessLogSubscription",
                "vpc-lattice:GetAuthPolicy",
                "vpc-lattice:GetListener",
                "vpc-lattice:GetResourcePolicy",
                "vpc-lattice:GetRule",
                "vpc-lattice:GetService",
                "vpc-lattice:GetServiceNetwork",
                "vpc-lattice:GetServiceNetworkServiceAssociation",
                "vpc-lattice:GetServiceNetworkVpcAssociation",
                "vpc-lattice:GetTargetGroup",
                "vpc-lattice:List*",
                "wafv2:GetIPSet",
                "wafv2:GetLoggingConfiguration",
                "wafv2:GetRegexPatternSet",
                "wafv2:GetRuleGroup",
                "wafv2:GetWebACL",
                "wafv2:GetWebACLForResource",
                "wafv2:List*",
                "workspaces-web:GetBrowserSettings",
                "workspaces-web:GetIdentityProvider",
                "workspaces-web:GetNetworkSettings",
                "workspaces-web:GetPortal",
                "workspaces-web:GetPortalServiceProviderMetadata",
                "workspaces-web:GetTrustStore",
                "workspaces-web:GetUserAccessLoggingSettings",
                "workspaces-web:GetUserSettings",
                "workspaces-web:List*",
                "workspaces:Describe*",
                "xray:BatchGetTraces",
                "xray:GetGroup",
                "xray:GetGroups",
                "xray:GetSamplingRules",
                "xray:GetServiceGraph",
                "xray:GetTraceSummaries",
                "xray:List*"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AIOPSAPIGatewayAccess",
            "Effect": "Allow",
            "Action": [
                "apigateway:GET"
            ],
            "Resource": [
                "arn:aws:apigateway:*::/restapis",
                "arn:aws:apigateway:*::/restapis/*",
                "arn:aws:apigateway:*::/restapis/*/deployments",
                "arn:aws:apigateway:*::/restapis/*/deployments/*",
                "arn:aws:apigateway:*::/restapis/*/resources/*/methods/*/integrations",
                "arn:aws:apigateway:*::/restapis/*/resources/*/methods/*/integrations/*",
                "arn:aws:apigateway:*::/restapis/*/stages",
                "arn:aws:apigateway:*::/restapis/*/stages/*",
                "arn:aws:apigateway:*::/apis",
                "arn:aws:apigateway:*::/apis/*",
                "arn:aws:apigateway:*::/apis/*/deployments",
                "arn:aws:apigateway:*::/apis/*/deployments/*",
                "arn:aws:apigateway:*::/apis/*/integrations",
                "arn:aws:apigateway:*::/apis/*/integrations/*",
                "arn:aws:apigateway:*::/apis/*/stages",
                "arn:aws:apigateway:*::/apis/*/stages/*",
                "arn:aws:apigateway:*::/domainnames/*"
            ]
        }
    ]
}
```

# AWS アカウントでのエージェントアクセスの制限
<a name="aws-devops-agent-security-limiting-agent-access-in-an-aws-account"></a>

AWS DevOps エージェントは IAM ロールを使用して、インシデント調査と予防的評価中に AWS リソースを検出して記述します。これらのロールにアタッチされた IAM ポリシーを設定することで、エージェントが持つアクセスレベルを制御できます。アプリケーショントポロジーには、エージェントがアクセスできるすべての情報が表示されるわけではありません。IAM ポリシーは、エージェントがアクセスできる AWS サービス APIsとリソースを実際に制限する唯一の方法です。

## AWS DevOps エージェントの IAM ロールについて
<a name="understanding-iam-roles-for-aws-devops-agent"></a>

AWS DevOps エージェントは IAM ロールを使用して、次の 2 種類のアカウントのリソースにアクセスします。
+ **プライマリアカウントロール** – エージェントスペースを作成する AWS アカウントのリソースへのアクセス権をエージェントに付与します。
+ **セカンダリアカウントロール** – エージェントスペースに接続する追加の AWS アカウントのリソースへのアクセス権をエージェントに付与します。

どちらのタイプのアカウントでも、エージェントがアクセスできる AWS サービスを制限し、それらのサービス内の特定のリソースへのアクセスを制限し、エージェントが操作できるリージョンを制御できます。

## リソースの境界の選択
<a name="choosing-your-resource-boundaries"></a>

リソースアクセスを制限する場合は、エージェントがアプリケーションインシデントを正常に調査するための十分なアクセス許可を含める必要があります。これには、以下が含まれます。
+ エージェントがモニタリングおよび調査する必要がある対象範囲内のアプリケーションのすべてのリソース
+ これらのアプリケーションが依存するすべてのサポートインフラストラクチャ

インフラストラクチャのサポートには以下が含まれます。
+ ネットワークコンポーネント (VPCs、サブネット、ロードバランサー、API ゲートウェイ)
+ データストア (データベース、キャッシュ、オブジェクトストレージ)
+ コンピューティングリソース (EC2 インスタンス、Lambda 関数、コンテナ)
+ サービスのモニタリングとログ記録 (CloudWatch、CloudTrail)
+ アクセス許可を理解するために必要な Identity and Access Management リソース

アクセスを狭く制限しすぎると、エージェントは定義された境界外のサポートインフラストラクチャに起因する根本原因を特定できない可能性があります。

## サービスアクセスの制限
<a name="restricting-service-access"></a>

エージェントのロールにアタッチされている IAM ポリシーを変更することで、エージェントがアクセスできる AWS サービスを制限できます。カスタムポリシーを作成するときは、次のベストプラクティスに従ってください。
+ **読み取り専用アクセス許可のみを付与**する – エージェントは調査中にリソース設定、メトリクス、ログを読み取る必要があります。エージェントがリソースを変更または削除できるようにするアクセス許可を付与することは避けてください。
+ **必要なサービスの制限** – アプリケーションに関連するリソースを含む AWS サービスのみを含めます。たとえば、アプリケーションが Amazon RDS を使用していない場合は、ポリシーに RDS アクセス許可を含めないでください。
+ **ワイルドカードの代わりに特定のアクションを使用する** – アクセス`service:*`許可を付与する代わりに、 `cloudwatch:GetMetricData`や などの個々のアクションを指定します`ec2:DescribeInstances`。

特定のサービスに制限するポリシーの例:

```
json

{
  "Version": "2012-10-17",		 	 	 		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "cloudwatch:GetMetricData",
        "cloudwatch:GetMetricStatistics",
        "cloudwatch:DescribeAlarms",
        "logs:GetLogEvents",
        "logs:FilterLogEvents",
        "ec2:DescribeInstances",
        "lambda:GetFunction",
        "lambda:GetFunctionConfiguration"
      ],
      "Resource": "*"
    }
  ]
}
```

## リソースアクセスの制限
<a name="restricting-resource-access"></a>

エージェントをサービス内の特定のリソースに制限するには、IAM ポリシーでリソースレベルのアクセス許可を使用します。これにより、特定のパターンに一致するリソースにのみアクセス権を付与できます。

**リソース ARN パターンの使用:**

```
{
  "Version": "2012-10-17",		 	 	 		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "lambda:GetFunction",
        "lambda:GetFunctionConfiguration"
      ],
      "Resource": "arn:aws:lambda:*:*:function:production-*"
    }
  ]
}
```

この例では、「production-」で始まる名前の Lambda 関数にのみアクセスするようにエージェントを制限します。

**タグベースの制限の使用:**

```
{
  "Version": "2012-10-17",		 	 	 		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeInstances",
        "ec2:DescribeInstanceStatus"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/Environment": "production"
        }
      }
    }
  ]
}
```

この例では、エージェントが でタグ付けされた EC2 インスタンスのみにアクセスするように制限しています`Environment=production`。

## リージョンアクセスの制限
<a name="restricting-regional-access"></a>

エージェントがアクセスできる AWS リージョンを制限するには、IAM ポリシーで `aws:RequestedRegion`条件キーを使用します。

```
{
  "Version": "2012-10-17",		 	 	 		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:Describe*",
        "lambda:Get*",
        "cloudwatch:Get*"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:RequestedRegion": [
            "us-east-1",
            "us-west-2"
          ]
        }
      }
    }
  ]
}
```

この例では、us-east-1 および us-west-2 リージョンのリソースにのみアクセスするようにエージェントを制限します。

## カスタム IAM ポリシーの作成
<a name="creating-custom-iam-policies"></a>

エージェントスペースを作成するとき、またはセカンダリアカウントを追加するときに、ポリシーテンプレートを使用してカスタム IAM ロールを作成するオプションがあります。これにより、最小特権の原則を実装できます。

**エージェントスペースを作成する場合**

 AWS マネジメントコンソールの DevOps エージェントコンソールから..。
+ **ポリシードキュメントを使用して新しい DevOps エージェントロールを作成し**、手順に従います。

**エージェントスペースを編集する場合**

 AWS マネジメントコンソールの DevOps エージェントコンソールから..。
+ **機能**タブを選択する
+ **クラウド**セクションから編集するセカンダリアカウントを選択し、編集をクリックします
+ **テンプレートを使用して新しい DevOps エージェントポリシーを作成し**、手順に従います。

## カスタムポリシーのベストプラクティス
<a name="custom-policy-best-practices"></a>
+ **読み取り専用アクセス許可のみを付与する** – リソースの変更または削除を許可するアクセス許可は避けてください
+ **可能な場合はリソースレベルのアクセス許可を使用する** — ARN パターンまたはタグを使用して特定のリソースへのアクセスを制限する
+ **アクセス許可の定期的なレビューと監査** – エージェントの IAM ポリシーを定期的にレビューして、セキュリティ要件に合致していることを確認します。

# IAM アイデンティティセンター認証の設定
<a name="aws-devops-agent-security-setting-up-iam-identity-center-authentication"></a>

IAM アイデンティティセンター認証は、 AWS DevOps エージェントスペースウェブアプリケーションへのユーザーアクセスを一元的に管理する方法を提供します。このガイドでは、IAM Identity Center 認証を設定してユーザーを管理する方法について説明します。

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

IAM Identity Center 認証を設定する前に、以下を確認してください。
+ 組織またはアカウントで有効になっている IAM Identity Center
+  AWS DevOps Agent の管理者権限
+ エージェントスペースが設定済みまたは作成準備完了

## 認証オプション
<a name="authentication-options"></a>

AWS DevOps エージェントには、エージェントスペースウェブアプリケーションにアクセスするための 2 つの認証方法があります。

**IAM Identity Center 認証** – 本番環境に推奨されます。一元化されたユーザー管理、外部 ID プロバイダーとの統合、最大 12 時間のセッションを提供します。

**管理者アクセス (IAM 認証)** – 初期セットアップと設定中に管理者にクイックアクセスを提供します。セッションは 30 分に制限されています。

## エージェントスペースの作成中に IAM アイデンティティセンターを設定する
<a name="configuring-iam-identity-center-during-agent-space-creation"></a>

エージェントスペースを作成するときは、**アクセス**タブで IAM アイデンティティセンター認証を設定できます。

### ステップ 1: ウェブアプリ設定に移動する
<a name="step-1-navigate-to-the-web-app-configuration"></a>

1. エージェントスペースの詳細と AWS アカウントアクセスを設定したら、**アクセス**タブに進みます。

1. 「IAM アイデンティティセンターを接続する」と「管理者アクセス」の 2 つのセクションが表示されます。

### ステップ 2: IAM Identity Center 統合を設定する
<a name="step-2-configure-iam-identity-center-integration"></a>

**「〔エージェントスペース] を IAM アイデンティティセンターに接続する**」セクションで、次の操作を行います。

1. **IAM Identity Center インスタンスを確認する** – コンソールには、ウェブアプリのユーザーアクセスを管理する Identity Center インスタンス ( など) が表示されます`ssoins-7223a9580931edbe`。最も近い IAM Identity Center インスタンスは自動的に事前入力されます。

1. **IAM Identity Center アプリケーションロール名オプションを選択する** – 次の 3 つのオプションのいずれかを選択します。

**新しい DevOps エージェントロールを自動作成**します (推奨):
+ システムは、適切なアクセス許可を持つ新しいサービスロールを自動的に作成します。
+ これは最も簡単なオプションで、ほとんどのユースケースで機能します。

**既存のロールを割り当て**ます。
+ 既に作成した既存の IAM ロールを使用する
+ システムは、ロールに必要なアクセス許可があることを確認します。
+ 組織に AWS DevOps Agent のロールが事前に作成されている場合は、このオプションを選択します。

**ポリシーテンプレートを使用して新しい DevOps エージェントロールを作成します**。
+ 提供されたポリシーの詳細を使用して、IAM コンソールで独自のカスタムロールを作成します。
+ ロールのアクセス許可をカスタマイズする必要がある場合は、このオプションを選択します。

Connect をクリックすると、システムは自動的に次の操作を行います。
+ 指定された IAM ロールを作成または設定します
+ エージェントスペースの IAM アイデンティティセンターアプリケーションをセットアップします
+ IAM アイデンティティセンターとエージェントスペースウェブアプリ間の信頼関係を確立します
+ 安全なユーザーアクセスのために OAuth 2.0 認証フローを設定します

### 代替: 管理者アクセスの使用
<a name="alternative-using-admin-access"></a>

IAM アイデンティティセンターを設定せずにエージェントスペースウェブアプリにすぐにアクセスする場合:

1. **管理者アクセス**セクションで、管理者アクセスを提供する IAM ロール ARN を書き留めます (例: `arn:aws:iam::440491339484:role/service-role/DevOpsAgentRole-WebappAdmin-15ppoc42`)。

1. 青い**管理者アクセス**ボタンをクリックして、IAM 認証でエージェントスペースウェブアプリを起動します。

1. この方法を使用するセッションは 30 分に制限されます

**注記**  
** 管理者アクセスは、初期設定と設定を目的としています。本番稼働用および継続的なオペレーションの場合は、IAM Identity Center 認証を設定します。

## ユーザーとグループの追加
<a name="adding-users-and-groups"></a>

IAM Identity Center 認証を設定したら、特定のユーザーとグループに エージェントスペースウェブアプリへのアクセスを許可する必要があります。

### ステップ 1: ユーザー管理にアクセスする
<a name="step-1-access-user-management"></a>

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

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

1. **ユーザーアクセス**で、**ユーザーとグループの管理**をクリックします。

### ステップ 2: ユーザーまたはグループを追加する
<a name="step-2-add-users-or-groups"></a>

1. **ユーザーまたはグループの追加**を選択する

1. IAM Identity Center ディレクトリでユーザーまたはグループを検索する

1. 追加するユーザーまたはグループの横にあるチェックボックスをオンにします。

1. **追加**をクリックしてアクセス権を付与する

選択したユーザーは、IAM アイデンティティセンターの認証情報を使用してエージェントスペースウェブアプリにアクセスできるようになりました。

### 外部 ID プロバイダーの使用
<a name="working-with-external-identity-providers"></a>

IAM アイデンティティセンターで外部 ID プロバイダー (Okta、Microsoft Entra ID、Ping Identity など) を使用している場合:
+ ユーザーとグループは、外部 ID プロバイダーから IAM アイデンティティセンターに同期されます。
+ エージェントスペースウェブアプリにユーザーとグループを追加すると、同期されたディレクトリから選択されます。
+ ユーザー属性とグループメンバーシップは、外部 ID プロバイダーによって維持されます。
+ ID プロバイダーの変更は、同期後に IAM アイデンティティセンターに自動的に反映されます。

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

エージェントスペースにユーザーを追加した後:

1. エージェントスペースのウェブアプリ URL を承認されたユーザーと共有する

1. ユーザーが URL に移動すると、IAM Identity Center のログインページにリダイレクトされます。

1. 認証情報を入力する (設定されている場合は MFA を完了する) と、エージェントスペースウェブアプリにリダイレクトされます。

1. セッションはデフォルトで 8 時間有効です (Identity Center 管理者が設定可能)

## ユーザーアクセスの管理
<a name="managing-user-access"></a>

ユーザーアクセスはいつでも更新できます。

**ユーザーまたはグループの追加:**
+ 上記と同じ手順に従って、ユーザーまたはグループを追加します。

**アクセスの削除:**

1. **ユーザーアクセス**セクションで、削除するユーザーまたはグループを見つけます。

1. 名前の横にある**削除**ボタンをクリックします。

1. 削除を確認する

削除されたユーザーはすぐにアクセスできなくなりますが、アクティブなセッションは有効期限が切れるまで継続される場合があります。

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

エージェントスペースウェブアプリの IAM Identity Center セッションには、次の特性があります。
+ **デフォルトのセッション期間** – 8 時間
+ **セッションセキュリティ** – 保護を強化するための HTTP 専用 Cookie
+ **多要素認証** – IAM Identity Center で設定されている場合にサポートされます
+ **API 認証情報** – API コールに対して短時間 (15 分) SigV4 認証情報が発行され、自動的に更新されます。

セッション期間を設定するには:

1. IAM Identity Center コンソールに移動する

1. **設定** > **認証**に進む

1. **セッション期間**で、希望する期間 (1 時間から 12 時間) を設定します。

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

## Identity Center の切断
<a name="disconnecting-identity-center"></a>

1. エージェントスペースのコンソールで、右上の**アクション**をクリックし、**IAM アイデンティティセンターから切断**を選択します。

1. 確認ダイアログで確認する

# 外部 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`として を追加します。

# AWS DevOps Agent の保管時の暗号化
<a name="aws-devops-agent-security-encryption-at-rest-for-devops-agent"></a>

AWS DevOps エージェントは、保管中のすべての顧客データを暗号化します。デフォルトでは、 AWS DevOps エージェントは AWS 所有キーを使用して、追加料金なしでデータを自動的に暗号化します。 AWS 所有キーの使用を表示、管理、または監査することはできません。ただし、これらのキーを保護するためにアクションを実行する必要はありません。データは自動的に保護されます。

Key AWS Management Service (AWS KMS) で作成、所有、管理する対称カスタマーマネージドキーを使用してデータを暗号化することを選択できます。この暗号化レイヤーを完全に制御できるため、次のようなタスクを実行できます。
+ キーポリシーの策定と維持
+ キーポリシーの有効化と無効化
+ キー暗号化マテリアルのローテーション
+  タグを追加する
+ キーエイリアスの作成
+ 削除のためのキースケジューリング

詳細については、[「 Key Management Service デベロッパーガイド」の「カスタマーマネージド](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)キー」を参照してください。 *AWS *

**注記**  
** AWS DevOps エージェントは AWS 、所有キーを使用して保管時の暗号化を自動的に有効にし、顧客データを無償で保護します。カスタマーマネージドキーを使用する場合、標準の AWS KMS 料金が適用されます。料金の詳細については、[AWS 「 Key Management Service の料金](https://aws.amazon.com/kms/pricing/)」を参照してください。

## カスタマーマネージドキー
<a name="customer-managed-keys"></a>

カスタマーマネージドキーは、作成、所有、管理する AWS アカウントの KMS キーです。キーポリシーの確立と維持など、これらの KMS キーを完全に制御できます。

カスタマーマネージドキーを設定すると、 AWS DevOps Agent はそれを使用して機密リソースデータを保護します。 AWS DevOps Agent AWS は Encryption SDK 階層キーリングで[エンベロープ暗号化](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/concepts.html#envelope-encryption)を使用します。KMS キーを使用してブランチキーを生成し、データを保護します。

カスタマーマネージドキーは、次のリソースを作成するときに指定できます。
+ **エージェントスペース** — 調査、スキル、チャットに関連する DevOps エージェントウェブアプリから作成されたエージェントスペースの詳細とコンテンツを暗号化します。
+ **サービス** — 保管中のサードパーティーのサービス認証情報を暗号化します。

 AWS DevOps Agent でカスタマーマネージドキーを設定するには、次の手順に従います。

### ステップ 1：カスタマーマネージドキーを作成する
<a name="step-1-create-a-customer-managed-key"></a>

対称カスタマーマネージドキーは、KMS コンソールまたは AWS KMS API AWS を使用して作成できます。キーは次の要件を満たしている必要があります。


| プロパティ | 要件 | 
| --- | --- | 
| キーのタイプ | 対称 | 
|  キー仕様 | SYMMETRIC\$1DEFAULT | 
|  キーの用途 | ENCRYPT\$1DECRYPT | 

**注記**  
** AWS DevOps Agent は、キー仕様とキー`ENCRYPT_DECRYPT`使用法を持つ対称暗号化 KMS `SYMMETRIC_DEFAULT` キーのみをサポートします。マルチリージョンキーと非対称キーは現在サポートされていません。

詳細については、*AWS 「 Key Management Service* [デベロッパーガイド」の「対称カスタマーマネージドキー](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk)の作成」を参照してください。

### ステップ 2: キーポリシーを設定する
<a name="step-2-set-the-key-policy"></a>

キーポリシーは、カスタマーマネージドキーへのアクセスを制御します。すべてのカスタマーマネージドキーには、キーポリシーが 1 つだけ必要です。このポリシーには、そのキーを使用できるユーザーとその使用方法を決定するステートメントが含まれています。

キーポリシーは、呼び出し元のプリンシパル (IAM ID) と AWS DevOps エージェントサービスの両方にアクセス許可を付与する必要があります。 AWS DevOps エージェントは、次の 2 つの認証情報セットを使用してキーにアクセスします。

1. **発信者認証情報** — キー検証、リソース作成時の暗号化、発信者に直接応答を返す API コールなど、すべての同期オペレーションに使用されます。

1. **AWS DevOps エージェントサービスプリンシパル** — 運用調査、インシデント分析、イベント相関、根本原因分析の生成など、バックグラウンドで実行される非同期オペレーションに使用されます。

次の表に、必要な KMS アクションを示します。


| KMS アクション | 説明 | 
| --- | --- | 
| kms:DescribeKey | リソース作成時にキー設定を検証する | 
| kms:GenerateDataKey | エンベロープ暗号化用のデータ暗号化キーを生成する | 
| kms:Decrypt | データの復号化 | 
| kms:Encrypt | [データの暗号化] | 
| kms:ReEncrypt | 同じキーまたは異なるキーでデータを再暗号化する | 

AWS DevOps Agent は、ドライランオペレーションを使用して、設定時にこれらのアクセス許可をすべて検証します。アクセス許可がない場合、リクエストは例外で失敗します。

以下は、キーポリシーの例です。プレースホルダーの値を独自の値に置き換えます。

```
{
  "Version": "2012-10-17",		 	 	 		 	 	 
  "Statement": [
    {
      "Sid": "AllowCallerAccessViaService",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:role/DevOpsAgentUserRole"
      },
      "Action": [
        "kms:DescribeKey",
        "kms:GenerateDataKey*",
        "kms:Decrypt",
        "kms:Encrypt",
        "kms:ReEncrypt*"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "kms:ViaService": "aidevops.us-east-1.amazonaws.com"
        }
      }
    },
    {
      "Sid": "AllowDevOpsAgentServiceDescribeKeyAccess",
      "Effect": "Allow",
      "Principal": {
        "Service": "aidevops.amazonaws.com"
      },
      "Action": [
        "kms:DescribeKey"
      ],
      "Resource": "*"
    },
    {
      "Sid": "AllowDevOpsAgentAccessForAgentSpace",
      "Effect": "Allow",
      "Principal": {
        "Service": "aidevops.amazonaws.com"
      },
      "Action": [
        "kms:GenerateDataKey*",
        "kms:Decrypt",
        "kms:Encrypt",
        "kms:ReEncrypt*"
      ],
      "Resource": "*",
      "Condition": {
        "ArnLike": {
          "aws:SourceArn": "arn:aws:aidevops:us-east-1:111122223333:agentspace/*"
        },
        "StringLike": {
          "kms:EncryptionContext:aws-crypto-ec:aws:aidevops:arn": "arn:aws:aidevops:us-east-1:111122223333:agentspace/*"
        }
      }
    },
    {
      "Sid": "AllowDevOpsAgentAccessForService",
      "Effect": "Allow",
      "Principal": {
        "Service": "aidevops.amazonaws.com"
      },
      "Action": [
        "kms:GenerateDataKey*",
        "kms:Decrypt",
        "kms:Encrypt",
        "kms:ReEncrypt*"
      ],
      "Resource": "*",
      "Condition": {
        "ArnLike": {
          "aws:SourceArn": "arn:aws:aidevops:us-east-1:111122223333:service/*"
        },
        "StringLike": {
          "kms:EncryptionContext:aws-crypto-ec:aws:aidevops:arn": "arn:aws:aidevops:us-east-1:111122223333:service/*"
        }
      }
    }
  ]
}
```

ポリシーには、次のステートメントが含まれています。
+ **AllowKeyAdministration** — アカウントのルートにキーへの完全な管理アクセスを付与します。を AWS アカウント ID `111122223333`に置き換えます。
+ **AllowCallerAccessViaService** — すべての同期 AWS DevOps エージェントオペレーションに必要な KMS アクセス許可を IAM プリンシパルに付与します。これには、リソース作成時のキー検証、および発信者に直接応答を返す API コールの暗号化および復号オペレーションが含まれます。この`kms:ViaService`条件により、 AWS DevOps エージェントサービスを介してのみキーを使用できます。を AWS アカウント ID `111122223333`に、 を AWS リージョン`us-east-1`に置き換えます。
+ **AllowDevOpsAgentServiceAccessForAgentSpace** / **AllowDevOpsAgentServiceAccessForService** — 非同期オペレーションに必要な KMS アクセス許可を`aidevops.amazonaws.com`サービスプリンシパルに付与します。 AWS DevOps Agent は、このサービスプリンシパルを使用して、運用調査、インシデントの分析、サービス間のイベントの関連付け、根本原因分析の生成などのバックグラウンドオペレーションを実行するときにデータを暗号化および復号します。このアクセスがないと、 AWS DevOps Agent はユーザーに代わって調査を実行するために必要な暗号化されたデータを読み取ることができません。`aws:SourceArn` 条件は、 AWS DevOps エージェントリソースから送信されるリクエストへのアクセスを制限し、`kms:EncryptionContext`条件は暗号化コンテキストがリソース ARNs と一致するようにします。を AWS アカウント ID `111122223333`に、 を AWS リージョン`us-east-1`に置き換えます。

キーポリシーの詳細については、[「 Key Management Service デベロッパーガイド」の「KMS AWS のキーポリシー](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)」を参照してください。 *AWS *

### ステップ 3: リソースを作成するときにキーを指定する
<a name="step-3-specify-the-key-when-creating-a-resource"></a>

キーを作成してキーポリシーを設定したら、 AWS DevOps エージェントリソースの作成時にキーを指定できます。

#### コンソール
<a name="console"></a>

コンソールでエージェントスペースを作成するときにカスタマーマネージドキーを設定するには:

1.  AWS DevOps エージェントコンソールを開きます。

1. **エージェントスペースの作成**または**サービスの登録**を選択します。

1. エージェントスペースの詳細 (名前、説明、IAM ロール) を入力します。

1. **詳細設定**セクションを展開します。

1. **暗号化キータイプ**で、**カスタマーマネージドキー**を選択します。

1. ドロップダウンリストから KMS キーを選択するか、KMS キー ARN を入力します。

1. キーポリシー展開可能セクションに表示される**キーポリシー**を確認します。このポリシーが KMS キーにアタッチされていることを確認します。コピーボタンを使用してポリシーをコピーできます。

1. 残りの設定を完了し、**作成**を選択します。

**注記**  
** ドロップダウンリストに KMS キーが表示されない場合は、キーが[ステップ 1 ](#step-1-create-a-customer-managed-key)の要件を満たし、 `kms:ListKeys` および アクセス`kms:DescribeKey`許可があることを確認します。

#### API
<a name="api"></a>

##### カスタマーマネージドキーを使用したエージェントスペースの作成
<a name="creating-an-agent-space-with-a-customer-managed-key"></a>

エージェントスペースを作成するときに `kmsKeyArn`パラメータを指定します。値は完全な KMS キー ARN である必要があります。

```
{
  "name": "my-agent-space",
  "description": "An encrypted agent space",
  "kmsKeyArn": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
}
```

##### カスタマーマネージドキーでサービスを登録する
<a name="registering-a-service-with-a-customer-managed-key"></a>

サービスを登録するときに `kmsKeyArn`パラメータを指定します。値は完全な KMS キー ARN である必要があります。このパラメータは、Dynatrace、ServiceNow、PagerDuty、GitLab、GitHub、および MCP サーバーを含むすべてのサービスタイプでサポートされています。

```
{
  "service": "dynatrace",
  "kmsKeyArn": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
  "serviceDetails": { ... }
}
```

**注記**  
** リソースの作成時にカスタマーマネージドキーを指定する必要があります。既存のリソースのカスタマーマネージドキーを追加または変更することはできません。

## AWS DevOps エージェント暗号化コンテキスト
<a name="aws-devops-agent-encryption-context"></a>

[暗号化コンテキスト](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context)は、データに関する追加のコンテキスト情報を含むシークレット以外のキーと値のペアのセットです。 AWS KMS は、追加の[認証データ](https://docs.aws.amazon.com/crypto/latest/userguide/cryptography-concepts.html#term-aad)として暗号化コンテキストを使用して、認証された暗号化をサポートします。データを暗号化するリクエストに暗号化コンテキストを含めると、 AWS KMS は暗号化コンテキストを暗号化されたデータにバインドします。データを復号するには、リクエストに同じ暗号化コンテキストを含める必要があります。

AWS DevOps エージェントは、すべての暗号化オペレーションで次の暗号化コンテキストを使用します。

```
{
  "aws-crypto-ec:aws:aidevops:arn": "arn:aws:aidevops:{region}:{accountId}:{resourceType}/{resourceId}"
}
```

暗号化コンテキスト値は、暗号化されている AWS DevOps エージェントリソースの ARN です。この暗号化コンテキストは、キーポリシー条件と AWS CloudTrail ログで使用して、キーの使用方法を監査できます。

## キー管理
<a name="key-management"></a>

KMS キーの削除を無効化またはスケジュールすると、 AWS DevOps Agent はデータを復号化できません。これにより、暗号化されたデータを読み取るオペレーションで`AccessDeniedException`エラーが発生します。

**重要**  
** カスタマーマネージドキーを使用する場合は、キーとそのアクセス許可を管理する責任があります。キーが無効または削除された場合、または AWS DevOps Agent がキーを使用するアクセス許可を失った場合、暗号化されたデータにアクセスできなくなります。

次の表に、一般的な障害シナリオを示します。


| Action | Impact | 
| --- | --- | 
| キーポリシーのアクセス許可が取り消されました | AccessDeniedException 暗号化および復号オペレーションでの | 
| KMS キーが無効になっている | DisabledException 暗号化および復号オペレーションでの | 
| KMS キーの削除が予定されています | KMSInvalidStateException 暗号化および復号オペレーションでの | 
| KMS キーが削除されます | 永続的なデータ損失 — 暗号化されたデータは復元できません | 

キーを無効化または削除する前に:

1. アクティブな AWS DevOps エージェントリソースがキーに依存していないことを確認します。

1. 削除をスケジュールする前に、まずキーを無効にして影響をテストすることを検討してください。

1. AWS KMS は、キーを削除する前の最小待機期間を適用し、必要に応じてキャンセルする時間を確保します。

**注:**: AWS DevOps エージェントは、新しいキーでデータを自動的に再暗号化しません。新しいカスタマーマネージドキーにローテーションする必要がある場合は、新しいキーを使用して新しいリソースを作成する必要があります。

## 暗号化キーのモニタリング
<a name="monitoring-your-encryption-keys"></a>

 AWS DevOps Agent でカスタマーマネージドキーを使用する場合、[AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) を使用して、 AWS DevOps Agent が KMS AWS に送信するリクエストを追跡できます。

CloudTrail イベントは、次の方法でフィルタリングできます。
+ **イベントソース** — `kms.amazonaws.com`
+ **暗号化コンテキストキー** — `aws-crypto-ec:aws:aidevops:arn`
+ **キー ARN** — リクエストパラメータのカスタマーマネージドキー ARN

詳細については、*AWS 「 Key Management Service デベロッパーガイド*[AWS 」の AWS CloudTrail を使用した KMS API コールのログ記録](https://docs.aws.amazon.com/kms/latest/developerguide/logging-using-cloudtrail.html)」を参照してください。

# VPC エンドポイント (AWS PrivateLink)
<a name="aws-devops-agent-security-vpc-endpoints-aws-privatelink"></a>

 AWS PrivateLink を使用して、VPC と AWS DevOps エージェント間のプライベート接続を作成できます。インターネットゲートウェイ、NAT デバイス、VPN 接続、または Direct Connect 接続を使用せずに、VPC 内にあるかのように AWS DevOps エージェントにアクセスできます。VPC 内のインスタンスは、 AWS DevOps エージェントにアクセスするためにパブリック IP アドレスを必要としません。

このプライベート接続を確立するには、 AWS PrivateLink を搭載したインターフェイスエンドポイントを作成します。インターフェイスエンドポイントに対して有効にする各サブネットにエンドポイントネットワークインターフェイスを作成します。これらは、 AWS DevOps エージェント宛てのトラフィックのエントリポイントとして機能するリクエスタ管理のネットワークインターフェイスです。

詳細については、[「 AWS PrivateLink ガイド」の「PrivateLink 経由で AWS サービスにアクセスする](https://docs.aws.amazon.com/vpc/latest/privatelink/privatelink-access-aws-services.html)」を参照してください。 *AWS PrivateLink *

## AWS DevOps エージェント VPC エンドポイントに関する考慮事項
<a name="considerations-for-aws-devops-agent-vpc-endpoints"></a>

 AWS DevOps Agent のインターフェイスエンドポイントを設定する前に、*AWS 「 PrivateLink ガイド*」の[「考慮事項](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#considerations-interface-endpoints)」を参照してください。

AWS DevOps Agent は、次の VPC エンドポイントを介した API コールをサポートしています。


| Category | エンドポイントサフィックス | 
| --- | --- | 
| AWS DevOps エージェントコントロールプレーン API アクション | aidevops | 
| AWS DevOps エージェントランタイムオペレーション | aidevops-dataplane | 
| AWS DevOps エージェントウェブフックイベント | event-ai | 

## AWS DevOps Agent のインターフェイスエンドポイントを作成する
<a name="create-an-interface-endpoint-for-aws-devops-agent"></a>

Amazon VPC コンソールまたは コマンドラインインターフェイス (AWS CLI) を使用して、 AWS DevOps Agent AWS のインターフェイスエンドポイントを作成できます。詳細については、*AWS 「 PrivateLink * [ガイド」の「インターフェイスエンドポイントの作成](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html)」を参照してください。

次のサービス名を使用して、 AWS DevOps Agent のインターフェイスエンドポイントを作成します。
+ com.amazonaws.\$1region\$1.aidevops
+ com.amazonaws.\$1region\$1.aidevops-dataplane
+ com.amazonaws.\$1region\$1.event-ai

 エンドポイントを作成後に、プライベート DNS ホスト名を有効にするオプションがあります。VPC エンドポイントの作成時に VPC コンソールで [**プライベート DNS 名を有効にする**] を選択して、この設定名を有効にします。

インターフェイスエンドポイントのプライベート DNS を有効にすると、デフォルトのリージョン DNS 名を使用して AWS DevOps エージェントに API リクエストを行うことができます。次の例は、デフォルトのリージョン DNS 名の形式を示しています。
+ aidevops.\$1region\$1.api.aws
+ aidevops-dataplane.\$1region\$1.amazonaws.com
+ event-ai.\$1region\$1.api.aws

## インターフェイスエンドポイントのエンドポイントポリシーを作成する
<a name="create-an-endpoint-policy-for-your-interface-endpoint"></a>

エンドポイントポリシーは、インターフェイスエンドポイントにアタッチできる IAM リソースです。デフォルトのエンドポイントポリシーでは、インターフェイスエンドポイントを介して AWS DevOps エージェントへのフルアクセスを許可します。VPC から AWS DevOps エージェントに許可されるアクセスを制御するには、カスタムエンドポイントポリシーをインターフェイスエンドポイントにアタッチします。

エンドポイントポリシーは以下の情報を指定します。
+ アクションを実行できるプリンシパル (AWS アカウント、IAM ユーザー、IAM ロール）。
+ 実行可能なアクション。
+ このアクションを実行できるリソース。

詳細については、*AWS 「 PrivateLink ガイド*」の[「エンドポイントポリシーを使用してサービスへのアクセスを制御する](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html)」を参照してください。