View a markdown version of this page

Chiffrez les tables de recherche dans les CloudWatch journaux à l'aide de AWS Key Management Service - Amazon CloudWatch Logs

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.

Chiffrez les tables de recherche dans les CloudWatch journaux à l'aide de AWS Key Management Service

Les données de la table de recherche sont toujours cryptées dans CloudWatch les journaux. Par défaut, CloudWatch Logs utilise le chiffrement côté serveur avec le mode AES-GCM (Advanced Encryption Standard Galois/Counter Mode) 256 bits pour chiffrer les données de la table de recherche au repos. En guise d'alternative, vous pouvez utiliser AWS Key Management Service pour ce chiffrement. Dans ce cas, le chiffrement est effectué à l'aide d'une AWS KMS clé. L'utilisation du chiffrement AWS KMS est activée au niveau de la table de recherche, en associant une clé KMS à une table de recherche, soit lorsque vous créez la table de recherche, soit lorsque vous la mettez à jour.

Important

CloudWatch Logs ne prend en charge que les clés KMS symétriques. N'utilisez pas de clé asymétrique pour chiffrer les données de vos tables de recherche. Pour plus d'informations, consultez Utilisation des clés symétriques et asymétriques.

Une fois que vous avez associé une clé KMS à une table de recherche, toutes les données stockées dans la table de recherche sont chiffrées à l'aide de cette clé. CloudWatch Logs déchiffre ces données chaque fois qu'elles sont demandées. CloudWatch Les journaux doivent disposer d'autorisations pour la clé KMS chaque fois que des données chiffrées sont demandées.

Si vous dissociez ultérieurement une clé KMS d'une table de recherche, CloudWatch Logs chiffre les données à l'aide de la méthode de chiffrement par défaut de CloudWatch Logs. Toutefois, si la clé est désactivée ou supprimée avant que vous ne la dissociiez, CloudWatch Logs ne pourra pas lire les données chiffrées avec cette clé.

Pour obtenir des informations générales sur la manière dont CloudWatch AWS KMS Logs chiffre les données des journaux, consultezChiffrez les données du journal dans CloudWatch Logs à l'aide de AWS Key Management Service.

Comment CloudWatch Logs l'utilise AWS KMS pour les tables de recherche

CloudWatch Logs utilise le chiffrement des AWS KMS enveloppes pour protéger les données des tables de recherche. Lorsque vous associez une clé KMS à une table de recherche, CloudWatch Logs envoie une GenerateDataKey demande à AWS KMS. AWS KMS génère une clé de chiffrement des données (DEK) unique et renvoie à la fois une copie en texte brut et une copie cryptée de la DEK. CloudWatch Logs utilise le DEK en texte brut pour chiffrer les données de la table de recherche, puis stocke le DEK chiffré à côté des données chiffrées. Le DEK en texte brut n'est pas stocké et est supprimé de la mémoire après utilisation.

Lorsque CloudWatch Logs a besoin de lire les données de la table de recherche, il envoie une Decrypt demande AWS KMS au DEK crypté. AWS KMS déchiffre le DEK et renvoie le DEK en texte brut à CloudWatch Logs, qui l'utilise ensuite pour déchiffrer les données de la table de recherche.

CloudWatch Logs utilise le contexte de chiffrement suivant lorsqu'il adresse des demandes à AWS KMS :

{ "aws:logs:arn": "arn:aws:logs:region:account-id:lookup-table:lookup-table-name" }

Vous pouvez utiliser ce contexte de chiffrement dans les politiques IAM et les politiques AWS KMS clés pour contrôler l'accès à la clé KMS. Pour de plus amples informations, veuillez consulter AWS KMS clés et contexte de chiffrement.

Autorisations nécessaires

Pour utiliser AWS KMS le chiffrement avec les tables de recherche, le principal IAM doit disposer des AWS KMS autorisations suivantes sur la clé KMS :

  • kms:Decrypt

  • kms:GenerateDataKey

L'kms:Decryptautorisation est requise lorsque vous appelez GetLookupTable une table de recherche chiffrée à l'aide d'une clé KMS, afin que CloudWatch Logs puisse déchiffrer les données en votre nom. L'kms:Decryptautorisation est également requise sur la clé (la clé KMS utilisée pour chiffrer la table de recherche) lors d'un appel StartQuery avec une requête qui utilise la lookup commande sur une table de recherche cryptée. L'kms:GenerateDataKeyautorisation est requise lors de l'appel CreateLookupTable ou UpdateLookupTable avec une clé KMS, afin que CloudWatch Logs puisse générer une clé de chiffrement des données pour chiffrer les données de la table de recherche.

En outre, le service CloudWatch Logs doit être autorisé à utiliser la clé KMS. Vous accordez ces autorisations en ajoutant une déclaration de politique à la politique de clé KMS, comme décrit dans la section suivante.

Étape 1 : Création d'une AWS KMS clé

Pour créer une clé KMS symétrique, utilisez la commande create-key suivante :

aws kms create-key

La sortie contient l'ID de clé et l'Amazon Resource Name (ARN) de la clé. Voici un exemple de sortie :

{ "KeyMetadata": { "Origin": "AWS_KMS", "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "Description": "", "KeyManager": "CUSTOMER", "Enabled": true, "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "KeyUsage": "ENCRYPT_DECRYPT", "KeyState": "Enabled", "CreationDate": 1478910250.94, "Arn": "arn:aws:kms:us-west-2:123456789012:key/6f815f63-e628-448c-8251-e40cb0d29f59", "AWSAccountId": "123456789012", "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ] } }

Enregistrez l'ARN de la clé. Vous en aurez besoin dans les étapes suivantes.

Étape 2 : Définition des autorisations sur la clé KMS

Par défaut, toutes les AWS KMS clés sont privées. Seul le propriétaire de la ressource peut l'utiliser pour chiffrer et déchiffrer des données. Vous devez accorder au service CloudWatch Logs l'autorisation principale d'utiliser la clé, et également accorder au rôle appelant l'autorisation d'utiliser la clé.

Tout d'abord, enregistrez la politique par défaut pour votre clé KMS à policy.json l'aide de la get-key-policycommande suivante :

aws kms get-key-policy --key-id key-id --policy-name default --output text > ./policy.json

Ouvrez le policy.json fichier dans un éditeur de texte et ajoutez l'instruction suivante pour accorder au service CloudWatch Logs l'autorisation principale d'utiliser la clé. Cet exemple utilise une Condition section qui correspond au contexte de chiffrement pour restreindre la clé à une table de recherche spécifique.

{ "Effect": "Allow", "Principal": { "Service": "logs.region.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:aws:logs:arn": "arn:aws:logs:region:account-id:lookup-table:lookup-table-name", "aws:SourceAccount": "account-id", "aws:SourceArn": "arn:aws:logs:region:account-id:lookup-table:lookup-table-name" } } }

Ajoutez ensuite des autorisations au rôle qui appellera les CloudWatch journaux CreateLookupTable ou UpdateLookupTable APIs. CloudWatch Enregistre kms:ViaService les utilisations pour passer AWS KMS des appels au nom du client. Pour plus d'informations, voir kms : ViaService.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-id:role/role-name" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": [ "logs.region.amazonaws.com" ] } } }

Enfin, ajoutez la politique mise à jour à l'aide de la put-key-policycommande suivante :

aws kms put-key-policy --key-id key-id --policy-name default --policy file://policy.json

Étape 3 : associer une clé KMS à une table de recherche

Vous pouvez associer une clé KMS à une table de recherche lorsque vous la créez à l'aide de l'CreateLookupTableAPI ou que vous mettez à jour une table de recherche existante à l'aide de l'UpdateLookupTableAPI. Les deux APIs font partie du AWSLogsConfigService.

Pour associer la clé KMS à une table de recherche lorsque vous la créez

Utilisez l'CreateLookupTableAPI et spécifiez le kmsKeyArn paramètre avec l'ARN de votre clé KMS :

aws logs create-lookup-table \ --lookup-table-name my-lookup-table \ --kms-key-arn "arn:aws:kms:region:account-id:key/key-id"
Pour associer la clé KMS à une table de recherche existante

Utilisez l'UpdateLookupTableAPI et spécifiez le kmsKeyArn paramètre avec l'ARN de votre clé KMS :

aws logs update-lookup-table \ --lookup-table-name my-lookup-table \ --kms-key-arn "arn:aws:kms:region:account-id:key/key-id"

Considérations

  • Après avoir associé ou dissocié une clé KMS d'une table de recherche, l'opération peut prendre jusqu'à cinq minutes pour prendre effet.

  • Si vous révoquez l'accès de CloudWatch Logs à une clé associée ou si vous supprimez une clé KMS associée, les données de votre table de recherche cryptée dans CloudWatch Logs ne peuvent plus être récupérées.

  • Pour effectuer les étapes décrites dans cette rubrique, vous devez disposer des autorisations suivantes :kms:CreateKey, kms:GetKeyPolicykms:PutKeyPolicy, et des autorisations CloudWatch Logs appropriées pour appeler CreateLookupTable ouUpdateLookupTable.