

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

# 認証とセキュリティ
<a name="connecting-to-devops-agent-remote-servers-authentication-and-security"></a>

MCP エンドポイントと A2A エンドポイントの両方で 2 つの認証方法を使用できます。
+ **アクセストークン (ベアラー)** – 1 つのエージェントスペースにスコープされた 1 つのトークン。個別の使用のための最も簡単なセットアップ。
+ **AWS SigV4** – AWS 認証情報ベースの認証。複数のエージェントスペースをサポートし、既存の AWS ID ガバナンスと統合します。 AWS 認証情報を使用してリクエストに署名するローカルプロキシである [mcp-proxy-for-aws](https://github.com/aws/mcp-proxy-for-aws) によって自動的に処理されます。

## アクセストークンを作成する
<a name="create-an-access-token"></a>

### 前提条件
<a name="prerequisites"></a>
+ アクセストークン機能は、エージェントスペースで有効にする必要があります。
+ アクセストークン (`aidevops:CreateAccessToken`、、) を管理するには`aidevops:RevokeAccessToken`、IAM アクセス許可が必要です`aidevops:RotateAccessToken`。利用できるタイムゾーンの一覧については、「[DevOps エージェント IAM アクセス許可](aws-devops-agent-security-devops-agent-iam-permissions.md)」を参照してください。

### アクセストークンを有効にする
<a name="enable-access-tokens"></a>

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

1. エージェントスペースを選択します。

1. **[設定]** タブを選択します。

1. **アクセストークン**セクションで、**有効化**を選択します。

1. アクションを確認します。

### トークンを作成する
<a name="create-a-token"></a>

1. エージェントスペースの DevOps エージェントウェブアプリを開き、ナビゲーションメニューから**設定**を選択し、**アクセストークン**を選択します。

1. **[Generate token]** を選択します。

1. トークンの名前を入力します。

1. スコープを選択します。
   + `read` – 調査、レコメンデーション、チャット、エージェントスペースリソースを表示します。
   + `operate` – フルアクセス。にすべてが含まれ`read`、メッセージの送信、チャットの作成、バックログタスクとレコメンデーションの管理を行います。

1. クライアントタイプを選択します。
   + `human` – IDE および CLI の使用 (Kiro、Claude Code、Cursor、およびその他のインタラクティブツール）。
   + `agent` – 自律 A2A 統合とプログラムエージェント用。

1. 有効期限 (1～60 日) を設定します。

1. トークン値をコピーし、[AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) などの安全で安全な場所に保存します。再度取得することはできません。

トークンを作成すると、ウェブアプリケーションにクライアントに直接コピーできる設定例が表示されます。

## SigV4 認証を使用する
<a name="use-sigv4-authentication"></a>

SigV4 認証は、アクセストークンの代わりに AWS 認証情報を使用します。Kiro power および Claude Code プラグインには、ローカル AWS 認証情報を使用してリクエストに署名する`mcp-proxy-for-aws`、 を介した組み込み SigV4 サポートが含まれています。

### SigV4 を使用する場合
<a name="when-sigv4-is-used"></a>
+ アクセストークンが設定されていないか失敗した場合 (期限切れ、無効) の**フォールバック**として。
+ 複数のエージェントスペースがあり、ツール呼び出し`agent_space_id`ごとに でルーティングする必要がある場合の**プライマリ**認証として。
+ **ユーザーの選択**として – Claude Code で、セットアップスキルを実行してベアラートークンから SigV4 認証に切り替えます。

### 前提条件
<a name="prerequisites"></a>
+ AWS 環境で利用可能な 認証情報 (SSO、環境変数、または 認証情報ファイルを使用）。
+ 認証情報には、 AWS DevOps エージェントアクションを呼び出すアクセス許可が必要です。必要なアクセス許可については、「[DevOps エージェント IAM アクセス許可](aws-devops-agent-security-devops-agent-iam-permissions.md)」を参照してください。
+ `uvx` インストール済み (プロキシは を介して実行されます`uvx mcp-proxy-for-aws@latest`)。

### 設定例
<a name="example-configuration"></a>

アクセストークンの代わりに SigV4 を使用するように MCP クライアントを設定するには、 を介してサーバーを実行します`mcp-proxy-for-aws`。をエージェントスペースのリージョン ( など`us-east-1`) `{region}`に置き換えます。

```
{
  "mcpServers": {
    "aws-devops-agent": {
      "command": "uvx",
      "timeout": 120000,
      "args": [
        "mcp-proxy-for-aws@latest",
        "https://connect.aidevops.{region}.api.aws/mcp",
        "--service", "aidevops",
        "--region", "{region}"
      ]
    }
  }
}
```

プロキシはローカル AWS 認証情報を使用して各リクエストに署名するため、アクセストークンは必要ありません。

### Multi-Agent-Spaceルーティング
<a name="multi-agent-space-routing"></a>

SigV4 モードでは、各ツール呼び出し`agent_space_id`を渡して、使用するエージェントスペースを指定します。これにより、1 つのクライアントから複数のエージェントスペースにルーティングできます。

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

### トークンスコープ
<a name="token-scoping"></a>
+ 最小権限を使用する: クライアントがメッセージを送信またはタスクを管理する必要がある`operate`場合にのみ、読み取り専用の統合`read`に を選択します。
+ トークンを定期的にローテーションします。トークンは、設定された期間 (最大 60 日) 後に期限切れになります。
+ 環境変数またはシークレットマネージャーにトークンを保存します。ソースコードでトークンをハードコードしないでください。
+ 人間によるレビューなしでエージェントのレスポンスを自動実行しないでください。

### IP 許可リスト
<a name="ip-allowlist"></a>

アクセストークンを作成するときは、オプションで IP 許可リストを指定できます。設定すると、トークンは指定された IP アドレスまたは CIDR 範囲からのみ使用できます。他の IPsは、アクセス拒否エラーで拒否されます。

### トークンのローテーションと取り消し
<a name="token-rotation-and-revocation"></a>
+ **ローテーション** – トークンをローテーションして、トークンの名前、スコープ、および IP 許可リストを保持しながら、新しいトークン値を生成します。古いトークンはすぐに無効になります。新しいトークン値でクライアント設定を更新します。ローテーションは新しいチャット履歴も開始します。次のセクションを参照してください。
+ **取り消し** – トークンが侵害された場合は、すぐに取り消します。取り消されたトークンは使用できず、復元することもできません。

#### チャット履歴とトークンのローテーション
<a name="chat-history-and-token-rotation"></a>

各トークンには独自のチャット履歴があります。トークンをローテーションすると、 AWS DevOps Agent は新しいトークン値を新しい ID として扱います。前のトークンで作成したチャットは、リモートサーバーに表示されなくなります。

#### 侵害されたトークンへの対応
<a name="responding-to-a-compromised-token"></a>

トークンが侵害された疑いがある場合は、次の手順に従います。

1. **すべてのトークンアクセスをブロック**する – AWS DevOps エージェントコンソールで、エージェントスペースを開き、**設定**タブを選択し、アクセストークンセクションで**無効化**を選択します。これにより、エージェントスペースへのすべてのトークンベースのアクセスが直ちにブロックされます。

1. **侵害されたトークンの取り消し** – ウェブアプリで、**設定** > **アクセストークン**に移動し、侵害されたトークンを選択し、**取り消し**を選択します。アクセストークンが無効になっている場合でも、トークンを取り消すことができます。

1. **アクセストークンの再有効化** – 侵害されたトークンを取り消した後、トークンベースのアクセスがまだ必要な場合は、**設定**タブからアクセストークンを再有効化します。

#### プログラムによるトークンの取り消し
<a name="revoking-tokens-programmatically"></a>

を使用してプログラムでトークンを取り消すこともできます`awscurl`。次のコマンドは SigV4 認証を使用します。リージョン (`us-east-1`) を、エージェントスペースが作成されたリージョンに置き換えます。

**注:** ステップ 1 では CLI AWS を使用します。ステップ 2 と 3 では、アクセストークンオペレーションに専用の CLI コマンドがまだないため、SigV4 で HTTP リクエストに署名するコマンドラインツールである [awscurl](https://github.com/okigan/awscurl) AWS を使用します。

**ステップ 1: エージェントスペースを一覧表示する**

```
aws aidevops list-agent-spaces --region us-east-1
```

**ステップ 2: エージェントスペースのアクセストークンを一覧表示する**

```
awscurl --service aidevops --region us-east-1 \
  -H "Accept: application/json" \
  "https://cp.aidevops.us-east-1.api.aws/v1/agentspaces/{agentSpaceId}/access-tokens"
```

**ステップ 3: トークンを取り消す**

```
awscurl --service aidevops --region us-east-1 -X POST \
  -H "Accept: application/json" \
  "https://cp.aidevops.us-east-1.api.aws/v1/agentspaces/{agentSpaceId}/access-tokens/{accessTokenId}/revoke"
```

`{agentSpaceId}` と を前のレスポンスの値`{accessTokenId}`に置き換えます。

### トレーサビリティ
<a name="traceability"></a>

AWS DevOps Agent は AWS CloudTrail にリモートサーバーアクティビティを記録します。これらのレコードを使用して、リモートサーバーを呼び出したユーザーと、その結果エージェントが何をしたかをトレースします。 AWS DevOps エージェントは、エージェントスペースをホストする AWS アカウントに CloudTrail イベントを配信します。

#### アクセストークン認証イベント
<a name="access-token-authentication-events"></a>

 AWS DevOps エージェントが MCP または A2A エンドポイントのアクセストークンを認証するたびに、CloudTrail に`AuthenticateAccessToken`イベントを発行します。 AWS DevOps エージェントは、成功した認証と失敗した認証の両方を記録します。これらのレコードを使用して、正当な使用を監査し、拒否された試行を検出します。例としては、期限切れまたは取り消されたトークン、IP 許可リストによってブロックされたリクエストなどがあります。

イベントには次の特性があります。
+ **イベントソース** – `aidevops.amazonaws.com`
+ **イベント名** – `AuthenticateAccessToken`
+ **管理イベント** – イベントは管理イベントであり、読み取り専用ではないため、読み取り専用イベントを除外しても表示され続けます。

イベントには、次のキーフィールドが含まれます。


| フィールド | 説明 | 
| --- | --- | 
| userIdentity.principalId | 提示されたアクセストークンの ID。 | 
| userName | アクセストークンの名前。 | 
| requestParameters.agentSpaceId | トークンが認証されるエージェントスペース。 | 
| requestParameters.accessTokenId | アクセストークン ID。 | 
| requestParameters.tokenName | アクセストークン名。 | 
| requestParameters.protocol | 使用されたMCPプロトコル — または A2A。 | 
| responseElements.AuthenticateAccessToken | 結果 —Success または Failure。 | 
| resources | トークンが認証するエージェントスペースリソース (AWS::AIDevOps::AgentSpace)。ARN によって識別されます。 | 
| additionalEventData.roleSessionName | 認証を成功させるには、ダウンストリームロールセッション名を の形式で指定しますtoken\_{spaceId}\_{timestamp}\_{tokenName}。これを使用して、認証をエージェントが実行するアクションと関連付けます。 | 
| sourceIPAddress | クライアントの IP アドレス。 | 
| userAgent | 利用可能な場合、クライアントの User-Agent 文字列。 | 
| errorCode, errorMessage | 失敗した認証の場合、認証が拒否された理由。 | 

**注記**  
** AWS DevOps Agent は raw ベアラートークン値を記録しません。イベントには、不透明なアクセストークン ID のみが表示されます。

#### ダウンストリームアクションイベント
<a name="downstream-action-events"></a>

アクセストークンを使用すると、 AWS DevOps Agent はユーザーに代わってアクションを実行するロールを引き受けます。 AWS DevOps Agent は、トークンと発信者を識別するセッションタグを使用して CloudTrail でこの`AssumeRole`呼び出しを記録します。
+ `AgentSpaceId` – エージェントスペースの識別子。
+ `UserId` – トークン作成者の ID。
+ `AccessTokenId` – トークンの一意の識別子。
+ `TokenName` – 使用されるアクセストークンの名前。
+ `ClientType` – 使用されるプロトコル (MCP、A2A)。
+ `SourceIp` – クライアントの IP アドレス。
+ `UserAgent` – Client User-Agent 文字列 (利用可能な場合）。

エージェントがユーザーに代わって実行する各アクションには、CloudTrail がログに記録する対応するダウンストリーム AWS API コールがあります。ロールセッション名は 形式を使用します`token_{spaceId}_{timestamp}_{tokenName}`。このセッション名は、`AuthenticateAccessToken`イベントの と一致し`roleSessionName`ます。これを使用して、認証からそれに従った特定のアクションをトレースします。

#### SigV4 呼び出し
<a name="sigv4-invocations"></a>

アクセストークンの代わりに AWS SigV4 認証を使用する呼び出しでは、`AuthenticateAccessToken`イベントは生成されません。 AWS DevOps Agent は、SigV4 リクエストを AWS Identity and Access Management (IAM) ID に属性付けします。エージェントがトリガーするダウンストリーム AWS API コールを通じて実行するアクションを追跡できます。

### VPC エンドポイントポリシーの制限
<a name="vpc-endpoint-policy-limitation"></a>

リモートサーバーエンドポイントは VPC エンドポイントポリシーをサポートしていません。アクセストークンまたは SigV4 認証のいずれかを使用した呼び出しは、VPC エンドポイントポリシーでは制限できません。

### アクセストークンの無効化
<a name="disabling-access-tokens"></a>

アクセストークン機能はデフォルトでオフになっています。有効にした後で無効にするには:

1. エージェントスペース**の設定**タブを開きます。

1. **Access tokens** セクションで、**Disable** を選択します。

を無効にすると、すべてのトークンベースのアクセスがすぐにブロックされます。既存のトークンは削除されませんが、機能を再度有効にするまで使用できません。

組織内のユーザーがアクセストークンを有効にできないようにするには、アクセストークン API アクションと `UpdateAgentSpace`アクション (アクセストークンの切り替えを制御する) を拒否するサービスコントロールポリシー (SCP) を作成します。

**注:** 拒否すると、他のエージェントスペースの更新 (名前、説明、ロケール) `aidevops:UpdateAgentSpace`も禁止されます。これが広すぎる場合は、SCP から省略します。残りの拒否は、誰かが機能を有効にしても、トークンの作成と使用を妨げます。

```
{
  "Version": "2012-10-17",		 	 	 		 	 	 
  "Statement": [
    {
      "Sid": "DenyAccessTokenOperations",
      "Effect": "Deny",
      "Action": [
        "aidevops:UpdateAgentSpace",
        "aidevops:CreateAccessToken",
        "aidevops:GetAccessToken",
        "aidevops:ListAccessTokens",
        "aidevops:RotateAccessToken",
        "aidevops:RevokeAccessToken"
      ],
      "Resource": "*"
    }
  ]
}
```

## トラブルシューティング
<a name="troubleshooting"></a>


| 症状 | 原因 | 解決策 | 
| --- | --- | --- | 
| HTTP 401 未承認 | トークンが無効または期限切れです。 | ウェブアプリで新しいトークンを作成するか、既存のトークンをローテーションします。 | 
| HTTP 400 「A2A-Version ヘッダーが必要」 | プロトコルバージョンヘッダーがありません。A2A v1.0 のみがサポートされています。 | A2A リクエストに A2A-Version: 1.0ヘッダーを追加します。 | 
| HTTP 400 「エージェントスペースが認証情報から解決されない」 | A2A \+ SigV4 リクエストには X-Agent-Space-Idヘッダーは含まれません。 | リクエストX-Agent-Space-Id: <agentSpaceId>に を追加します。 | 
| リクエストタイムアウト | 初期応答には 5～30 秒かかります。調査には 5～8 分かかります。 | クライアントタイムアウトを少なくとも 120 秒に設定します。 | 
| 接続が拒否されました | エンドポイント URL またはリージョンが正しくありません。 | URL 形式を確認します。 https://connect.aidevops.{region}.api.aws | 