View a markdown version of this page

Chiffrement du bundle de configuration - Amazon Bedrock AgentCore

Chiffrement du bundle de configuration

Lorsque vous spécifiez un kmsKeyArn dans un bundle de configuration, le service chiffre les configurations des composants (instructions système, descriptions d'outils et autres contenus de configuration) à l'aide du chiffrement d'enveloppe. Toutes les autres métadonnées du bundle (nom, description, ID de version, horodatage) restent chiffrées avec la clé AWS détenue.

Comment ça marche

Le chiffrement des ensembles de configuration utilise le chiffrement des enveloppes avec les informations d'identification de l'appelant. Lorsque vous créez ou mettez à jour un bundle avec unkmsKeyArn, le service utilise vos informations d'identification (via des sessions d'accès direct) pour générer une clé de chiffrement des données (DEK) à partir de KMS. Le service chiffre les configurations des composants localement à l' AES-GCM aide de ce DEK, puis stocke le DEK chiffré à côté du bundle. Lorsque vous récupérez le bundle, le service déchiffre le DEK à l'aide de vos informations d'identification et déchiffre les composants.

L'appelant doit avoirkms:GenerateDataKey, kms:Decryptkms:DescribeKey, et des kms:ReEncrypt* autorisations sur la clé.

AgentCore les optimisations ne prennent en charge que les clés KMS de chiffrement symétriques. La clé KMS doit se trouver dans la même AWS région que le bundle de configuration.

Configuration des autorisations pour utiliser une clé KMS gérée par le client

La politique clé suivante fournit les autorisations minimales requises pour le chiffrement des ensembles de configuration. La politique possède deux énoncés:

  • AllowCallerAccess— Permet à l'utilisateur ou au rôle IAM de valider la clé viaDescribeKey.

  • AllowCallerCryptoOps— Permet à l'utilisateur ou au rôle IAM de générer des clés de données, de les déchiffrer et de les rechiffrer (pour la rotation des clés), en fonction du contexte de chiffrement.

{ "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 politique contient les déclarations suivantes :

  • AllowCallerAccess— Accorde au rôle IAM l'kms:DescribeKeyautorisation de valider les clés lors de la création ou de la mise à jour du bundle. 111122223333Remplacez-le par votre identifiant de compte et MyConfigBundleRole par le rôle ou l'utilisateur IAM qui gère les ensembles de configuration.

  • AllowCallerCryptoOps— Accorde le rôle kms:GenerateDataKey IAM et kms:Decrypt les kms:ReEncrypt* autorisations définies par le contexte de aws:bedrock-agentcore:configurationBundleArn chiffrement. L'kms:ReEncrypt*autorisation est requise pour la rotation des clés (modification de la clé KMS sur un bundle existant). Remplacez 111122223333MyConfigBundleRole, et us-east-1 par vos valeurs. Pour autoriser l'accès à tous les ensembles de configuration de votre compte, utilisez un caractère générique avec StringLike :. arn:aws:bedrock-agentcore:us-east-1:111122223333:configuration-bundle/*

Délimitation de l'accès à la clé KMS gérée par le client

Vous pouvez utiliser le contexte de chiffrement pour limiter l'accès à la clé gérée par le client. AgentCore les optimisations incluent le contexte de chiffrement suivant dans toutes les opérations KMS :

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

Vous pouvez utiliser ce contexte de chiffrement dans des conditions de politique clés pour limiter les opérations KMS à des ensembles de configuration spécifiques, comme indiqué dans l'AllowCallerCryptoOpsinstruction figurant dans l'exemple de politique clé ci-dessus.

Création d'un bundle de configuration avec une clé KMS gérée par le client

Pour chiffrer un bundle de configuration, spécifiez le kmsKeyArn paramètre lors de l'appel CreateConfigurationBundle.

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

Modification de la configuration de chiffrement sur un bundle existant

Vous pouvez modifier la configuration de chiffrement d'un bundle existant en utilisant UpdateConfigurationBundle:

  • Ajouter un chiffrement — Spécifiez un kmsKeyArn sur un bundle créé sans chiffrement. Le service génère un nouveau DEK et chiffre les configurations des composants.

  • Touche de rotation — Spécifiez une autre touchekmsKeyArn. Le service réemballe le DEK existant de l'ancienne clé à la nouvelle en utilisant. kms:ReEncrypt L'appelant doit avoir des autorisations sur les deux touches. Si l'ancienne clé n'est pas disponible (désactivée, supprimée ou autorisations manquantes), la mise à jour échouera.

Note

Vous ne pouvez pas supprimer le chiffrement par clé géré par le client d'un bundle de configuration une fois celui-ci ajouté.

Surveillance de l'utilisation du KMS pour les ensembles de configuration

Les noms CloudTrail d'événements suivants apparaissent pour les opérations KMS du bundle de configuration :

  • GenerateDataKey— Lorsque vous créez un bundle avec une clé gérée par le client ou que vous ajoutez un chiffrement à un bundle existant. Le encryptionContext champ contientaws:bedrock-agentcore:configurationBundleArn.

  • Decrypt— Lors de la récupération du contenu d'un bundle (GetConfigurationBundle, GetConfigurationBundleVersion) ou lors de la mise à jour d'un bundle crypté.

  • ReEncrypt— Lorsque vous faites pivoter la clé KMS sur un bundle existant via UpdateConfigurationBundle.

  • DescribeKey— Lors de la validation de la clé lors de la création ou de la mise à jour du bundle.

Comportement lorsqu'une clé n'est plus disponible

Si vous désactivez ou supprimez la clé KMS gérée par le client utilisée par un bundle de configuration :

  • CreateConfigurationBundle— Échoue lors de la validation avecValidationException.

  • UpdateConfigurationBundle— Échoue car le service ne peut pas déchiffrer le DEK existant pour rechiffrer les nouveaux composants. La rotation des clés échoue également car l'ancienne clé ne peut pas être réemballée.

  • GetConfigurationBundle / GetConfigurationBundleVersion— Échoue car le service ne peut pas déchiffrer le DEK ou les configurations des composants.

  • ListConfigurationBundles / ListConfigurationBundleVersions— Succès car la liste renvoie uniquement des métadonnées et ne nécessite aucune opération KMS.

  • DeleteConfigurationBundle— Succès car la suppression ne nécessite pas de déchiffrer les données du bundle.

Pour rétablir l'accès, réactivez la clé ou mettez à jour la politique relative aux clés afin d'accorder les autorisations requises.