Consultez une CloudFront distribution Amazon pour la journalisation des accès, les versions HTTPS et TLS - 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.

Consultez une CloudFront distribution Amazon pour la journalisation des accès, les versions HTTPS et TLS

Environnement : Production

Technologies : diffusion de contenu ; sécurité, identité, conformité

Charge de travail : toutes les autres charges de travail

Services AWS : Amazon SNS ; AWS CloudWatch ; CloudFormation Amazon ; AWS Lambda

Récapitulatif

Ce modèle vérifie une CloudFront distribution Amazon pour s'assurer qu'elle utilise le protocole HTTPS, qu'elle utilise le protocole TLS (Transport Layer Security) version 1.2 ou ultérieure et que la journalisation des accès est activée. CloudFront est un service fourni par Amazon Web Services (AWS) qui accélère la distribution de votre contenu Web statique et dynamique, tel que les fichiers .html, .css, .js et les fichiers image, à vos utilisateurs. CloudFront diffuse votre contenu via un réseau mondial de centres de données appelés emplacements périphériques. Lorsqu'un utilisateur demande le contenu que vous diffusez CloudFront, la demande est acheminée vers l'emplacement périphérique offrant le moins de latence (délai), afin que le contenu soit diffusé avec les meilleures performances possibles.

Ce modèle fournit une fonction AWS Lambda qui est lancée lorsqu'Amazon CloudWatch Events détecte l'appel CloudFront d'API CreateDistributionCreateDistributionWithTags, ou. UpdateDistribution La logique personnalisée de la fonction Lambda évalue toutes les CloudFront distributions créées ou mises à jour dans le compte AWS. Il envoie une notification de violation à l'aide d'Amazon Simple Notification Service (Amazon SNS) s'il détecte les violations suivantes :

  • Contrôles globaux :

    • Le certificat personnalisé n'utilise pas la version 1.2 du protocole TLS

    • La journalisation est désactivée pour la distribution

  • Contrôles d'origine :

    • Origin n'est pas configuré avec la version 1.2 du protocole TLS

    • La communication avec l'origine est autorisée sur un protocole autre que HTTPS

  • Contrôles de comportement :

    • Comportement par défaut, la communication est autorisée sur un protocole autre que HTTPS

    • La communication basée sur un comportement personnalisé est autorisée sur un protocole autre que HTTPS

Conditions préalables et limitations

Prérequis

  • Un compte AWS actif

  • Une adresse e-mail à laquelle vous souhaitez recevoir les notifications de violation

Limites

  • Ce contrôle de sécurité ne vérifie pas les distributions Cloudfront existantes, sauf si une mise à jour a été apportée à la distribution.

  • CloudFront est considéré comme un service mondial et n'est pas lié à une région AWS spécifique. Toutefois, la journalisation des API Amazon CloudWatch Logs et AWS Cloudtrail pour les services internationaux a lieu dans la région de l'est des États-Unis (Virginie du Nord) (us-east-1). Par conséquent, ce contrôle de sécurité pour CloudFront doit être déployé et maintenu dansus-east-1. Ce déploiement unique surveille toutes les distributions pour CloudFront. Ne déployez le contrôle de sécurité dans aucune autre région AWS. (Le déploiement dans d'autres régions empêchera le lancement des CloudWatch événements et de la fonction Lambda, et aucune notification SNS ne sera envoyée.)

  • Cette solution a fait l'objet de tests approfondis avec des distributions de contenu CloudFront Web. Il ne couvre pas les distributions de streaming au moyen du protocole de messagerie en temps réel (RTMP).

Architecture

Pile technologique cible

  • Fonction Lambda

  • Rubrique SNS

  • EventBridge Règle Amazon

Architecture cible

Automatisation et mise à l'échelle

  • Si vous utilisez AWS Organizations, vous pouvez utiliser AWS Cloudformation StackSets pour déployer le modèle ci-joint sur plusieurs comptes que vous souhaitez surveiller.

Outils

Services AWS

  • AWS CloudFormation CloudFormation est un service qui vous aide à modéliser et à configurer les ressources AWS en utilisant l'infrastructure sous forme de code.

  • Amazon EventBridge — EventBridge fournit un flux de données en temps réel à partir de vos propres applications, applications SaaS (logiciel en tant que service) et services AWS, en acheminant ces données vers des cibles telles que les fonctions Lambda.

  • AWS Lambda — Lambda prend en charge l'exécution de code sans provisionner ni gérer de serveurs.

  • Amazon S3 — Amazon Simple Storage Service (Amazon S3) est un service de stockage d'objets hautement évolutif qui peut être utilisé pour un large éventail de solutions de stockage, notamment les sites Web, les applications mobiles, les sauvegardes et les lacs de données.

  • Amazon SNS — Amazon SNS coordonne et gère la distribution ou l'envoi de messages entre les éditeurs et les clients, y compris les serveurs Web et les adresses e-mail. Les abonnés reçoivent tous les messages publiés dans les rubriques auxquelles ils sont abonnés, et tous les abonnés à une rubrique reçoivent les mêmes messages.

Code

Le code ci-joint inclut :

  • Un fichier .zip contenant le code Lambda (index.py)

  • Un CloudFormation modèle (fichier .yml) que vous exécutez pour déployer le code Lambda

Épopées

TâcheDescriptionCompétences requises
Créez le compartiment S3 pour le code Lambda.

Sur la console Amazon S3, créez un compartiment S3 avec un nom unique qui ne contient pas de barres obliques. Le nom d'un compartiment S3 est unique au monde et l'espace de noms est partagé par tous les comptes AWS. Votre compartiment S3 doit se trouver dans la région où vous prévoyez de déployer le code Lambda.

Architecte du cloud
Téléchargez le code Lambda dans le compartiment S3.

Téléchargez le code Lambda (fichier cloudfront_ssl_log_lambda.zip) fourni dans la section Pièces jointes dans le compartiment S3 que vous avez créé à l'étape précédente.

Architecte du cloud
TâcheDescriptionCompétences requises
Déployez le CloudFormation modèle.

Sur la CloudFormation console AWS, dans la même région AWS que le compartiment S3, déployez le CloudFormation modèle (cloudfront-ssl-logging.yml) fourni dans la section Pièces jointes. 

Architecte du cloud
Spécifiez le nom du compartiment S3.

Pour le paramètre S3 Bucket, spécifiez le nom du bucket S3 que vous avez créé dans le premier épisode épique.

Architecte du cloud
Spécifiez le nom de clé Amazon S3 pour le fichier Lambda.

Pour le paramètre S3 Key, spécifiez l'emplacement Amazon S3 du fichier .zip de code Lambda dans votre compartiment S3. N'incluez pas de barres obliques en tête (par exemple, vous pouvez saisir lambda.zip ou controls/lambda.zip).

Architecte du cloud
Fournissez une adresse e-mail de notification.

Pour le paramètre E-mail de notification, indiquez l'adresse e-mail à laquelle vous souhaitez recevoir les notifications de violation.

Architecte du cloud
Définissez le niveau de journalisation.

Pour le paramètre Lambda Logging level, définissez le niveau de journalisation de votre fonction Lambda. Choisissez l’une des valeurs suivantes : 

  • INFO pour obtenir des messages d'information détaillés sur la progression de l'application.

  • ERREUR pour obtenir des informations sur les événements d'erreur susceptibles de permettre à l'application de continuer à s'exécuter.

  • AVERTISSEMENT pour obtenir des informations sur des situations potentiellement dangereuses.

Architecte du cloud
TâcheDescriptionCompétences requises
Confirmez votre abonnement.

Lorsque le CloudFormation modèle a été déployé avec succès, une nouvelle rubrique SNS est créée et un message d'abonnement est envoyé à l'adresse e-mail que vous avez fournie. Vous devez confirmer cet abonnement par e-mail pour recevoir des notifications de violation.

Architecte du cloud

Pièces jointes

Pour accéder au contenu supplémentaire associé à ce document, décompressez le fichier suivant : attachment.zip