View a markdown version of this page

Cifrado de datos - Amazon Bedrock AgentCore

Cifrado de datos

Al especificar un kmsKeyArn en un conjunto de datos, el servicio cifra todos los ejemplos almacenados mediante el cifrado de S3 del lado del servidor con KMS (). SSE-KMS Esto incluye ejemplos del borrador y de todas las versiones publicadas.

kmsKeyArnEs inmutable tras la creación del conjunto de datos; no se puede cambiar ni eliminar.

Funcionamiento

El cifrado del conjunto de datos utiliza S3. SSE-KMS Cuando el servicio escribe o lee el contenido del conjunto de datos en S3, S3 llama al KMS en nombre del servicio para cifrar o descifrar los datos. El principal del servicio (bedrock-agentcore.amazonaws.com) debe tener permisos de KMS en la política de claves.

En el momento de la API, el servicio valida que la persona que llama tiene permisos de KMS mediante una comprobación preliminar (sesiones de acceso directo). De este modo, se detectan los problemas de permisos de forma inmediata, en lugar de que se produzcan errores de forma asíncrona durante la ingestión.

AgentCore Las evaluaciones solo admiten claves KMS de cifrado simétrico. La clave KMS debe estar en la misma AWS región que el conjunto de datos.

Política clave obligatoria

La siguiente política de claves otorga los permisos mínimos necesarios para el cifrado de conjuntos de datos. Incluye dos afirmaciones:

  • AllowCallerAccess— Otorga CreateDataset permiso al usuario o rol de IAM que lo invoca para validar y usar la clave. El servicio realiza una comprobación preliminar en el momento de la API para comprobar que la persona que llama tiene acceso al KMS. 111122223333Sustitúyalo por tu ID de cuenta y MyDatasetRole por el rol o usuario de IAM que administra los conjuntos de datos.

  • AllowAgentCoreDatasetAccess— Concede al AgentCore servicio principal el permiso para cifrar y descifrar el contenido del conjunto de datos en 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

Esta es la política mínima. Consulte Limitar el acceso para conocer las condiciones de seguridad recomendadas.

Limitar el acceso

Puede añadir condiciones para restringir el momento en que se puede utilizar la clave. Para los conjuntos de datos, el servicio envía el siguiente contexto con las operaciones de escritura de KMS (GenerateDataKey):

  • aws:SourceAccount— El ID AWS de cuenta propietario del conjunto de datos.

  • aws:SourceArn— El ARN del conjunto de datos que se va a cifrar.

  • kms:EncryptionContext:aws:bedrock-agentcore:datasetArn— El conjunto de datos ARN como contexto de cifrado.

La siguiente política divide los permisos en de escritura (condicionados) y de lectura (no condicionados):

{ "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

No añada aws:SourceAccount ni aws:SourceArn condiciones a la declaración de lectura (Decrypt,DescribeKey). Las descargas de conjuntos de datos utilizan direcciones URL de S3 prefirmadas y el cliente de descarga no envía encabezados contextuales de origen. Si se agregan estas condiciones a las operaciones de lectura, se producen errores en la descarga.

111122223333Sustitúyalo por tu ID de cuenta y us-east-1 por tu AWS región. Para abarcar un conjunto de datos específico, reemplaza el comodín por el ID del conjunto de datos:arn:aws:bedrock-agentcore:us-east-1:111122223333:dataset/my-dataset-id.

Crear un conjunto de datos con una clave KMS administrada por el cliente

Especifique el kmsKeyArn parámetro al llamar aCreateDataset:

ejemplo
AgentCore CLI
  1. Para crear un conjunto de datos cifrado, --kms-key-arn páselo cuando lo añada y, a continuación, ejecuteagentcore deploy. Sustituya el ARN de la clave KMS por el ARN de su propia clave.

    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"}]}]}}'

Supervisión del uso de KMS para conjuntos de datos

Los siguientes nombres de CloudTrail eventos aparecen para las operaciones de KMS del conjunto de datos:

  • GenerateDataKey— Al crear un conjunto de datos, añadir ejemplos, actualizar ejemplos o publicar una versión. El encryptionContext campo contieneaws:bedrock-agentcore:datasetArn.

  • Decrypt— Al leer el contenido del conjunto de datos (GetDataset, ListDatasetExamples) o durante las descargas de URL prefirmadas.

  • DescribeKey— Al validar la clave al crear el conjunto de datos.

Comportamiento cuando una clave deja de estar disponible

Si inhabilitas o eliminas la clave de KMS administrada por el cliente que se utiliza en un conjunto de datos:

  • CreateDataset— No se realiza la validación conValidationException.

  • AddDatasetExamples, UpdateDatasetExamples, CreateDatasetVersion — Se produce un error ValidationException en el momento de la API.

  • GetDataset— No se puede ValidationException indicar que la clave KMS está deshabilitada o eliminada.

  • ListDatasetExamples— No se puede ValidationException indicar que la clave KMS está deshabilitada o eliminada.

  • DeleteDataset— Se realiza correctamente porque la eliminación de objetos de S3 no requiere el descifrado de KMS.