

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
<a name="encrypt-lookup-tables-kms"></a>

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](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html).

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, consultez[Chiffrez les données du journal dans CloudWatch Logs à l'aide de AWS Key Management Service](encrypt-log-data-kms.md).

## Comment CloudWatch Logs l'utilise AWS KMS pour les tables de recherche
<a name="encrypt-lookup-tables-how-it-works"></a>

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](encrypt-log-data-kms.md#encrypt-log-data-kms-policy).

## Autorisations nécessaires
<a name="encrypt-lookup-tables-permissions"></a>

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:Decrypt`autorisation 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:Decrypt`autorisation 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:GenerateDataKey`autorisation 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é
<a name="encrypt-lookup-tables-create-key"></a>

Pour créer une clé KMS symétrique, utilisez la commande [create-key](https://docs.aws.amazon.com/cli/latest/reference/kms/create-key.html) 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
<a name="encrypt-lookup-tables-key-policy"></a>

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-policy](https://docs.aws.amazon.com/cli/latest/reference/kms/get-key-policy.html)commande 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](https://docs.aws.amazon.com/kms/latest/developerguide/conditions-kms.html#conditions-kms-via-service).

```
{
    "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-policy](https://docs.aws.amazon.com/cli/latest/reference/kms/put-key-policy.html)commande 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
<a name="encrypt-lookup-tables-associate"></a>

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

**Pour associer la clé KMS à une table de recherche lorsque vous la créez**  
Utilisez l'`CreateLookupTable`API 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'`UpdateLookupTable`API 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
<a name="encrypt-lookup-tables-considerations"></a>
+ 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:GetKeyPolicy``kms:PutKeyPolicy`, et des autorisations CloudWatch Logs appropriées pour appeler `CreateLookupTable` ou`UpdateLookupTable`.