View a markdown version of this page

データセットの暗号化 - Amazon Bedrock AgentCore

データセットの暗号化

データセットkmsKeyArnで を指定すると、サービスは KMS による S3 サーバー側の暗号化 (SSE-KMS) を使用して、保存されたすべての例を暗号化します。これには、ドラフトの例とすべての公開バージョンが含まれます。

kmsKeyArn はデータセットの作成後に変更できません。変更または削除することはできません。

仕組み

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

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

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

必要なキーポリシー

次のキーポリシーは、データセットの暗号化に必要な最小限のアクセス許可を付与します。これには、次の 2 つのステートメントが含まれます。

  • AllowCallerAccess — キーを検証して使用するCreateDatasetアクセス許可を呼び出す IAM ユーザーまたはロールを付与します。サービスは API 時にドライランチェックを実行して、発信者が KMS アクセスを持っていることを確認します。111122223333 をアカウント ID に置き換え、MyDatasetRole をデータセットを管理する IAM ロールまたはユーザーに置き換えます。

  • AllowAgentCoreDatasetAccess — AgentCore サービスプリンシパルに、S3 のデータセットコンテンツを暗号化および復号するアクセス許可を付与します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCallerAccess", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/MyDatasetRole" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt", "kms:DescribeKey" ], "Resource": "*" }, { "Sid": "AllowAgentCoreDatasetAccess", "Effect": "Allow", "Principal": { "Service": "bedrock-agentcore.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt", "kms:DescribeKey" ], "Resource": "*" } ] }
注記

これは最小ポリシーです。推奨されるセキュリティ条件については、「アクセスのスコープダウン」を参照してください。

アクセスのスコープダウン

キーを使用できるタイミングを制限する条件を追加できます。データセットの場合、サービスは KMS 書き込みオペレーション () を使用して次のコンテキストを送信しますGenerateDataKey

  • aws:SourceAccount — データセットを所有する AWS アカウント ID。

  • aws:SourceArn — 暗号化されているデータセットの ARN。

  • kms:EncryptionContext:aws:bedrock-agentcore:datasetArn — 暗号化コンテキストとしてのデータセット ARN。

次のポリシーは、アクセス許可を書き込み (条件付き) と読み取り (無条件) に分割します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCallerAccess", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/MyDatasetRole" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt", "kms:DescribeKey" ], "Resource": "*" }, { "Sid": "AllowAgentCoreDatasetWrite", "Effect": "Allow", "Principal": { "Service": "bedrock-agentcore.amazonaws.com" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" }, "StringLike": { "aws:SourceArn": "arn:aws:bedrock-agentcore:us-east-1:111122223333:dataset/*", "kms:EncryptionContext:aws:bedrock-agentcore:datasetArn": "arn:aws:bedrock-agentcore:us-east-1:111122223333:dataset/*" } } }, { "Sid": "AllowAgentCoreDatasetRead", "Effect": "Allow", "Principal": { "Service": "bedrock-agentcore.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:DescribeKey" ], "Resource": "*" } ] }
重要

読み取りステートメント (Decrypt、) に aws:SourceAccountまたは aws:SourceArn条件を追加しないでくださいDescribeKey。データセットのダウンロードでは署名付き S3 URLs が使用され、ダウンロードクライアントはソースコンテキストヘッダーを送信しません。これらの条件を読み取りオペレーションに追加すると、ダウンロードが失敗します。

111122223333 をアカウント ID に、us-east-1 を AWS リージョンに置き換えます。特定のデータセットの範囲を指定するには、ワイルドカードをデータセット ID に置き換えますarn:aws:bedrock-agentcore:us-east-1:111122223333:dataset/my-dataset-id

カスタマーマネージド KMS キーを使用したデータセットの作成

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

AgentCore CLI
  1. 暗号化されたデータセットを作成するには、データセットを追加する--kms-key-arnときに を渡し、 を実行しますagentcore deploy。KMS キー ARN を独自のキー ARN に置き換えます。

    agentcore add dataset --name encrypted_dataset \ --schema-type AGENTCORE_EVALUATION_PREDEFINED_V1 \ --kms-key-arn "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" # Add your scenarios to agentcore/datasets/encrypted_dataset.jsonl, then run agentcore deploy. agentcore deploy
AgentCore SDK
  1. from bedrock_agentcore.evaluation import DatasetClient client = DatasetClient(region_name="us-east-1") ds = client.create_dataset_and_wait( datasetName="encrypted_dataset", schemaType="AGENTCORE_EVALUATION_PREDEFINED_V1", kmsKeyArn="arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", source={ "inlineExamples": { "examples": [ {"scenario_id": "TC-01", "turns": [{"input": "Hello"}]} ] } }, )
AWS SDK
  1. import boto3 client = boto3.client('bedrock-agentcore-control') response = client.create_dataset( datasetName='encrypted_dataset', schemaType='AGENTCORE_EVALUATION_PREDEFINED_V1', kmsKeyArn='arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab', source={ 'inlineExamples': { 'examples': [ {'scenario_id': 'TC-01', 'turns': [{'input': 'Hello'}]} ] } } )
AWS CLI
  1. aws bedrock-agentcore-control create-dataset \ --dataset-name "encrypted_dataset" \ --schema-type AGENTCORE_EVALUATION_PREDEFINED_V1 \ --kms-key-arn "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" \ --source '{"inlineExamples": {"examples": [{"scenario_id": "TC-01", "turns": [{"input": "Hello"}]}]}}'

データセットの KMS 使用状況のモニタリング

データセット KMS オペレーションには、次の CloudTrail イベント名が表示されます。

  • GenerateDataKey — データセットを作成するとき、例を追加するとき、例を更新するとき、またはバージョンを発行するとき。encryptionContext フィールドには が含まれますaws:bedrock-agentcore:datasetArn

  • Decrypt — データセットコンテンツ (GetDataset、ListDatasetExamples) を読み取る場合、または署名付き URL のダウンロード中。

  • DescribeKey — データセットの作成時にキーを検証する場合。

キーが使用できなくなった場合の動作

データセットで使用されるカスタマーマネージド KMS キーを無効化または削除する場合:

  • CreateDataset — での検証時に失敗しますValidationException

  • AddDatasetExamples、UpdateDatasetExamples、CreateDatasetVersion — API ValidationException 時に で失敗します。

  • GetDataset — KMS キーが無効または削除されたValidationExceptionことを示す に失敗します。

  • ListDatasetExamples — KMS キーが無効または削除されたValidationExceptionことを示す に失敗します。

  • DeleteDataset — S3 オブジェクトの削除に KMS 復号を必要としないため、成功します。