View a markdown version of this page

Chiffrement des recommandations - Base rocheuse de l'Amazonie AgentCore

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Chiffrement des recommandations

Lorsque vous spécifiez un kmsKeyArn sur une recommandation, le service chiffre la configuration de la recommandation et le résultat de la recommandation à l'aide du chiffrement d'enveloppe avec le SDK de AWS chiffrement. Toutes les autres métadonnées de recommandation (nom, type, statut) restent cryptées avec la clé AWS détenue.

Le kmsKeyArn est spécifié au moment de la création viaStartRecommendation.

Comment ça marche

Le chiffrement des recommandations utilise le SDK AWS Encryption pour le chiffrement des enveloppes. Lorsque le service écrit ou lit des données de recommandation, il appelle KMS pour générer ou déchiffrer des clés de données. Le résultat de la recommandation est également stocké dans S3 à SSE-KMS l'aide de la même clé gérée par le client.

Au moment de l'API, le service vérifie que l'appelant dispose des autorisations KMS à l'aide d'un contrôle à sec (sessions d'accès direct). Cela permet de détecter immédiatement les problèmes d'autorisation au lieu d'échouer de manière asynchrone pendant le flux de recommandation.

Lorsque le flux de travail de recommandation s'exécute de manière asynchrone, le service principal (bedrock-agentcore.amazonaws.com) déchiffre la configuration et chiffre le résultat. Le responsable du service doit disposer kms:GenerateDataKey d'une kms:Decrypt autorisation dans la politique clé.

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

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

La politique de clé suivante fournit les autorisations minimales requises pour le chiffrement des recommandations. La stratégie comporte trois déclarations :

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

  • AllowCallerCryptoOps— Permet à l'utilisateur ou au rôle IAM de chiffrer et de déchiffrer, en fonction du contexte de chiffrement.

  • AllowServicePrincipalAccess— Permet au responsable du AgentCore service de chiffrer et de déchiffrer les données de recommandation pendant le flux de travail de recommandation asynchrone, en fonction du compte source et de l'ARN source.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCallerAccess", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/MyRecommendationRole" }, "Action": "kms:DescribeKey", "Resource": "*" }, { "Sid": "AllowCallerCryptoOps", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/MyRecommendationRole" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*", "Condition": { "StringLike": { "kms:EncryptionContext:aws:bedrock-agentcore:recommendationArn": "arn:aws:bedrock-agentcore:us-east-1:111122223333:recommendation/*" } } }, { "Sid": "AllowServicePrincipalAccess", "Effect": "Allow", "Principal": { "Service": "bedrock-agentcore.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" }, "ArnLike": { "aws:SourceArn": "arn:aws:bedrock-agentcore:us-east-1:111122223333:recommendation/*" } } } ] }

La politique contient les déclarations suivantes :

  • AllowCallerAccess— Accorde au rôle IAM l'kms:DescribeKeyautorisation de valider la clé au moment de la création de la recommandation. Remplacez-le 111122223333 par votre identifiant de compte et MyRecommendationRole par le rôle IAM ou l'utilisateur qui lance les recommandations.

  • AllowCallerCryptoOps— Octroie le rôle kms:GenerateDataKey et kms:Decrypt les autorisations IAM, en fonction du contexte de aws:bedrock-agentcore:recommendationArn chiffrement. Remplacez 111122223333MyRecommendationRole, et us-east-1 par vos valeurs. Pour autoriser l'accès à toutes les recommandations de votre compte, utilisez un caractère générique avec StringLike :arn:aws:bedrock-agentcore:us-east-1:111122223333:recommendation/*.

  • AllowServicePrincipalAccess— Octroie le principal du AgentCore service kms:GenerateDataKey et kms:Decrypt les autorisations nécessaires pour chiffrer et déchiffrer les données de recommandation pendant le flux de travail asynchrone. Délimité par compte source et ARN source (aws:SourceArn) pour éviter les attaques confuses entre les adjoints. Remplacez us-east-1 et 111122223333 par votre région et votre identifiant de compte.

Limiter 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:recommendationArn": "arn:aws:bedrock-agentcore:us-east-1:111122223333:recommendation/recommendation-id" }

Vous pouvez utiliser ce contexte de chiffrement dans des conditions de stratégie clés afin de limiter les opérations KMS à des recommandations spécifiques, comme indiqué dans la AllowCallerCryptoOps déclaration de l'exemple de politique clé ci-dessus. Notez qu'il est AllowServicePrincipalAccess utilisé aws:SourceArn pour définir la portée plutôt que pour le contexte de chiffrement.

Commencer une recommandation avec une clé KMS gérée par le client

Spécifiez le kmsKeyArn paramètre lors de l'appel StartRecommendation :

Exemple
AgentCore CLI
agentcore run recommendation \ -t system-prompt \ -r MyAgent \ -e Builtin.Correctness \ --inline "You are a helpful assistant" \ --kms-key arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab
AWS CLI
aws bedrock-agentcore start-recommendation \ --name "MyEncryptedRecommendation" \ --type SYSTEM_PROMPT_RECOMMENDATION \ --kms-key-arn "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" \ --recommendation-config '{ "systemPromptRecommendationConfig": { "systemPrompt": { "text": "You are a helpful assistant." }, "agentTraces": { "cloudwatchLogs": { "logGroupArns": ["arn:aws:logs:us-east-1:111122223333:log-group:/aws/bedrock-agentcore/sessions/my-agent"], "serviceNames": ["my-agent.DEFAULT"], "startTime": "2025-01-01T00:00:00Z", "endTime": "2025-01-02T00:00:00Z" } }, "evaluationConfig": { "evaluators": [{"evaluatorArn": "arn:aws:bedrock-agentcore:::evaluator/Builtin.Helpfulness"}] } } }'
Python (Boto3)
import boto3 client = boto3.client('bedrock-agentcore') response = client.start_recommendation( name='MyEncryptedRecommendation', type='SYSTEM_PROMPT_RECOMMENDATION', kmsKeyArn='arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab', recommendationConfig={ 'systemPromptRecommendationConfig': { 'systemPrompt': { 'text': 'You are a helpful assistant.' }, 'agentTraces': { 'cloudwatchLogs': { 'logGroupArns': ['arn:aws:logs:us-east-1:111122223333:log-group:/aws/bedrock-agentcore/sessions/my-agent'], 'serviceNames': ['my-agent.DEFAULT'], 'startTime': '2025-01-01T00:00:00Z', 'endTime': '2025-01-02T00:00:00Z' } }, 'evaluationConfig': { 'evaluators': [{'evaluatorArn': 'arn:aws:bedrock-agentcore:::evaluator/Builtin.Helpfulness'}] } } } ) print(f"Recommendation ID: {response['recommendationId']}")

Surveillance de l'utilisation de KMS pour les recommandations

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

  • GenerateDataKey— Lors du démarrage d'une recommandation (configuration de chiffrement) et lorsque le workflow de recommandation est terminé (cryptage du résultat). Le encryptionContext champ contientaws:bedrock-agentcore:recommendationArn.

  • Decrypt— Lorsque le flux de travail de recommandation traite la configuration ou lors de la récupération des résultats des recommandations.

  • DescribeKey— Lors de la validation de la clé au moment de la création de la recommandation.

Comportement lorsqu'une clé devient indisponible

Si vous désactivez ou supprimez la clé KMS gérée par le client utilisée par une recommandation :

  • StartRecommendation— Échoue lors de la validation avecValidationException.

  • GetRecommendation— Échec en ValidationException indiquant que la clé KMS est désactivée ou supprimée.

  • ListRecommendations— Réussite car la liste renvoie uniquement des métadonnées et ne nécessite aucune opération KMS.

  • DeleteRecommendation— Réussite car la suppression ne nécessite pas le déchiffrement des données de recommandation.