View a markdown version of this page

Cifrado de paquetes de configuración - Amazon Bedrock AgentCore

Cifrado de paquetes de configuración

Al especificar un kmsKeyArn paquete de configuración, el servicio cifra las configuraciones de los componentes (solicitudes del sistema, descripciones de herramientas y otro contenido de configuración) mediante el cifrado de sobres. Todos los demás metadatos del paquete (nombre, descripción, identificadores de versión, marcas de tiempo) permanecen cifrados con la clave propia. AWS

Funcionamiento

El cifrado del paquete de configuración utiliza el cifrado de sobres con las credenciales de la persona que llama. Al crear o actualizar un paquete con unkmsKeyArn, el servicio utiliza sus credenciales (mediante sesiones de acceso directo) para generar una clave de cifrado de datos (DEK) desde KMS. El servicio cifra las configuraciones de los componentes de forma local AES-GCM con esa DEK y, a continuación, almacena la DEK cifrada junto con el paquete. Al recuperar el paquete, el servicio descifra la DEK con sus credenciales y descifra los componentes.

La persona que llama debe tener kms:GenerateDataKey kms:Decryptkms:DescribeKey, y kms:ReEncrypt* permisos sobre la clave.

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

Configurar los permisos para usar una clave KMS administrada por el cliente

La siguiente política de claves proporciona los permisos mínimos necesarios para el cifrado del paquete de configuración. La política tiene dos instrucciones:

  • AllowCallerAccess— Permite al usuario o rol de IAM validar la clave medianteDescribeKey.

  • AllowCallerCryptoOps— Permite al usuario o rol de IAM generar claves de datos, descifrarlas y volver a cifrarlas (para la rotación de claves), según el contexto de cifrado.

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

La política contiene las siguientes declaraciones:

  • AllowCallerAccess— Otorga al rol de IAM kms:DescribeKey permiso para validar la clave en el momento de la creación o actualización del paquete. 111122223333Sustitúyalo por el ID de su cuenta y MyConfigBundleRole por el rol o usuario de IAM que administra los paquetes de configuración.

  • AllowCallerCryptoOps— Otorga la función kms:GenerateDataKey y kms:ReEncrypt* los permisos de IAM según el contexto de cifrado. kms:Decrypt aws:bedrock-agentcore:configurationBundleArn El kms:ReEncrypt* permiso es necesario para la rotación de claves (cambiar la clave KMS de un paquete existente). Sustituya 111122223333 y us-east-1 por sus valores. MyConfigBundleRole Para permitir el acceso a todos los paquetes de configuración de su cuenta, utilice un comodín conStringLike:. arn:aws:bedrock-agentcore:us-east-1:111122223333:configuration-bundle/*

Limitar el acceso a la clave KMS administrada por el cliente

Puede usar el contexto de cifrado para limitar el acceso a la clave administrada por el cliente. AgentCore las optimizaciones incluyen el siguiente contexto de cifrado en todas las operaciones de KMS:

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

Puede usar este contexto de cifrado en las condiciones de la política clave para restringir las operaciones de KMS a paquetes de configuración específicos, como se muestra en la AllowCallerCryptoOps declaración del ejemplo de política de claves anterior.

Crear un paquete de configuración con una clave de KMS administrada por el cliente

Para cifrar un paquete de configuración, especifique el kmsKeyArn parámetro al realizar la llamada CreateConfigurationBundle.

ejemplo
AWS CLI
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" } } }'
Python (Boto3)
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']}")

Cambiar la configuración de cifrado de un paquete existente

Puede cambiar la configuración de cifrado de un paquete existente mediante UpdateConfigurationBundle:

  • Añadir cifrado: especifique un kmsKeyArn valor en un paquete que se creó sin él. El servicio genera una nueva DEK y cifra las configuraciones de los componentes.

  • Rotar la clave: especifique una diferente. kmsKeyArn El servicio vuelve a empaquetar la DEK existente de la clave anterior a la nueva clave que utiliza. kms:ReEncrypt La persona que llama debe tener permisos en ambas claves. Si la clave anterior no está disponible (está deshabilitada, eliminada o faltan permisos), se producirá un error en la actualización.

nota

No puede eliminar el cifrado de claves gestionado por el cliente de un paquete de configuración una vez que se haya agregado.

Supervisión del uso de KMS para los paquetes de configuración

Los siguientes nombres de CloudTrail eventos aparecen para las operaciones de KMS de los paquetes de configuración:

  • GenerateDataKey— Al crear un paquete con una clave gestionada por el cliente o al añadir cifrado a un paquete existente. El encryptionContext campo contieneaws:bedrock-agentcore:configurationBundleArn.

  • Decrypt— Al recuperar el contenido del paquete (GetConfigurationBundle, GetConfigurationBundleVersion) o al actualizar un paquete cifrado.

  • ReEncrypt— Al rotar la clave KMS de un paquete existente mediante UpdateConfigurationBundle.

  • DescribeKey— Al validar la clave en el momento de la creación o actualización del paquete.

Comportamiento cuando una clave deja de estar disponible

Si deshabilita o elimina la clave de KMS administrada por el cliente que se utiliza en un paquete de configuración:

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

  • UpdateConfigurationBundle— Falla porque el servicio no puede descifrar la DEK existente para volver a cifrar los componentes nuevos. La rotación de claves también falla porque la clave antigua no se puede volver a empaquetar.

  • GetConfigurationBundle / GetConfigurationBundleVersion— Falla porque el servicio no puede descifrar la DEK ni las configuraciones de los componentes.

  • ListConfigurationBundles / ListConfigurationBundleVersions— Se ejecuta correctamente porque la lista solo devuelve metadatos y no requiere operaciones de KMS.

  • DeleteConfigurationBundle— Se realiza correctamente porque la eliminación no requiere descifrar los datos del paquete.

Para restablecer el acceso, vuelva a habilitar la clave o actualice la política de claves para conceder los permisos necesarios.