View a markdown version of this page

Crittografia del dataset - Fondamento Amazon AgentCore

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Crittografia del dataset

Quando si specifica a kmsKeyArn su un set di dati, il servizio crittografa tutti gli esempi archiviati utilizzando la crittografia lato server S3 con KMS (). SSE-KMS Ciò include gli esempi presenti nella bozza e in tutte le versioni pubblicate.

kmsKeyArnÈ immutabile dopo la creazione del set di dati: non è possibile modificarlo o rimuoverlo.

Come funziona

La crittografia dei set di dati utilizza S3. SSE-KMS Quando il servizio scrive o legge il contenuto del set di dati in S3, S3 chiama KMS per conto del servizio per crittografare o decrittografare i dati. Il responsabile del servizio (bedrock-agentcore.amazonaws.com) deve disporre delle autorizzazioni KMS nella policy chiave.

Al momento dell'API, il servizio verifica che il chiamante disponga delle autorizzazioni KMS utilizzando un controllo a secco (Forward Access Sessions). In questo modo vengono rilevati immediatamente i problemi di autorizzazione anziché fallire in modo asincrono durante l'inserimento.

AgentCore Evaluations supporta solo chiavi KMS di crittografia simmetrica. La chiave KMS deve trovarsi nella stessa AWS regione del set di dati.

Politica chiave richiesta

La seguente politica chiave garantisce le autorizzazioni minime richieste per la crittografia dei set di dati. Include due dichiarazioni:

  • AllowCallerAccess— Concede all'utente o al ruolo IAM che chiama CreateDataset il permesso di convalidare e utilizzare la chiave. Il servizio esegue un controllo a secco in fase di API per verificare che il chiamante abbia accesso a KMS. Sostituiscilo 111122223333 con l'ID del tuo account e MyDatasetRole con il ruolo o l'utente IAM che gestisce i set di dati.

  • AllowAgentCoreDatasetAccess— Concede al principale del AgentCore servizio l'autorizzazione a crittografare e decrittografare il contenuto del set di dati in 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": "*" } ] }
Nota

Questa è la politica minima. Vedi Scoping down access per le condizioni di sicurezza consigliate.

Ridurre l'ambito dell'accesso

È possibile aggiungere condizioni per limitare l'utilizzo della chiave. Per i set di dati, il servizio invia il seguente contesto con le operazioni di scrittura KMS ()GenerateDataKey:

  • aws:SourceAccount— L'ID dell' AWS account proprietario del set di dati.

  • aws:SourceArn— L'ARN del set di dati da crittografare.

  • kms:EncryptionContext:aws:bedrock-agentcore:datasetArn— L'ARN del set di dati come contesto di crittografia.

La seguente politica divide le autorizzazioni in scrittura (condizionate) e lettura (non condizionate):

{ "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": "*" } ] }
Importante

Non aggiungere aws:SourceArn condizioni aws:SourceAccount all'istruzione di lettura (Decrypt,). DescribeKey I download dei set di dati utilizzano URL S3 prefirmati e il client di download non invia le intestazioni del contesto di origine. L'aggiunta di queste condizioni alle operazioni di lettura causa errori di download.

Sostituiscilo 111122223333 con l'ID del tuo account e us-east-1 con la tua AWS regione. Per includere un set di dati specifico, sostituisci il carattere jolly con l'ID del set di dati:. arn:aws:bedrock-agentcore:us-east-1:111122223333:dataset/my-dataset-id

Creazione di un set di dati con una chiave KMS gestita dal cliente

Specifica il kmsKeyArn parametro quando chiami: CreateDataset

Esempio
AgentCore CLI
  1. Per creare un set di dati crittografato, passa --kms-key-arn quando aggiungi il set di dati, quindi esegui. agentcore deploy Sostituisci la chiave KMS ARN con la tua chiave 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"}]}]}}'

Monitoraggio dell'utilizzo del KMS per i set di dati

I seguenti nomi di CloudTrail eventi vengono visualizzati per le operazioni KMS dei set di dati:

  • GenerateDataKey— Quando si crea un set di dati, si aggiungono esempi, si aggiornano esempi o si pubblica una versione. Il encryptionContext campo contieneaws:bedrock-agentcore:datasetArn.

  • Decrypt— Durante la lettura del contenuto del set di dati (GetDataset, ListDatasetExamples) o durante il download di URL prefirmati.

  • DescribeKey— Quando si convalida la chiave al momento della creazione del set di dati.

Comportamento quando una chiave diventa non disponibile

Se disabiliti o elimini la chiave KMS gestita dal cliente utilizzata da un set di dati:

  • CreateDataset— Fallisce la convalida con. ValidationException

  • AddDatasetExamples, UpdateDatasetExamples, CreateDatasetVersion — Fallisce ValidationException al momento dell'API.

  • GetDataset— Non riesce a ValidationException indicare che la chiave KMS è disabilitata o eliminata.

  • ListDatasetExamples— Non riesce a ValidationException indicare che la chiave KMS è disattivata o eliminata.

  • DeleteDataset— Ha successo perché l'eliminazione degli oggetti S3 non richiede la decrittografia KMS.