

# バッチ評価の暗号化
<a name="batch-evaluations-encryption"></a>

バッチ評価`kmsKeyArn`で を指定すると、サービスは KMS による S3 サーバー側の暗号化 (SSE-KMS) を使用して S3 に保存されているすべての出力アーティファクトを暗号化します。これには、データソース設定、セッションメタデータ、評価結果が含まれます。

`kmsKeyArn` は、 を介して作成時に指定されます`StartBatchEvaluation`。

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

バッチ評価暗号化は S3 SSE-KMS を使用します。サービスが S3 でバッチ評価出力を書き込みまたは読み取ると、S3 はサービスに代わって KMS を呼び出してデータを暗号化または復号します。サービスプリンシパル (`bedrock-agentcore.amazonaws.com`) には、キーポリシーで KMS アクセス許可が必要です。

API 時に、サービスは、ドライランチェック (転送アクセスセッション) を使用して発信者に KMS アクセス許可があることを検証します。これにより、バッチ評価ワークフロー中に非同期で失敗するのではなく、アクセス許可の問題がすぐに検出されます。

また、サービスが独自の認証情報`kms:GenerateDataKey`を使用して を実行できることを検証し、キーポリシーが暗号化された出力を書き込むために必要なアクセス許可をサービスプリンシパルに付与することを確認します。

AgentCore Evaluations は、対称暗号化 KMS キーのみをサポートします。KMS キーは、バッチ評価と同じ AWS リージョンにある必要があります。

### カスタマーマネージド KMS キーを使用するためのアクセス許可の設定
<a name="batch-evaluations-encryption-key-policy"></a>

次のキーポリシーは、バッチ評価の暗号化に必要な最小限のアクセス許可を提供します。このポリシーには以下の 3 つのステートメントがあります。
+  **AllowCallerAccess** – IAM ユーザーまたはロールが 経由でキーを検証できるようにします`DescribeKey`。
+  **AllowCallerCryptoOps** – IAM ユーザーまたはロールが暗号化コンテキストの範囲に応じて暗号化および復号できるようにします。
+  **AllowServicePrincipalAccess** – AgentCore サービスプリンシパルが、ソースアカウントとソース ARN の範囲にある S3 のバッチ評価データを暗号化および復号できるようにします。

```
{
"Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowCallerAccess",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:role/MyBatchEvaluationRole"
      },
      "Action": "kms:DescribeKey",
      "Resource": "*"
    },
    {
      "Sid": "AllowCallerCryptoOps",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:role/MyBatchEvaluationRole"
      },
      "Action": [
        "kms:GenerateDataKey",
        "kms:Decrypt"
      ],
      "Resource": "*",
      "Condition": {
        "StringLike": {
          "kms:EncryptionContext:aws:bedrock-agentcore:batchEvaluationArn": "arn:aws:bedrock-agentcore:us-east-1:111122223333:batch-evaluate/*"
        }
      }
    },
    {
      "Sid": "AllowServicePrincipalAccess",
      "Effect": "Allow",
      "Principal": {
        "Service": "bedrock-agentcore.amazonaws.com"
      },
      "Action": [
        "kms:GenerateDataKey",
        "kms:Decrypt"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "111122223333"
        },
        "ArnLike": {
          "aws:SourceArn": "arn:aws:bedrock-agentcore:us-east-1:111122223333:batch-evaluate/*"
        }
      }
    }
  ]
}
```

ポリシーには、次のステートメントが含まれています。
+  **AllowCallerAccess** – バッチ評価の作成時にキー検証のアクセス`kms:DescribeKey`許可を IAM ロールに付与します。{{111122223333}} をアカウント ID に置き換え、{{MyBatchEvaluationRole}} をバッチ評価を開始する IAM ロールまたはユーザーに置き換えます。
+  **AllowCallerCryptoOps** – `aws:bedrock-agentcore:batchEvaluationArn`暗号化コンテキストによってスコープされた IAM ロール`kms:GenerateDataKey`と`kms:Decrypt`アクセス許可を付与します。{{111122223333}}、{{MyBatchEvaluationRole}}、us{{-east-1}} を値に置き換えます。アカウント内のすべてのバッチ評価へのアクセスを許可するには、 `StringLike`でワイルドカードを使用します`arn:aws:bedrock-agentcore:us-east-1:111122223333:batch-evaluate/*`。
+  **AllowServicePrincipalAccess** – S3 のバッチ評価データを暗号化および復号するための AgentCore サービスプリンシパル`kms:GenerateDataKey`と`kms:Decrypt`アクセス許可を付与します。混乱した代理攻撃を防ぐために、ソースアカウントとソース ARN (`aws:SourceArn`) によってスコープされます。{{us-east-1}} と {{111122223333}} をリージョンとアカウント ID に置き換えます。

### カスタマーマネージド KMS キーへのアクセスのスコープダウン
<a name="batch-evaluations-encryption-scoping"></a>

暗号化コンテキストを使用して、カスタマーマネージドキーへのアクセスの範囲を絞り込むことができます。AgentCore Evaluations には、すべての KMS オペレーションに次の暗号化コンテキストが含まれています。

```
{
  "aws:bedrock-agentcore:batchEvaluationArn": "arn:aws:bedrock-agentcore:us-east-1:111122223333:batch-evaluate/batch-evaluation-id"
}
```

この暗号化コンテキストをキーポリシー条件で使用して、上記のキーポリシーの例の `AllowCallerCryptoOps`ステートメントに示すように、KMS オペレーションを特定のバッチ評価に制限できます。は、暗号化コンテキストではなくスコープ`aws:SourceArn`に `AllowServicePrincipalAccess`を使用することに注意してください。

## カスタマーマネージド KMS キーを使用したバッチ評価の開始
<a name="batch-evaluations-encryption-creating"></a>

を呼び出すときに `kmsKeyArn`パラメータを指定します`StartBatchEvaluation`。

**Example**  
AgentCore CLI では、 `--kms-key`オプションを使用して、バッチ評価結果を暗号化するための単一の KMS キー ARN を指定します。AgentCore CLI は `--kms-key`フラグを使用します。これは CLI AWS の `--kms-key-arn`フラグおよび boto3 `kmsKeyArn`パラメータとは異なります。  

```
agentcore run batch-evaluation \
  -r MyAgent \
  -e Builtin.Correctness \
  --kms-key arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab
```

```
aws bedrock-agentcore start-batch-evaluation \
  --batch-evaluation-name "MyEncryptedBatchEval" \
  --kms-key-arn "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" \
  --evaluators '[{"evaluatorArn": "arn:aws:bedrock-agentcore:::evaluator/Builtin.Helpfulness"}]' \
  --data-source-config '{
    "cloudwatchLogs": {
      "logGroupNames": ["/aws/bedrock-agentcore/sessions/my-agent"],
      "serviceNames": ["my-agent.DEFAULT"],
      "filterConfig": {
        "timeRange": {
          "startTime": "2025-01-01T00:00:00Z",
          "endTime": "2025-01-02T00:00:00Z"
        }
      }
    }
  }'
```

```
import boto3

client = boto3.client('bedrock-agentcore')

response = client.start_batch_evaluation(
    batchEvaluationName='MyEncryptedBatchEval',
    kmsKeyArn='arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab',
    evaluators=[{'evaluatorArn': 'arn:aws:bedrock-agentcore:::evaluator/Builtin.Helpfulness'}],
    dataSourceConfig={
        'cloudwatchLogs': {
            'logGroupNames': ['/aws/bedrock-agentcore/sessions/my-agent'],
            'serviceNames': ['my-agent.DEFAULT'],
            'filterConfig': {
                'timeRange': {
                    'startTime': '2025-01-01T00:00:00Z',
                    'endTime': '2025-01-02T00:00:00Z'
                }
            }
        }
    }
)

print(f"Batch Evaluation ID: {response['batchEvaluationId']}")
```

## バッチ評価の KMS 使用状況のモニタリング
<a name="batch-evaluations-encryption-monitoring"></a>

バッチ評価 KMS オペレーションには、次の CloudTrail イベント名が表示されます。
+  `GenerateDataKey` — 暗号化されたバッチ評価出力を S3 (データソース設定、セッションメタデータ、評価結果) に書き込む場合。`encryptionContext` フィールドには が含まれます`aws:bedrock-agentcore:batchEvaluationArn`。
+  `Decrypt` — 暗号化されたバッチ評価出力を S3 から読み取る場合。
+  `DescribeKey` — バッチ評価の作成時にキーを検証する場合。

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

## キーが使用できなくなったときの動作
<a name="batch-evaluations-encryption-unavailable"></a>

バッチ評価で使用されるカスタマーマネージド KMS キーを無効化または削除する場合:
+  **StartBatchEvaluation** — での検証時に失敗します`ValidationException`。
+  **GetBatchEvaluation** — メタデータ (名前、ステータス、タイムスタンプ) を返しますが、暗号化された S3 オブジェクトに保存されている評価結果はサービスで読み取ることができません。
+  **ListBatchEvaluations** — リストはメタデータのみを返し、KMS オペレーションを必要としないため成功します。
+  **StopBatchEvaluation** — データの復号化を必要としないため、停止は成功します。
+  **DeleteBatchEvaluation** — S3 オブジェクトの削除に KMS 復号を必要としないため成功します。

アクセスを復元するには、キーを再度有効にするか、キーポリシーを更新して必要なアクセス許可を付与します。

上記のバッチ評価ライフサイクルオペレーションは、AgentCore CLI コマンドにマッピングされます。`stop` および `archive` コマンドは、 `-i, --id <id>`オプションを使用してジョブをターゲットにします。`view batch-evaluation` コマンドは ID を位置引数として受け取ります。
+  **StartBatchEvaluation** — `agentcore run batch-evaluation --kms-key <arn>` ( `-r/--runtime`と を使用`-e/--evaluator`)
+  **GetBatchEvaluation** — `agentcore view batch-evaluation <id>` 
+  **ListBatchEvaluations** — `agentcore view batch-evaluation`または `agentcore batch-evaluations history` 
+  **StopBatchEvaluation** — `agentcore stop batch-evaluation -i <id>` 
+  **DeleteBatchEvaluation** — `agentcore archive batch-evaluation -i <id>` 