Sécurisez les données sensibles dans CloudWatch Logs à l'aide d'Amazon Macie - Recommandations AWS

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.

Sécurisez les données sensibles dans CloudWatch Logs à l'aide d'Amazon Macie

Anisha Salunkhe, Omar Franco et David Guardiola, Amazon Web Services

Résumé

Ce modèle vous montre comment utiliser Amazon Macie pour détecter automatiquement les données sensibles dans un groupe de CloudWatch journaux Amazon Logs en mettant en œuvre un flux de travail complet de surveillance de la sécurité. La solution utilise Amazon Data Firehose pour diffuser les entrées de CloudWatch journaux vers Amazon Simple Storage Service (Amazon S3). Macie analyse régulièrement ce compartiment à la recherche d'informations personnelles identifiables (PII), de données financières et d'autres contenus sensibles. L'infrastructure est déployée via un AWS CloudFormation modèle qui fournit toutes les configurations Services AWS et configurations nécessaires.

CloudWatch Les journaux contiennent souvent des données d'application qui peuvent inclure par inadvertance des informations utilisateur sensibles. Cela peut créer des risques de conformité et de sécurité. Les approches traditionnelles de surveillance des journaux ne disposent pas de fonctionnalités de détection automatique des données sensibles. Il peut donc être difficile d'identifier les expositions potentielles aux données et d'y répondre en temps réel.

Ce modèle aide les équipes de sécurité et les responsables de la conformité à préserver la confidentialité des données en fournissant une détection et des alertes automatisées pour les données sensibles dans les systèmes de journalisation. Cette solution permet une réponse proactive aux incidents par le biais de notifications Amazon Simple Notification Service (Amazon SNS) et isole automatiquement les données sensibles dans un compartiment Amazon S3 sécurisé. Vous pouvez personnaliser les modèles de détection et intégrer le flux de travail à vos processus opérationnels de sécurité existants.

Conditions préalables et limitations

Conditions préalables

  • Un actif Compte AWS

  • Autorisations pour créer une CloudFormation pile

  • Un groupe de CloudWatch journaux que vous souhaitez surveiller

  • Une adresse e-mail active pour recevoir les notifications d'Amazon SNS

  • Accès à AWS CloudShell

  • (Facultatif) Accès au AWS Command Line Interface (AWS CLI), installé et configuré

Limites

  • Macie est soumise à des quotas de service. Pour plus d'informations, consultez la section Quotas pour Macie dans la documentation de Macie.

Architecture

Architecture cible

Le schéma suivant montre le flux de travail permettant d'utiliser Macie pour examiner les entrées du journal CloudWatch des journaux à la recherche de données sensibles.

 

Le flux de travail indique les étapes suivantes :

  1. Le groupe de CloudWatch journaux des journaux génère les journaux, qui sont soumis au filtre d'abonnement.

  2. Le filtre d'abonnement transmet les journaux à Amazon Data Firehose.

  3. Les journaux sont chiffrés à l'aide d'une clé AWS Key Management Service (AWS KMS) lorsqu'ils passent par le flux de diffusion Amazon Data Firehose.

  4. Le flux de livraison envoie les journaux au compartiment de journaux exporté dans Amazon S3.

  5. Chaque jour à 4 heures du matin, Amazon EventBridge lance une AWS Lambda fonction qui lance un scan Macie pour détecter les données sensibles dans le bucket de logs exporté.

  6. Si Macie identifie des données sensibles dans le bucket, une fonction Lambda supprime le log du bucket de logs exporté et le chiffre avec un. AWS KMS key

  7. La fonction Lambda isole les journaux contenant des données sensibles dans le compartiment d'isolation des données.

  8. L'identification des données sensibles lance une rubrique Amazon SNS.

  9. Amazon SNS envoie une notification par e-mail à une adresse e-mail que vous configurez avec des informations sur les journaux contenant des données sensibles.

Ressources déployées

Le CloudFormation modèle déploie les ressources suivantes dans votre cible Compte AWS et Région AWS :

Outils

Services AWS

  • AWS CloudFormationvous aide à configurer les AWS ressources, à les approvisionner rapidement et de manière cohérente, et à les gérer tout au long de leur cycle de vie, de bout Comptes AWS en bout Régions AWS.

  • Amazon CloudWatch Logs vous aide à centraliser les journaux de tous vos systèmes et applications, Services AWS afin que vous puissiez les surveiller et les archiver en toute sécurité.

  • Amazon Data Firehose vous aide à fournir des données de streaming en temps réel à d'autres Services AWS points de terminaison HTTP personnalisés et à des points de terminaison HTTP détenus par des fournisseurs de services tiers pris en charge.

  • Amazon EventBridge est un service de bus d'événements sans serveur qui vous permet de connecter vos applications à des données en temps réel provenant de diverses sources. Par exemple, des sources telles que des AWS Lambda fonctions, des points de terminaison d'invocation HTTP utilisant des destinations d'API ou des bus d'événements dans d'autres. Comptes AWS

  • AWS Key Management Service (AWS KMS) vous aide à créer et à contrôler des clés cryptographiques afin de protéger vos données.

  • AWS Lambda est un service de calcul qui vous aide à exécuter du code sans avoir à allouer ni à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez.

  • Amazon Macie vous aide à découvrir les données sensibles, fournit une visibilité sur les risques liés à la sécurité des données et permet une protection automatique contre ces risques.

  • Amazon Simple Notification Service (Amazon SNS) vous aide à coordonner et à gérer l'échange de messages entre les éditeurs et les clients, y compris les serveurs Web et les adresses e-mail.

  • Amazon Simple Storage Service (Amazon S3) est un service de stockage d'objets basé sur le cloud qui vous permet de stocker, de protéger et de récupérer n'importe quel volume de données.

Référentiel de code

Le code de ce modèle est disponible dans le référentiel GitHub sample-macie-for-securing-cloudwatch-logs.

Bonnes pratiques

Suivez les CloudFormation meilleures pratiques décrites dans la CloudFormation documentation.

Épopées

Sous-tâcheDescriptionCompétences requises

Clonez le référentiel de code.

Entrez la commande suivante pour cloner le référentiel sur votre station de travail locale :

git clone https://github.com/aws-samples/sample-macie-for-securing-cloudwatch-logs
Développeur d’applications

(Facultatif) Modifiez le CloudFormation modèle.

  1. Ouvrez le fichier main.yaml.

  2. Personnalisez le modèle en effectuant l'une des opérations suivantes :

    • Vous pouvez renommer les ressources.

    • Dans parameter cette section, vous pouvez modifier les valeurs par défaut.

    • Vous pouvez modifier le modèle de filtrage des abonnements. Pour plus d'informations, consultez la section Filtres d'abonnement au niveau des groupes de journaux dans la documentation CloudWatch des journaux.

  3. Enregistrez et fermez le fichier main.yaml.

Développeur d’applications

Option 1 — Déployez à l'aide d'un script avec des paramètres de ligne de commande.

Entrez la commande suivante pour déployer la solution à l'aide des paramètres de ligne de commande, dont la valeur enable-macie est true uniquement si Amazon Macie n'est pas déjà activé :

./scripts/test-macie-solution.sh --deploy-stack \ --stack-name <stack name> \ --email <email address> \ --enable-macie <true or false> \ --region <region> \ --resource-name <prefix for all resources> \ --bucket-name <bucket name>
AWS général

Option 2 — Déployez à l'aide d'un script avec des variables d'environnement.

  1. Entrez les commandes suivantes pour définir les variables d'environnement, la valeur de étant ENABLE_MACIE true uniquement si Amazon Macie n'est pas déjà activé :

    export STACK_NAME=<stack name> export SNS_EMAIL=<email address> export ENABLE_MACIE=<true or false> export REGION=<region> export RESOURCE_NAME=<prefix for all resources> export BUCKET_NAME=<bucket name>
  2. Entrez la commande suivante pour valider les paramètres avant le déploiement :

    ./scripts/test-macie-solution.sh \ --validate-params \ --email <email address> \ --region <region>
  3. Entrez la commande suivante pour déployer la solution :

    ./scripts/test-macie-solution.sh --deploy-stack
AWS général

Option 3 — Déployez à l'aide du AWS CLI.

Entrez la commande suivante pour déployer la solution à l'aide de AWS CLI, où la valeur de EnableMacie est true uniquement si Amazon Macie n'est pas déjà activé :

aws cloudformation create-stack \ --region us-east-1 \ --stack-name macie-for-securing-cloudwatch-logs \ --template-body file://app/main.yml \ --capabilities CAPABILITY_IAM \ --parameters \ ParameterKey=ResourceName,ParameterValue=<prefix for all resources> \ ParameterKey=BucketName,ParameterValue=<bucket name> \ ParameterKey=LogGroupName,ParameterValue=<path for log group> \ ParameterKey=SNSTopicEndpointEmail,ParameterValue=<email address> \ ParameterKey=EnableMacie,ParameterValue=<true or false>

Option 4 — Déployez via le AWS Management Console.

  1. Ouvrez la AWS CloudFormation console.

  2. Dans la barre de navigation en haut de l'écran, choisissez le Région AWS pour créer le stack in.

  3. Sur la page Piles, choisissez Créer une pile, puis Avec de nouvelles ressources (standard).

  4. Sur la page Créer une pile, pour Prérequis - Préparer le modèle, sélectionnez Choisir un modèle existant.

  5. Sous Spécifier le modèle, choisissez Télécharger un fichier modèle, puis téléchargez le modèle main.yaml depuis votre référentiel cloné.

  6. Choisissez Suivant.

  7. Sur la page Spécifier les détails de la pile, dans le champ Nom de la pile, entrez un nom de pile.

  8. Dans la section Paramètres, spécifiez les valeurs des paramètres de modèle suivants.

    • ResourceName: Préfixe pour toutes les ressources

    • BucketName: nom unique pour le compartiment Amazon S3

    • LogGroupName: nom du groupe de CloudWatch journaux pour les journaux

    • SNSTopicEndpointEmail: adresse e-mail pour les notifications

    • EnableMacie: défini sur true si Macie n'est pas déjà activé

    • (Facultatif) Region : l' Région AWS endroit où vous souhaitez déployer la pile.

    • (Facultatif) TemplatePath : chemin d'accès au CloudFormation modèle

  9. Choisissez Suivant.

  10. Dans Fonctionnalités, choisissez Je reconnais que ce modèle peut créer des ressources IAM pour spécifier que vous souhaitez utiliser des ressources IAM dans le modèle.

  11. Choisissez Suivant.

  12. Sur la page Vérifier et créer, vérifiez les détails de votre pile.

  13. Choisissez Soumettre pour lancer votre pile.

AWS général

Surveillez l'état du déploiement et confirmez le déploiement.

  1. Entrez la commande suivante pour surveiller l'état du déploiement :

    ./scripts/test-macie-solution.sh \ --deployment-status \ --stack-name <stack name>
    Note

    Vous pouvez également suivre la progression et le statut de la création de la pile dans l'onglet Événements de votre nouvelle pile. Pour plus d'informations, consultez la section Surveiller la progression de la pile.

  2. Lorsque le statut passe à CREATE_COMPLETE, passez en revue les sorties de la pile pour obtenir des informations sur les ressources.

AWS général

Confirmez l'abonnement Amazon SNS.

Suivez les instructions de la section Confirmer votre abonnement Amazon SNS dans la documentation Amazon SNS pour confirmer votre abonnement Amazon SNS.

Développeur d’applications
Sous-tâcheDescriptionCompétences requises

Option 1 — Testez avec des rapports automatisés.

Si vous avez utilisé le nom de pile par défaut, entrez la commande suivante pour tester la solution :

./scripts/test-macie-solution.sh \ --full-test

Si vous avez utilisé un nom de pile personnalisé, entrez la commande suivante pour tester la solution :

./scripts/test-macie-solution.sh \ --full-test \ --stack-name <stack name>

Si vous avez utilisé un nom de pile personnalisé et des paramètres personnalisés, entrez la commande suivante pour tester la solution :

./scripts/test-macie-solution.sh --full-test \ --stack-name <stack name> \ --region <region> \ --log-group <log group path>
AWS général

Option 2 — Test avec validation ciblée.

  1. Entrez la commande suivante pour générer des données de test contenant des informations sensibles :

    ./scripts/test-macie-solution.sh \ --generate-test-data \ --stack-name <stack name>

    Cette commande exécute les opérations suivantes :

    • Crée CloudWatch des entrées de journal contenant des modèles de données sensibles réalistes, notamment des numéros d'employés IDs IDs, de brevets, de cartes de crédit, de sécurité sociale et des adresses e-mail

    • Génère des entrées de journal sensibles et non sensibles pour des tests complets

    • Fournit un enregistrement détaillé du processus de génération des données de test

  2. Entrez la commande suivante pour vérifier le flux du pipeline de données :

    ./scripts/test-macie-solution.sh \ --verify-pipeline \ --stack-name <stack name>

    Cette commande exécute les opérations suivantes :

    • Confirme que les entrées CloudWatch des journaux sont transmises à Amazon Data Firehose

    • Vérifie que les données du journal ont été transmises au compartiment Amazon S3 avec un chiffrement approprié

    • Vérifie que le stockage d'objets Amazon S3 possède la bonne structure de préfixes

    • Vérifie l'état de chiffrement des objets stockés

    • Surveille le rythme du flux de données et prévoit des périodes d'attente pour le traitement

  3. Entrez la commande suivante pour lancer la tâche de classification Macie :

    ./scripts/test-macie-solution.sh \ --trigger-macie-job \ --stack-name <stack name>

    Cette commande exécute les opérations suivantes :

    • Déclenche manuellement la tâche de classification Macie via une fonction Lambda

    • Surveille l'état d'exécution des tâches et fournit des commentaires

    • Valide la disponibilité du service Macie avant son exécution

    • Gère les cas où Macie n'est pas activé dans le compte

    • Fournit des résultats d'exécution détaillés des tâches

  4. Entrez la commande suivante pour valider l'alerte et l'isolation des données :

    ./scripts/test-macie-solution.sh \ --verify-alerts \ --stack-name <stack name>

    Cette commande exécute les opérations suivantes :

    • Confirme que EventBridge les règles sont correctement configurées et actives

    • Valide la configuration de la rubrique Amazon SNS et le statut de l'abonnement

    • Vérifie la configuration et les autorisations du compartiment d'isolation des données

    • Surveille le transfert des données sensibles vers le compartiment d'isolation

    • Vérifie la fonctionnalité complète du flux de travail d'alerte

AWS général
Sous-tâcheDescriptionCompétences requises

Option 1 — Effectuer un nettoyage automatique.

Si vous avez utilisé le nom de pile par défaut, entrez la commande suivante pour supprimer la pile :

./scripts/cleanup-macie-solution.sh \ --full-cleanup

Si vous avez utilisé un nom de pile personnalisé, entrez la commande suivante pour supprimer la pile :

./scripts/cleanup-macie-solution.sh \ --full-cleanup \ --stack-name <stack name>

Si vous avez utilisé un nom de pile personnalisé et des paramètres personnalisés, entrez la commande suivante pour supprimer la pile :

./scripts/cleanup-macie-solution.sh \ --full-cleanup \ --stack-name <stack name> \ --region <region> \ --disable-macie <true or false>
AWS général

Option 2 — Effectuer le step-by-step nettoyage.

  1. Entrez la commande suivante pour arrêter les processus actifs :

    ./scripts/cleanup-macie-solution.sh \ --stop-processes \ --stack-name <stack name>

    Cette commande exécute les opérations suivantes :

    • Désactive EventBridge les règles pour empêcher l'exécution de nouvelles tâches

    • Arrête toutes les tâches de classification Macie en cours d'exécution

    • Annule les exécutions d'emplois en cours à Macie

    • Efface tous les messages Amazon SNS en attente dans la file d'attente

    • Fournit des mises à jour de statut pour chaque processus arrêté

  2. Entrez la commande suivante pour vider les compartiments Amazon S3 :

    ./scripts/cleanup-macie-solution.sh \ --empty-buckets \ --stack-name <stack name>

    Cette commande exécute les opérations suivantes :

    • Supprime tous les objets du compartiment pour CloudWatch Logs

    • Supprime tous les objets du compartiment Amazon S3 d'isolation des données

    • Supprime tous les téléchargements partitionnés incomplets

    • Gère les objets versionnés si le contrôle de version d'Amazon S3 est activé

    • Fournit des informations sur le nombre d'objets et la progression des suppressions

  3. Entrez la commande suivante pour supprimer la CloudFormation pile :

    ./scripts/cleanup-macie-solution.sh \ --delete-stack \ --stack-name <stack name>

    Cette commande exécute les opérations suivantes :

    • Lance le processus de suppression de la CloudFormation pile

    • Surveille la progression de la suppression avec des mises à jour de statut en temps réel

    • Gère les échecs de suppression grâce à des rapports d'erreur détaillés

    • Attend le retrait complet de la pile avant de continuer

    • Fournit l'historique des événements de la pile pour le dépannage

  4. Entrez la commande suivante pour nettoyer les ressources Macie :

    ./scripts/cleanup-macie-solution.sh \ --cleanup-macie \ --stack-name <stack name>

    Cette pile effectue les opérations suivantes :

    • Supprime les identifiants de données personnalisés créés par la solution

    • Nettoie tous les artefacts et découvertes de travail restants chez Macie

    • Désactive la session Macie si elle a été activée par la pile

    • Gère les cas où les ressources Macie sont partagées avec d'autres applications

    • Fournit l'état de nettoyage détaillé pour chaque composant Macie

AWS général

Vérifiez le nettoyage.

  1. Entrez la commande suivante pour vérifier que la pile a été supprimée :

    aws cloudformation describe-stacks \ --stack-name <stack name> \ --region <region>
  2. Entrez la commande suivante pour vérifier que les compartiments Amazon S3 ont été supprimés :

    aws s3 ls | grep macie
  3. Entrez la commande suivante pour vérifier que les identifiants de données personnalisés Macie ont été supprimés :

    aws macie2 list-custom-data-identifiers \ --region <region>
  4. Entrez la commande suivante pour vérifier les ressources restantes :

    ./scripts/cleanup-macie-solution.sh \ --verify-cleanup \ --stack-name <stack name>
AWS général

Résolution des problèmes

ProblèmeSolution

CloudFormation le statut de la pile indique CREATE_FAILED.

Le CloudFormation modèle est configuré pour publier les journaux dans CloudWatch Logs. Vous pouvez consulter les journaux dans le AWS Management Console afin de ne pas avoir à vous connecter à votre EC2 instance Amazon. Pour plus d'informations, voir Afficher CloudFormation les journaux dans la console (article de AWS blog).

CloudFormation delete-stackla commande échoue.

Certaines ressources doivent être vides avant de pouvoir être supprimées. Par exemple, vous devez supprimer tous les objets d'un compartiment Amazon S3 ou supprimer toutes les instances d'un groupe de EC2 sécurité Amazon avant de pouvoir supprimer le compartiment ou le groupe de sécurité. Pour plus d'informations, consultez la section Delete stack fails dans la documentation Amazon S3.

Erreur lors de l'analyse d'un paramètre.

Lorsque vous utilisez la console AWS CLI ou la CloudFormation console pour transmettre une valeur, ajoutez les guillemets.

Ressources connexes