Suchen Sie in einer CloudFront Amazon-Distribution nach Zugriffsprotokollierung und TLS Version HTTPS - AWS Prescriptive Guidance

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Suchen Sie in einer CloudFront Amazon-Distribution nach Zugriffsprotokollierung und TLS Version HTTPS

Erstellt von SaiJeevan Devireddy (AWS) und Bijesh Bal () AWS

Umwelt: Produktion

Technologien: Bereitstellung von Inhalten; Sicherheit, Identität, Compliance

Arbeitslast: Alle anderen Workloads

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

Übersicht

Dieses Muster überprüft eine CloudFront Amazon-Distribution, um sicherzustellenHTTPS, dass sie Transport Layer Security (TLS) Version 1.2 oder höher verwendet und dass die Zugriffsprotokollierung aktiviert ist. CloudFront ist ein von Amazon Web Services (AWS) bereitgestellter Service, der die Verteilung Ihrer statischen und dynamischen Webinhalte wie .html-, .css-, .js- und Bilddateien an Ihre Benutzer beschleunigt. CloudFront stellt Ihre Inhalte über ein weltweites Netzwerk von Rechenzentren bereit, die als Edge-Standorte bezeichnet werden. Wenn ein Benutzer Inhalte anfordert CloudFront, mit denen Sie sie bereitstellen, wird die Anfrage an den Edge-Standort weitergeleitet, der die niedrigste Latenz (Zeitverzögerung) bietet, sodass der Inhalt mit der bestmöglichen Leistung bereitgestellt wird.

Dieses Muster stellt eine AWS Lambda-Funktion bereit, die ausgelöst wird, wenn Amazon CloudWatch Events den CloudFront API Anruf CreateDistribution, CreateDistributionWithTags, oder UpdateDistributionerkennt. Die benutzerdefinierte Logik in der Lambda-Funktion wertet alle CloudFront Verteilungen aus, die im Konto erstellt oder aktualisiert wurden. AWS Es sendet mithilfe von Amazon Simple Notification Service (AmazonSNS) eine Benachrichtigung über einen Verstoß, wenn es die folgenden Verstöße feststellt:

  • Globale Prüfungen:

    • Das benutzerdefinierte Zertifikat verwendet TLS Version 1.2 nicht

    • Die Protokollierung ist für die Verteilung deaktiviert

  • Herkunftsüberprüfungen:

    • Origin ist nicht mit TLS Version 1.2 konfiguriert

    • Die Kommunikation mit Origin ist auf einem anderen Protokoll erlaubt als HTTPS

  • Verhaltensprüfungen:

    • Standardverhaltenskommunikation ist auf einem anderen Protokoll zulässig als HTTPS

    • Kommunikation mit benutzerdefiniertem Verhalten ist für ein anderes Protokoll zulässig als HTTPS

Voraussetzungen und Einschränkungen

Voraussetzungen

  • Ein aktives AWS Konto

  • Eine E-Mail-Adresse, an die Sie Benachrichtigungen über Verstöße erhalten möchten

Einschränkungen

  • Diese Sicherheitskontrolle sucht nicht nach vorhandenen Cloudfront-Distributionen, es sei denn, die Distribution wurde aktualisiert.

  • CloudFront wird als globaler Service betrachtet und ist nicht an eine bestimmte AWS Region gebunden. Amazon CloudWatch Logs und AWS Cloudtrail API Logging für globale Dienste finden jedoch in der Region USA Ost (Nord-Virginia) statt (us-east-1). Daher CloudFront muss diese Sicherheitskontrolle für eingerichtet und aufrechterhalten werden. us-east-1 Bei CloudFront dieser einzelnen Bereitstellung werden alle Distributionen auf überwacht. Stellen Sie die Sicherheitskontrolle nicht in anderen AWS Regionen bereit. (Die Bereitstellung in anderen Regionen führt dazu, dass CloudWatch Ereignisse und die Lambda-Funktion nicht initiiert werden können und keine SNS Benachrichtigungen angezeigt werden.)

  • Diese Lösung wurde umfangreichen Tests mit Distributionen von CloudFront Webinhalten unterzogen. Sie deckt Streaming-Distributionen mit Echtzeit-Messaging-Protokoll (RTMP) nicht ab.

Architektur

Zieltechnologie-Stack

  • Lambda-Funktion

  • SNSThema

  • EventBridge Amazon-Regel

Zielarchitektur

Automatisierung und Skalierung

  • Wenn Sie AWS Organizations verwenden, können Sie AWSCloudformation verwenden, StackSets um die angehängte Vorlage für mehrere Konten bereitzustellen, die Sie überwachen möchten.

Tools

AWSDienste

  • AWS CloudFormation— CloudFormation ist ein Service, mit dem Sie AWS Ressourcen modellieren und einrichten können, indem Sie Infrastruktur als Code verwenden.

  • Amazon EventBridge — EventBridge stellt einen Stream von Echtzeitdaten aus Ihren eigenen Anwendungen, SaaS-Anwendungen (Software as a Service) und AWS Diensten bereit und leitet diese Daten an Ziele wie Lambda-Funktionen weiter.

  • AWSLambda — Lambda unterstützt die Ausführung von Code ohne Bereitstellung oder Verwaltung von Servern.

  • Amazon S3 — Amazon Simple Storage Service (Amazon S3) ist ein hoch skalierbarer Objektspeicherservice, der für eine Vielzahl von Speicherlösungen verwendet werden kann, darunter Websites, mobile Anwendungen, Backups und Data Lakes.

  • Amazon SNS — Amazon SNS koordiniert und verwaltet die Zustellung oder den Versand von Nachrichten zwischen Herausgebern und Kunden, einschließlich Webservern und E-Mail-Adressen. Abonnenten erhalten die veröffentlichten Mitteilungen zu den Themen, die sie abonniert haben. Alle Abonnenten eines Themas erhalten dieselben Mitteilungen.

Code

Der beigefügte Code beinhaltet:

  • Eine ZIP-Datei, die den Lambda-Code enthält (index.py)

  • Eine CloudFormation Vorlage (.yml-Datei), die Sie ausführen, um den Lambda-Code bereitzustellen

Epen

AufgabeBeschreibungErforderliche Fähigkeiten
Erstellen Sie den S3-Bucket für den Lambda-Code.

Erstellen Sie auf der Amazon S3 S3-Konsole einen S3-Bucket mit einem eindeutigen Namen, der keine führenden Schrägstriche enthält. Ein S3-Bucket-Name ist weltweit eindeutig, und der Namespace wird von allen AWS Konten gemeinsam genutzt. Ihr S3-Bucket muss sich in der Region befinden, in der Sie den Lambda-Code bereitstellen möchten.

Cloud-Architekt
Laden Sie den Lambda-Code in den S3-Bucket hoch.

Laden Sie den Lambda-Code (Datei cloudfront_ssl_log_lambda.zip), der im Abschnitt Anlagen bereitgestellt wird, in den S3-Bucket hoch, den Sie im vorherigen Schritt erstellt haben.

Cloud-Architekt
AufgabeBeschreibungErforderliche Fähigkeiten
Stellen Sie die CloudFormation Vorlage bereit.

Stellen Sie auf der AWS CloudFormation Konsole, in derselben AWS Region wie der S3-Bucket, die CloudFormation Vorlage (cloudfront-ssl-logging.yml) bereit, die im Abschnitt Anlagen bereitgestellt wird. 

Cloud-Architekt
Geben Sie den S3-Bucket-Namen an.

Geben Sie für den S3-Bucket-Parameter den Namen des S3-Buckets an, den Sie im ersten Epic erstellt haben.

Cloud-Architekt
Geben Sie den Amazon S3 S3-Schlüsselnamen für die Lambda-Datei an.

Geben Sie für den Parameter S3 Key den Amazon S3 S3-Speicherort der Lambda-Code-.zip-Datei in Ihrem S3-Bucket an. Fügen Sie keine führenden Schrägstriche ein (Sie können beispielsweise lambda.zip oder controls/lambda.zip eingeben).

Cloud-Architekt
Geben Sie eine E-Mail-Adresse für Benachrichtigungen an.

Geben Sie für den Parameter Benachrichtigungs-E-Mail eine E-Mail-Adresse an, an die Sie die Benachrichtigungen über Verstöße erhalten möchten.

Cloud-Architekt
Definieren Sie die Protokollierungsebene.

Definieren Sie für den Parameter Lambda Logging Level den Logging-Level für Ihre Lambda-Funktion. Wählen Sie einen der folgenden Werte aus: 

  • INFOum detaillierte Informationsmeldungen über den Fortschritt der Anwendung zu erhalten.

  • ERRORum Informationen über Fehlerereignisse zu erhalten, die dazu führen könnten, dass die Anwendung weiterhin ausgeführt werden kann.

  • WARNINGum Informationen über potenziell schädliche Situationen zu erhalten.

Cloud-Architekt
AufgabeBeschreibungErforderliche Fähigkeiten
Bestätigen Sie das Abonnement.

Wenn die CloudFormation Vorlage erfolgreich bereitgestellt wurde, wird ein neues SNS Thema erstellt und eine Abonnementnachricht an die von Ihnen angegebene E-Mail-Adresse gesendet. Sie müssen dieses E-Mail-Abonnement bestätigen, um Benachrichtigungen über Verstöße zu erhalten.

Cloud-Architekt

Anlagen

Um auf zusätzliche Inhalte zuzugreifen, die mit diesem Dokument verknüpft sind, entpacken Sie die folgende Datei: attachment.zip