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 mediante
DescribeKey. -
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:DescribeKeypermiso para validar la clave en el momento de la creación o actualización del paquete.111122223333Sustitúyalo por el ID de su cuenta yMyConfigBundleRolepor el rol o usuario de IAM que administra los paquetes de configuración. -
AllowCallerCryptoOps— Otorga la función
kms:GenerateDataKeyykms:ReEncrypt*los permisos de IAM según el contexto de cifrado.kms:Decryptaws:bedrock-agentcore:configurationBundleArnElkms:ReEncrypt*permiso es necesario para la rotación de claves (cambiar la clave KMS de un paquete existente). Sustituya111122223333yus-east-1por sus valores.MyConfigBundleRolePara 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
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
kmsKeyArnvalor 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.
kmsKeyArnEl servicio vuelve a empaquetar la DEK existente de la clave anterior a la nueva clave que utiliza.kms:ReEncryptLa 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. ElencryptionContextcampo 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 con
ValidationException. -
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.