Exporter les données du journal vers Amazon S3 à l'aide de la console - Amazon CloudWatch Logs

Exporter les données du journal vers Amazon S3 à l'aide de la console

Dans les exemples suivants, vous utilisez la console Amazon CloudWatch pour exporter toutes les données d'un groupe de journaux Amazon CloudWatch Logs nommé my-log-group vers un compartiment Amazon S3 nommé my-exported-logs.

L'exportation de données de journal vers des compartiments S3 qui sont chiffrés par SSE-KMS est prise en charge. L'exportation vers les compartiments chiffrés avec DSSE-KMS n'est pas prise en charge.

Les détails de la configuration de l'exportation varient selon que le compartiment Amazon S3 vers lequel vous souhaitez exporter se trouve dans le même compte que vos journaux à exporter ou dans un compte différent.

Exportation vers le même compte

Si le compartiment Amazon S3 se trouve dans le même compte que les journaux à exporter, suivez les instructions de cette section.

Étape 1 : Créer un compartiment Amazon S3

Nous vous recommandons d'utiliser un compartiment qui a été créé spécifiquement pour CloudWatch Logs. Cependant, si vous souhaitez utiliser un compartiment existant, vous pouvez passer à l'étape 2.

Note

Le compartiment S3 doit résider dans la même région que les données de journal à exporter. CloudWatch Logs ne prend pas en charge l'exportation de données vers des compartiments S3 situés dans une autre région.

Pour créer un compartiment S3
  1. Ouvrez la console Amazon S3 sur https://console.aws.amazon.com/s3/.

  2. Si nécessaire, changez la région. Dans la barre de navigation, choisissez la région où résident vos données CloudWatch Logs.

  3. Choisissez Créer un compartiment.

  4. Dans Bucket Name (Nom de compartiment), attribuez un nom au compartiment.

  5. Pour Region (Région), sélectionnez la région où résident vos données CloudWatch Logs.

  6. Sélectionnez Créer.

Étape 2 : définir les autorisations d'accès

Pour créer la tâche d'exportation à l'étape 5, vous devez être connecté avec le rôle IAM AmazonS3ReadOnlyAccess et disposer des autorisations suivantes :

  • logs:CreateExportTask

  • logs:CancelExportTask

  • logs:DescribeExportTasks

  • logs:DescribeLogStreams

  • logs:DescribeLogGroups

Pour activer l'accès, ajoutez des autorisations à vos utilisateurs, groupes ou rôles :

Étape 3 : définir les autorisations sur un compartiment S3

Par défaut, tous les objets et les compartiments S3 sont privés. Seul le propriétaire de la ressource, le Compte AWS ayant créé le compartiment, peut accéder au compartiment et aux objets qu'il contient. Le propriétaire de la ressource peut toutefois accorder des autorisations d'accès à d'autres ressources et à d'autres utilisateurs en créant une stratégie d'accès.

Lorsque vous définissez la stratégie, nous vous recommandons d'inclure une chaîne générée de façon aléatoire comme préfixe pour le compartiment, afin que seuls les flux de journaux prévus soient exportés vers le compartiment.

Important

Pour sécuriser davantage les exportations vers les compartiments S3, nous vous demandons désormais de spécifier la liste des comptes sources autorisés à exporter les données des journaux vers votre compartiment S3.

Dans l'exemple suivant, la liste des identifiants de compte figurant dans la clé aws:SourceAccount correspond aux comptes à partir desquels un utilisateur peut exporter des données du journal vers votre compartiment S3. La clé aws:SourceArn correspond à la ressource pour laquelle l'action est entreprise. Vous pouvez limiter cela à un groupe de journaux spécifique ou utiliser un caractère générique, comme indiqué dans cet exemple.

Nous vous recommandons d'inclure également l'ID du compte sur lequel le compartiment S3 est créé, afin de permettre l'exportation au sein du même compte.

Pour définir des autorisations sur un compartiment Amazon S3
  1. Dans la console Amazon S3, choisissez le compartiment que vous avez créé à l'étape 1.

  2. Choisissez Permissions, Bucket policy.

  3. Dans Bucket Policy Editor (Éditeur de stratégie de compartiment), ajoutez la politique ci-dessous. Remplacez my-exported-logs par le nom de votre compartiment S3. Assurez-vous de spécifier le point de terminaison correct de la région, tel que us-west-1, pour Principal.

    { "Version": "2012-10-17", "Statement": [ { "Action": "s3:GetBucketAcl", "Effect": "Allow", "Resource": "arn:aws:s3:::my-exported-logs", "Principal": { "Service": "logs.Region.amazonaws.com" }, "Condition": { "StringEquals": { "aws:SourceAccount": [ "AccountId1", "AccountId2", ... ] }, "ArnLike": { "aws:SourceArn": [ "arn:aws:logs:Region:AccountId1:log-group:*", "arn:aws:logs:Region:AccountId2:log-group:*", ... ] } } }, { "Action": "s3:PutObject" , "Effect": "Allow", "Resource": "arn:aws:s3:::my-exported-logs/*", "Principal": { "Service": "logs.Region.amazonaws.com" }, "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": [ "AccountId1", "AccountId2", ... ] }, "ArnLike": { "aws:SourceArn": [ "arn:aws:logs:Region:AccountId1:log-group:*", "arn:aws:logs:Region:AccountId2:log-group:*", ... ] } } } ] }
  4. Choisissez Save pour définir la stratégie que vous venez d'ajouter en tant que stratégie d'accès à votre compartiment. Cette politique permet à CloudWatch Logs d'exporter les données des journaux vers votre compartiment S3. Le propriétaire du compartiment dispose des autorisations d'accès complet à tous les objets exportés.

    Avertissement

    Si le compartiment existant dispose déjà d'une ou plusieurs politiques qui lui sont attachées, ajoutez les instructions pour que CloudWatch Logs y accède. Nous vous recommandons d'évaluer le jeu d'autorisations obtenu pour vérifier son adéquation pour les utilisateurs appelés à accéder au compartiment.

(Facultatif) Étape 4 : exportation vers un compartiment chiffré avec SSE-KMS

Cette étape n'est nécessaire que si vous exportez vers un compartiment S3 qui utilise le chiffrement côté serveur avec AWS KMS keys. Ce chiffrement est connu sous le nom de SSE-KMS.

Exportation vers un compartiment chiffré avec SSE-KMS
  1. Ouvrez la console AWS KMS à l'adresse https://console.aws.amazon.com/kms.

  2. Pour changer de Région AWS, utilisez le sélecteur de région dans l'angle supérieur droit de la page.

  3. Dans le panneau de navigation de gauche, choisissez Customer manages keys (Clés gérées par le client).

    Choisissez Create key (Créer une clé).

  4. Pour Type de clé, choisissez Symétrique.

  5. Pour Key usage (Utilisation de la clé), choisissez Encrypt and decrypt (Chiffrer et déchiffrer), puis choisissez Next (Suivant).

  6. Sous Add labels (Ajouter des étiquettes) saisissez un alias pour la clé et ajoutez éventuellement une description ou des balises. Sélectionnez ensuite Next (Suivant).

  7. Sous Key administrators (Administrateurs de clés), sélectionnez qui peut administrer cette clé, puis choisissez Next (Suivant).

  8. Sous Define key usage permissions (Définir les autorisations d'utilisation des clés), n'apportez aucune modification et choisissez Next (Suivant).

  9. Passez en revue vos paramètres, puis choisissez Finish (Terminer).

  10. De retour sur la page Customer managed keys (Clés gérées par le client), choisissez le nom de la clé que vous venez de créer.

  11. Choisissez l'onglet Key policy (Politique de clé) et choisissez Switch to policy view (Passer à la vue de la politique).

  12. Dans la section Key policy (Politique de clé), choisissez Edit (Modifier).

  13. Ajoutez la déclaration suivante à la liste des déclarations de politique de clé. Dans ce cas, remplacez Region par la région de vos journaux et remplacez account-ARN par l'ARN du compte propriétaire de la clé KMS.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "Allow CWL Service Principal usage", "Effect": "Allow", "Principal": { "Service": "logs.Region.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*" }, { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "account-ARN" }, "Action": [ "kms:GetKeyPolicy*", "kms:PutKeyPolicy*", "kms:DescribeKey*", "kms:CreateAlias*", "kms:ScheduleKeyDeletion*", "kms:Decrypt" ], "Resource": "*" } ] }
  14. Sélectionnez Save Changes (Enregistrer les modifications).

  15. Ouvrez la console Amazon S3 sur https://console.aws.amazon.com/s3/.

  16. Trouvez le compartiment que vous avez créé dans Étape 1 : Créer un compartiment S3 et choisissez son nom.

  17. Choisissez l'onglet Propriétés. Ensuite, sous Default encryption (Chiffrement par défaut), choisissez Edit (Modifier).

  18. Sous Server-side encryption (Chiffrement côté serveur), choisissez Enable (Activer).

  19. Sous Encryption type (Type de chiffrement), choisissez AWS Key Management Service key (SSE-KMS) (Clé KMS (SSE-KMS)).

  20. Choisissez Choose from your AWS KMS keys (Choisissez parmi vos clés) et recherchez la clé que vous avez créée.

  21. Pour Bucket name (Nom du compartiment), choisissez Enable (Activer).

  22. Sélectionnez Save Changes (Enregistrer les modifications).

Étape 5 : créer une tâche d'exportation

Dans cette étape, vous créez la tâche d'exportation pour exporter des journaux d'un groupe de journaux.

Pour exporter des données vers Amazon S3 à l'aide de la console CloudWatch
  1. Connectez-vous avec les autorisations suffisantes, comme indiqué dans Étape 2 : définir les autorisations d'accès.

  2. Ouvrez la console CloudWatch à l'adresse https://console.aws.amazon.com/cloudwatch/.

  3. Dans le panneau de navigation, choisissez Groupes de journaux.

  4. Dans l'écran Groupes de journaux choisissez le nom du groupe de journaux.

  5. Choisissez Actions, Export data to Amazon S3 (Exporter les données vers Amazon S3).

  6. Dans l'écran Export data to Amazon S3 (Exporter les données vers Amazon S3), sous Define data export (Définir les données à exporter), définissez la plage de temps pour les données à exporter grâce aux champs From (De) et To (À).

  7. Si votre groupe de journaux a plusieurs flux de journal, vous pouvez indiquer un préfixe de flux de journal pour limiter les données du groupe de journaux à un flux spécifique. Choisissez Advanced (Avancé), puis indiquez le préfixe de flux de journal dans Stream prefix (Préfixe de flux).

  8. Sous Choose S3 bucket (Choisir le compartiment S3), choisissez le compte associé au compartiment S3.

  9. Pour S3 bucket name (Nom du compartiment S3), choisissez un compartiment S3.

  10. Pour Préfixe du compartiment S3, indiquez la chaîne générée de façon aléatoire que vous avez spécifiée dans la stratégie de compartiment.

  11. Choisissez Export (Exporter) pour exporter les données de journal vers Amazon S3.

  12. Pour afficher l'état des données de journal que vous avez exportées vers Amazon S3, choisissez Actions, puis View all exports to Amazon S3 (Afficher tous les exports vers Amazon S3).

Exportation intercomptes

Si le compartiment Amazon S3 se trouve dans un compte différent de celui des journaux à exporter, suivez les instructions de cette section.

Étape 1 : Créer un compartiment Amazon S3

Nous vous recommandons d'utiliser un compartiment qui a été créé spécifiquement pour CloudWatch Logs. Cependant, si vous souhaitez utiliser un compartiment existant, vous pouvez passer à l'étape 2.

Note

Le compartiment S3 doit résider dans la même région que les données de journal à exporter. CloudWatch Logs ne prend pas en charge l'exportation de données vers des compartiments S3 situés dans une autre région.

Pour créer un compartiment S3
  1. Ouvrez la console Amazon S3 sur https://console.aws.amazon.com/s3/.

  2. Si nécessaire, changez la région. Dans la barre de navigation, choisissez la région où résident vos données CloudWatch Logs.

  3. Choisissez Créer un compartiment.

  4. Dans Bucket Name (Nom de compartiment), attribuez un nom au compartiment.

  5. Pour Region (Région), sélectionnez la région où résident vos données CloudWatch Logs.

  6. Sélectionnez Créer.

Étape 2 : définir les autorisations d'accès

Tout d'abord, vous devez créer une nouvelle politique IAM pour permettre à CloudWatch Logs de disposer de l'autorisation s3:PutObject pour le compartiment Amazon S3 de destination dans le compte de destination.

La politique que vous créez varie selon que le compartiment de destination utilise ou non le chiffrement AWS KMS.

Pour créer une politique IAM afin d'exporter les journaux vers un compartiment Amazon S3
  1. Ouvrez la console IAM à l'adresse https://console.aws.amazon.com/iam/.

  2. Dans le panneau de navigation de gauche, choisissez Politiques.

  3. Sélectionnez Créer une politique.

  4. Dans la section Éditeur de politique, sélectionnez JSON.

  5. Si le compartiment de destination n'utilise pas le chiffrement AWS KMS, collez la politique suivante dans l'éditeur.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::my-exported-logs/*" } ] }

    Si le compartiment de destination utilise le chiffrement AWS KMS, collez la politique suivante dans l'éditeur.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::my-exported-logs/*" }, { "Effect": "Allow", "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "ARN_OF_KMS_KEY" } ] }
  6. Choisissez Next (Suivant).

  7. Entrez un nom de stratégie. Vous utiliserez ce nom pour associer la politique à votre rôle IAM.

  8. Sélectionnez Créer une politique pour enregistrer la nouvelle politique.

Pour créer la tâche d'exportation à l'étape 5, vous devez vous connecter avec le rôle IAM AmazonS3ReadOnlyAccess. Vous devez également vous connecter avec la politique IAM que vous venez de créer et les autorisations suivantes :

  • logs:CreateExportTask

  • logs:CancelExportTask

  • logs:DescribeExportTasks

  • logs:DescribeLogStreams

  • logs:DescribeLogGroups

Pour activer l'accès, ajoutez des autorisations à vos utilisateurs, groupes ou rôles :

Étape 3 : définir les autorisations sur un compartiment S3

Par défaut, tous les objets et les compartiments S3 sont privés. Seul le propriétaire de la ressource, le Compte AWS ayant créé le compartiment, peut accéder au compartiment et aux objets qu'il contient. Le propriétaire de la ressource peut toutefois accorder des autorisations d'accès à d'autres ressources et à d'autres utilisateurs en créant une stratégie d'accès.

Lorsque vous définissez la stratégie, nous vous recommandons d'inclure une chaîne générée de façon aléatoire comme préfixe pour le compartiment, afin que seuls les flux de journaux prévus soient exportés vers le compartiment.

Important

Pour sécuriser davantage les exportations vers les compartiments S3, nous vous demandons désormais de spécifier la liste des comptes sources autorisés à exporter les données des journaux vers votre compartiment S3.

Dans l'exemple suivant, la liste des identifiants de compte figurant dans la clé aws:SourceAccount correspond aux comptes à partir desquels un utilisateur peut exporter des données du journal vers votre compartiment S3. La clé aws:SourceArn correspond à la ressource pour laquelle l'action est entreprise. Vous pouvez limiter cela à un groupe de journaux spécifique ou utiliser un caractère générique, comme indiqué dans cet exemple.

Nous vous recommandons d'inclure également l'ID du compte sur lequel le compartiment S3 est créé, afin de permettre l'exportation au sein du même compte.

Pour définir des autorisations sur un compartiment Amazon S3
  1. Dans la console Amazon S3, choisissez le compartiment que vous avez créé à l'étape 1.

  2. Choisissez Permissions, Bucket policy.

  3. Dans Bucket Policy Editor (Éditeur de stratégie de compartiment), ajoutez la politique ci-dessous. Remplacez my-exported-logs par le nom de votre compartiment S3. Assurez-vous de spécifier le point de terminaison correct de la région, tel que us-west-1, pour Principal.

    { "Version": "2012-10-17", "Statement": [ { "Action": "s3:GetBucketAcl", "Effect": "Allow", "Resource": "arn:aws:s3:::my-exported-logs", "Principal": { "Service": "logs.Region.amazonaws.com" }, "Condition": { "StringEquals": { "aws:SourceAccount": [ "AccountId1", "AccountId2", ... ] }, "ArnLike": { "aws:SourceArn": [ "arn:aws:logs:Region:AccountId1:log-group:*", "arn:aws:logs:Region:AccountId2:log-group:*", ... ] } } }, { "Action": "s3:PutObject" , "Effect": "Allow", "Resource": "arn:aws:s3:::my-exported-logs/*", "Principal": { "Service": "logs.Region.amazonaws.com" }, "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": [ "AccountId1", "AccountId2", ... ] }, "ArnLike": { "aws:SourceArn": [ "arn:aws:logs:Region:AccountId1:log-group:*", "arn:aws:logs:Region:AccountId2:log-group:*", ... ] } } }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::create_export_task_caller_account:role/role_name" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::my-exported-logs/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control" } } } ] }
  4. Choisissez Save pour définir la stratégie que vous venez d'ajouter en tant que stratégie d'accès à votre compartiment. Cette politique permet à CloudWatch Logs d'exporter les données des journaux vers votre compartiment S3. Le propriétaire du compartiment dispose des autorisations d'accès complet à tous les objets exportés.

    Avertissement

    Si le compartiment existant dispose déjà d'une ou plusieurs politiques qui lui sont attachées, ajoutez les instructions pour que CloudWatch Logs y accède. Nous vous recommandons d'évaluer le jeu d'autorisations obtenu pour vérifier son adéquation pour les utilisateurs appelés à accéder au compartiment.

(Facultatif) Étape 4 : exportation vers un compartiment chiffré avec SSE-KMS

Cette étape n'est nécessaire que si vous exportez vers un compartiment S3 qui utilise le chiffrement côté serveur avec AWS KMS keys. Ce chiffrement est connu sous le nom de SSE-KMS.

Exportation vers un compartiment chiffré avec SSE-KMS
  1. Ouvrez la console AWS KMS à l'adresse https://console.aws.amazon.com/kms.

  2. Pour changer de Région AWS, utilisez le sélecteur de région dans l'angle supérieur droit de la page.

  3. Dans le panneau de navigation de gauche, choisissez Customer manages keys (Clés gérées par le client).

    Choisissez Create key (Créer une clé).

  4. Pour Type de clé, choisissez Symétrique.

  5. Pour Key usage (Utilisation de la clé), choisissez Encrypt and decrypt (Chiffrer et déchiffrer), puis choisissez Next (Suivant).

  6. Sous Add labels (Ajouter des étiquettes) saisissez un alias pour la clé et ajoutez éventuellement une description ou des balises. Sélectionnez ensuite Next (Suivant).

  7. Sous Key administrators (Administrateurs de clés), sélectionnez qui peut administrer cette clé, puis choisissez Next (Suivant).

  8. Sous Define key usage permissions (Définir les autorisations d'utilisation des clés), n'apportez aucune modification et choisissez Next (Suivant).

  9. Passez en revue vos paramètres, puis choisissez Finish (Terminer).

  10. De retour sur la page Customer managed keys (Clés gérées par le client), choisissez le nom de la clé que vous venez de créer.

  11. Choisissez l'onglet Key policy (Politique de clé) et choisissez Switch to policy view (Passer à la vue de la politique).

  12. Dans la section Key policy (Politique de clé), choisissez Edit (Modifier).

  13. Ajoutez la déclaration suivante à la liste des déclarations de politique de clé. Dans ce cas, remplacez Region par la région de vos journaux et remplacez account-ARN par l'ARN du compte propriétaire de la clé KMS.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "Allow CWL Service Principal usage", "Effect": "Allow", "Principal": { "Service": "logs.Region.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*" }, { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "account-ARN" }, "Action": [ "kms:GetKeyPolicy*", "kms:PutKeyPolicy*", "kms:DescribeKey*", "kms:CreateAlias*", "kms:ScheduleKeyDeletion*", "kms:Decrypt" ], "Resource": "*" }, { "Sid": "Enable IAM Role Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::create_export_task_caller_account:role/role_name" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "ARN_OF_KMS_KEY" } ] }
  14. Sélectionnez Save Changes (Enregistrer les modifications).

  15. Ouvrez la console Amazon S3 sur https://console.aws.amazon.com/s3/.

  16. Trouvez le compartiment que vous avez créé dans Étape 1 : Créer un compartiment S3 et choisissez son nom.

  17. Choisissez l'onglet Propriétés. Ensuite, sous Default encryption (Chiffrement par défaut), choisissez Edit (Modifier).

  18. Sous Server-side encryption (Chiffrement côté serveur), choisissez Enable (Activer).

  19. Sous Encryption type (Type de chiffrement), choisissez AWS Key Management Service key (SSE-KMS) (Clé KMS (SSE-KMS)).

  20. Choisissez Choose from your AWS KMS keys (Choisissez parmi vos clés) et recherchez la clé que vous avez créée.

  21. Pour Bucket name (Nom du compartiment), choisissez Enable (Activer).

  22. Sélectionnez Save Changes (Enregistrer les modifications).

Étape 5 : créer une tâche d'exportation

Dans cette étape, vous créez la tâche d'exportation pour exporter des journaux d'un groupe de journaux.

Pour exporter des données vers Amazon S3 à l'aide de la console CloudWatch
  1. Connectez-vous avec les autorisations suffisantes, comme indiqué dans Étape 2 : définir les autorisations d'accès.

  2. Ouvrez la console CloudWatch à l'adresse https://console.aws.amazon.com/cloudwatch/.

  3. Dans le panneau de navigation, choisissez Groupes de journaux.

  4. Dans l'écran Groupes de journaux choisissez le nom du groupe de journaux.

  5. Choisissez Actions, Export data to Amazon S3 (Exporter les données vers Amazon S3).

  6. Dans l'écran Export data to Amazon S3 (Exporter les données vers Amazon S3), sous Define data export (Définir les données à exporter), définissez la plage de temps pour les données à exporter grâce aux champs From (De) et To (À).

  7. Si votre groupe de journaux a plusieurs flux de journal, vous pouvez indiquer un préfixe de flux de journal pour limiter les données du groupe de journaux à un flux spécifique. Choisissez Advanced (Avancé), puis indiquez le préfixe de flux de journal dans Stream prefix (Préfixe de flux).

  8. Sous Choose S3 bucket (Choisir le compartiment S3), choisissez le compte associé au compartiment S3.

  9. Pour S3 bucket name (Nom du compartiment S3), choisissez un compartiment S3.

  10. Pour Préfixe du compartiment S3, indiquez la chaîne générée de façon aléatoire que vous avez spécifiée dans la stratégie de compartiment.

  11. Choisissez Export (Exporter) pour exporter les données de journal vers Amazon S3.

  12. Pour afficher l'état des données de journal que vous avez exportées vers Amazon S3, choisissez Actions, puis View all exports to Amazon S3 (Afficher tous les exports vers Amazon S3).