

# 設定バンドルの暗号化
<a name="configuration-bundles-encryption"></a>

設定バンドル`kmsKeyArn`で を指定すると、サービスはエンベロープ暗号化を使用して**コンポーネント設定** (システムプロンプト、ツールの説明、およびその他の設定コンテンツ) を暗号化します。他のすべてのバンドルメタデータ (名前、説明、バージョン IDs、タイムスタンプ) は、 AWS 所有キーで暗号化されたままです。

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

設定バンドルの暗号化では、発信者認証情報によるエンベロープ暗号化を使用します。を使用してバンドルを作成または更新すると`kmsKeyArn`、サービスは (フォ[ワードアクセスセッション](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#fas)を介して) 認証情報を使用して KMS からデータ暗号化キー (DEK) を生成します。このサービスは、その DEK で AES-GCM を使用してコンポーネント設定をローカルで暗号化し、暗号化された DEK をバンドルとともに保存します。バンドルを取得すると、サービスは認証情報を使用して DEK を復号し、コンポーネントを復号します。

呼び出し元には`kms:GenerateDataKey`、キーに対する `kms:Decrypt`、、`kms:DescribeKey`、および アクセス`kms:ReEncrypt*`許可が必要です。

AgentCore 最適化は、対称暗号化 KMS キーのみをサポートします。KMS キーは、設定バンドルと同じ AWS リージョンに存在する必要があります。

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

次のキーポリシーは、設定バンドルの暗号化に必要な最小限のアクセス許可を提供します。このポリシーには以下の 2 つのステートメントがあります。
+  **AllowCallerAccess** – IAM ユーザーまたはロールが 経由でキーを検証できるようにします`DescribeKey`。
+  **AllowCallerCryptoOps** – IAM ユーザーまたはロールがデータキーを生成、復号、再暗号化 (キーローテーションの場合) できるようにします。これは暗号化コンテキストによってスコープされます。

```
{
"Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowCallerAccess",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:role/MyConfigBundleRole"
      },
      "Action": "kms:DescribeKey",
      "Resource": "*"
    },
    {
      "Sid": "AllowCallerCryptoOps",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:role/MyConfigBundleRole"
      },
      "Action": [
        "kms:GenerateDataKey",
        "kms:Decrypt",
        "kms:ReEncrypt*"
      ],
      "Resource": "*",
      "Condition": {
        "StringLike": {
          "kms:EncryptionContext:aws:bedrock-agentcore:configurationBundleArn": "arn:aws:bedrock-agentcore:us-east-1:111122223333:configuration-bundle/*"
        }
      }
    }
  ]
}
```

ポリシーには、次のステートメントが含まれています。
+  **AllowCallerAccess** – バンドルの作成時または更新時にキー検証のアクセス`kms:DescribeKey`許可を IAM ロールに付与します。{{111122223333}} をアカウント ID に、{{MyConfigBundleRole}} を設定バンドルを管理する IAM ロールまたはユーザーに置き換えます。
+  **AllowCallerCryptoOps** – `aws:bedrock-agentcore:configurationBundleArn`暗号化コンテキストによってスコープされた IAM ロール `kms:GenerateDataKey``kms:Decrypt`、、および アクセス`kms:ReEncrypt*`許可を付与します。アクセス`kms:ReEncrypt*`許可は、キーローテーション (既存のバンドルの KMS キーの変更) に必要です。{{111122223333}}、{{MyConfigBundleRole}}、us{{-east-1}} を値に置き換えます。アカウント内のすべての設定バンドルへのアクセスを許可するには、 `StringLike`でワイルドカードを使用します`arn:aws:bedrock-agentcore:us-east-1:111122223333:configuration-bundle/*`。

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

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

```
{
  "aws:bedrock-agentcore:configurationBundleArn": "arn:aws:bedrock-agentcore:us-east-1:111122223333:configuration-bundle/bundle-id"
}
```

この暗号化コンテキストをキーポリシー条件で使用して、上記のキーポリシーの例の `AllowCallerCryptoOps`ステートメントに示すように、KMS オペレーションを特定の設定バンドルに制限できます。

### カスタマーマネージド KMS キーを使用した設定バンドルの作成
<a name="configuration-bundles-encryption-creating"></a>

設定バンドルを暗号化するには、[CreateConfigurationBundle](https://docs.aws.amazon.com/bedrock-agentcore-control/latest/APIReference/API_CreateConfigurationBundle.html) を呼び出すときに `kmsKeyArn`パラメータを指定します。

**Example**  

```
aws bedrock-agentcore-control create-configuration-bundle \
  --bundle-name "MyEncryptedBundle" \
  --kms-key-arn "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" \
  --components '{
    "arn:aws:bedrock-agentcore:us-east-1:111122223333:runtime/my-agent": {
      "configuration": {
        "systemPrompt": "You are a helpful assistant.",
        "modelId": "anthropic.claude-3-sonnet"
      }
    }
  }'
```

```
import boto3

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

response = client.create_configuration_bundle(
    bundleName='MyEncryptedBundle',
    kmsKeyArn='arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab',
    components={
        'arn:aws:bedrock-agentcore:us-east-1:111122223333:runtime/my-agent': {
            'configuration': {
                'systemPrompt': 'You are a helpful assistant.',
                'modelId': 'anthropic.claude-3-sonnet'
            }
        }
    }
)

print(f"Bundle ID: {response['bundleId']}")
```

### 既存のバンドルの暗号化設定を変更する
<a name="configuration-bundles-encryption-changing"></a>

[UpdateConfigurationBundle](https://docs.aws.amazon.com/bedrock-agentcore-control/latest/APIReference/API_UpdateConfigurationBundle.html) を使用して、既存のバンドルの暗号化設定を変更できます。
+  **暗号化の追加** – バンドルなしで作成された `kmsKeyArn`を指定します。サービスは新しい DEK を生成し、コンポーネント設定を暗号化します。
+  **キーのローテーション** – 別の を指定します`kmsKeyArn`。このサービスは、 を使用して既存の DEK を古いキーから新しいキーに再ラップします`kms:ReEncrypt`。呼び出し元には、両方のキーに対するアクセス許可が必要です。古いキーが使用できない場合 (無効、削除、またはアクセス許可がない場合）、更新は失敗します。

**注記**  
設定バンドルが追加されると、カスタマーマネージドキー暗号化をその設定バンドルから削除することはできません。

## 設定バンドルの KMS 使用状況のモニタリング
<a name="configuration-bundles-encryption-monitoring"></a>

設定バンドル KMS オペレーションには、次の CloudTrail イベント名が表示されます。
+  `GenerateDataKey` – カスタマーマネージドキーを使用してバンドルを作成する場合、または既存のバンドルに暗号化を追加する場合。`encryptionContext` フィールドには が含まれます`aws:bedrock-agentcore:configurationBundleArn`。
+  `Decrypt` – バンドルコンテンツ (GetConfigurationBundle、GetConfigurationBundleVersion) を取得する場合、または暗号化されたバンドルを更新する場合。
+  `ReEncrypt` — UpdateConfigurationBundle を介して既存のバンドルの KMS キーをローテーションする場合。
+  `DescribeKey` – バンドルの作成時または更新時にキーを検証する場合。

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

設定バンドルで使用されるカスタマーマネージド KMS キーを無効化または削除する場合:
+  **CreateConfigurationBundle** – での検証時に失敗します`ValidationException`。
+  **UpdateConfigurationBundle** – サービスは既存の DEK を復号して新しいコンポーネントを再暗号化できないため、失敗します。古いキーは再ラップできないため、キーローテーションも失敗します。
+  **GetConfigurationBundle / GetConfigurationBundleVersion** – サービスは DEK またはコンポーネント設定を復号できないため失敗します。
+  **ListConfigurationBundles / ListConfigurationBundleVersions** – リストはメタデータのみを返し、KMS オペレーションを必要としないため、成功します。
+  **DeleteConfigurationBundle** – 削除にはバンドルデータの復号化が必要ないため、成功します。

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