Schützen Sie sensible Daten in CloudWatch Protokollen mithilfe von Amazon Macie - 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.

Schützen Sie sensible Daten in CloudWatch Protokollen mithilfe von Amazon Macie

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

Zusammenfassung

Dieses Muster zeigt Ihnen, wie Sie Amazon Macie verwenden, um sensible Daten in einer Amazon CloudWatch Logs-Protokollgruppe automatisch zu erkennen, indem Sie einen umfassenden Sicherheitsüberwachungsworkflow implementieren. Die Lösung verwendet Amazon Data Firehose, um CloudWatch Log-Einträge an Amazon Simple Storage Service (Amazon S3) zu streamen. Macie durchsucht diesen Bucket regelmäßig nach persönlich identifizierbaren Informationen (PII), Finanzdaten und anderen sensiblen Inhalten. Die Infrastruktur wird über eine AWS CloudFormation Vorlage bereitgestellt, die alle erforderlichen Konfigurationen bereitstellt AWS-Services .

CloudWatch Protokolle enthalten häufig Anwendungsdaten, die versehentlich vertrauliche Benutzerinformationen enthalten können. Dies kann zu Compliance- und Sicherheitsrisiken führen. Herkömmlichen Methoden zur Protokollüberwachung fehlen automatische Funktionen zur Erkennung sensibler Daten. Dies kann es schwierig machen, potenzielle Datenrisiken in Echtzeit zu erkennen und darauf zu reagieren.

Dieses Muster hilft Sicherheitsteams und Compliance-Beauftragten dabei, die Vertraulichkeit der Daten zu wahren, indem sensible Daten in Protokollierungssystemen automatisch erkannt und gewarnt werden. Diese Lösung ermöglicht eine proaktive Reaktion auf Vorfälle durch Benachrichtigungen von Amazon Simple Notification Service (Amazon SNS) und isoliert sensible Daten automatisch in einem sicheren Amazon S3 S3-Bucket. Sie können die Erkennungsmuster anpassen und den Workflow in Ihre bestehenden Sicherheitsabläufe integrieren.

Voraussetzungen und Einschränkungen

Voraussetzungen

Einschränkungen

  • Macie unterliegt Servicekontingenten. Weitere Informationen finden Sie unter Kontingente für Macie in der Macie-Dokumentation.

Architektur

Zielarchitektur

Das folgende Diagramm zeigt den Arbeitsablauf für die Verwendung von Macie zur Untersuchung von CloudWatch Log-Protokolleinträgen auf sensible Daten.

 

Der Arbeitsablauf zeigt die folgenden Schritte:

  1. Die CloudWatch Protokollgruppe Logs generiert die Protokolle, die dem Abonnementfilter unterliegen.

  2. Der Abonnementfilter leitet die Protokolle an Amazon Data Firehose weiter.

  3. Die Protokolle werden mit einem Schlüssel AWS Key Management Service (AWS KMS) verschlüsselt, wenn sie den Amazon Data Firehose-Lieferstream passieren.

  4. Der Lieferstream übermittelt die Protokolle an den Bucket für exportierte Logs in Amazon S3.

  5. Jeden Tag um 4 Uhr EventBridge startet Amazon eine AWS Lambda Funktion, die einen Macie-Scan nach sensiblen Daten im exportierten Log-Bucket startet.

  6. Wenn Macie sensible Daten im Bucket identifiziert, entfernt eine Lambda-Funktion das Protokoll aus dem exportierten Log-Bucket und verschlüsselt es mit einem. AWS KMS key

  7. Die Lambda-Funktion isoliert die Protokolle, die sensible Daten enthalten, im Datenisolierungs-Bucket.

  8. Die Identifizierung sensibler Daten leitet ein Amazon SNS SNS-Thema ein.

  9. Amazon SNS sendet eine E-Mail-Benachrichtigung an eine von Ihnen konfigurierte E-Mail-Adresse mit Informationen zu den Protokollen, die vertrauliche Daten enthalten.

Eingesetzte Ressourcen

Die CloudFormation Vorlage stellt die folgenden Ressourcen in Ihrem Ziel bereit AWS-Konto und AWS-Region:

Tools

AWS-Services

  • AWS CloudFormationhilft Ihnen dabei, AWS Ressourcen einzurichten, sie schnell und konsistent bereitzustellen und sie während ihres gesamten Lebenszyklus über AWS-Konten und AWS-Regionen zu verwalten.

  • Amazon CloudWatch Logs hilft Ihnen dabei, die Protokolle all Ihrer Systeme und Anwendungen zu zentralisieren, AWS-Services sodass Sie sie überwachen und sicher archivieren können.

  • Amazon Data Firehose unterstützt Sie bei der Bereitstellung von Echtzeit-Streaming-Daten an andere AWS-Services, benutzerdefinierte HTTP-Endpunkte und HTTP-Endpunkte, die von unterstützten Drittanbietern betrieben werden.

  • Amazon EventBridge ist ein serverloser Event-Bus-Service, mit dem Sie Ihre Anwendungen mit Echtzeitdaten aus einer Vielzahl von Quellen verbinden können. Zum Beispiel Quellen wie AWS Lambda Funktionen, HTTP-Aufruf-Endpunkte, die API-Ziele verwenden, oder Event-Busse in anderen. AWS-Konten

  • AWS Key Management Service (AWS KMS) hilft Ihnen dabei, kryptografische Schlüssel zu erstellen und zu kontrollieren, um Ihre Daten zu schützen.

  • AWS Lambda ist ein Datenverarbeitungsservice, mit dem Sie Code ausführen können, ohne dass Sie Server bereitstellen oder verwalten müssen. Es führt Ihren Code nur bei Bedarf aus und skaliert automatisch, sodass Sie nur für die tatsächlich genutzte Rechenzeit zahlen.

  • Amazon Macie hilft Ihnen dabei, sensible Daten zu entdecken, bietet Einblick in Datensicherheitsrisiken und ermöglicht automatisierten Schutz vor diesen Risiken.

  • Amazon Simple Notification Service (Amazon SNS) unterstützt Sie bei der Koordination und Verwaltung des Nachrichtenaustauschs zwischen Herausgebern und Kunden, einschließlich Webservern und E-Mail-Adressen.

  • Amazon Simple Storage Service (Amazon S3) ist ein cloudbasierter Objektspeicherservice, der Sie beim Speichern, Schützen und Abrufen beliebiger Datenmengen unterstützt.

Code-Repository

Der Code für dieses Muster ist im Repository GitHub sample-macie-for-securing-cloudwatch-logs verfügbar.

Best Practices

Folgen Sie den CloudFormation Best Practices in der Dokumentation. CloudFormation

Epen

AufgabeDescriptionErforderliche Fähigkeiten

Klonen Sie das Code-Repository.

Geben Sie den folgenden Befehl ein, um das Repository auf Ihre lokale Workstation zu klonen:

git clone https://github.com/aws-samples/sample-macie-for-securing-cloudwatch-logs
App-Developer

(Optional) Bearbeiten Sie die CloudFormation Vorlage.

  1. Öffnen Sie die Datei main.yaml.

  2. Passen Sie die Vorlage an, indem Sie einen der folgenden Schritte ausführen:

    • Sie können Ressourcen umbenennen.

    • In parameter diesem Abschnitt können Sie die Standardwerte ändern.

    • Sie können das Abonnementfiltermuster ändern. Weitere Informationen finden Sie unter Abonnementfilter auf Gruppenebene protokollieren in der Dokumentation zu CloudWatch Protokollen.

  3. Speichern und schließen Sie die Datei main.yaml.

App-Developer

Option 1 — Bereitstellung mithilfe eines Skripts mit Befehlszeilenparametern.

Geben Sie den folgenden Befehl ein, um die Lösung mithilfe von Befehlszeilenparametern bereitzustellen, wobei der Wert für true nur dann enable-macie gilt, wenn Amazon Macie noch nicht aktiviert ist:

./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>
Allgemeines AWS

Option 2 — Bereitstellung mithilfe eines Skripts mit Umgebungsvariablen.

  1. Geben Sie die folgenden Befehle ein, um die Umgebungsvariablen zu definieren, wobei der Wert für true nur dann ENABLE_MACIE gilt, wenn Amazon Macie noch nicht aktiviert ist:

    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. Geben Sie den folgenden Befehl ein, um die Parameter vor der Bereitstellung zu überprüfen:

    ./scripts/test-macie-solution.sh \ --validate-params \ --email <email address> \ --region <region>
  3. Geben Sie den folgenden Befehl ein, um die Lösung bereitzustellen:

    ./scripts/test-macie-solution.sh --deploy-stack
Allgemeines AWS

Option 3 — Bereitstellung mit dem AWS CLI.

Geben Sie den folgenden Befehl ein, um die Lösung mithilfe von bereitzustellen AWS CLI, wobei der Wert für true nur dann EnableMacie gilt, wenn Amazon Macie noch nicht aktiviert ist:

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 — Bereitstellung über die AWS-Managementkonsole.

  1. Öffnen Sie die AWS CloudFormation -Konsole.

  2. Wählen Sie in der Navigationsleiste oben auf dem Bildschirm die aus, in der der Stapel erstellt werden AWS-Region soll.

  3. Wählen Sie auf der Seite Stapel oben rechts Stapel erstellen und dann Mit neuen Ressourcen (Standard).

  4. Wählen Sie auf der Seite „Stack erstellen“ unter Voraussetzung — Vorlage vorbereiten die Option Vorhandene Vorlage auswählen aus.

  5. Wählen Sie unter Vorlage angeben die Option Eine Vorlagendatei hochladen aus und laden Sie dann die Vorlage main.yaml aus Ihrem geklonten Repository hoch.

  6. Wählen Sie Weiter aus.

  7. Geben Sie auf der Seite „Stack-Details angeben“ im Feld Stack-Name einen Stack-Namen ein.

  8. Geben Sie im Abschnitt Parameter Werte für die folgenden Vorlagenparameter an.

    • ResourceName: Präfix für alle Ressourcen

    • BucketName: Eindeutiger Name für den Amazon S3 S3-Bucket

    • LogGroupName: Name der Protokollgruppe für CloudWatch Logs

    • SNSTopicEndpointEmail: E-Mail-Adresse für Benachrichtigungen

    • EnableMacie: Auf einstellen, true falls Macie noch nicht aktiviert ist

    • (Optional)Region: Der AWS-Region Ort, an dem Sie den Stack bereitstellen möchten.

    • (Optional)TemplatePath: Pfad zur CloudFormation Vorlage

  9. Wählen Sie Weiter aus.

  10. Wählen Sie unter Funktionen die Option Ich bestätige, dass diese Vorlage möglicherweise IAM-Ressourcen erstellen kann aus, um anzugeben, dass Sie IAM-Ressourcen in der Vorlage verwenden möchten.

  11. Wählen Sie Weiter aus.

  12. Auf der Seite Überprüfen und erstellen überprüfen Sie die Details Ihres Stacks.

  13. Wählen Sie Senden um Ihren Stapel zu starten.

Allgemeines AWS

Überwachen Sie den Bereitstellungsstatus und bestätigen Sie die Bereitstellung.

  1. Geben Sie den folgenden Befehl ein, um den Bereitstellungsstatus zu überwachen:

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

    Sie können den Fortschritt und den Status der Stack-Erstellung auch auf der Registerkarte Ereignisse für Ihren neuen Stack überwachen. Weitere Informationen finden Sie unter Stack-Fortschritt überwachen.

  2. Wenn sich der Status auf CREATE_COMPLETE ändert, überprüfen Sie die Ressourceninformationen in den Stack-Ausgaben.

Allgemeines AWS

Bestätigen Sie das Amazon SNS SNS-Abonnement.

Folgen Sie den Anweisungen unter Bestätigen Sie Ihr Amazon SNS SNS-Abonnement in der Amazon SNS SNS-Dokumentation, um Ihr Amazon SNS SNS-Abonnement zu bestätigen.

App-Developer
AufgabeDescriptionErforderliche Fähigkeiten

Option 1 — Test mit automatisierter Berichterstattung.

Wenn Sie den Standard-Stacknamen verwendet haben, geben Sie den folgenden Befehl ein, um die Lösung zu testen:

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

Wenn Sie einen benutzerdefinierten Stacknamen verwendet haben, geben Sie den folgenden Befehl ein, um die Lösung zu testen:

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

Wenn Sie einen benutzerdefinierten Stacknamen und benutzerdefinierte Parameter verwendet haben, geben Sie den folgenden Befehl ein, um die Lösung zu testen:

./scripts/test-macie-solution.sh --full-test \ --stack-name <stack name> \ --region <region> \ --log-group <log group path>
Allgemeines AWS

Option 2 — Test mit gezielter Validierung.

  1. Geben Sie den folgenden Befehl ein, um Testdaten mit vertraulichen Informationen zu generieren:

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

    Der Befehl hat folgende Auswirkungen:

    • Erstellt CloudWatch Protokolleinträge, die realistische Muster sensibler Daten enthalten, darunter Mitarbeiter- IDs IDs, Patent-, Kreditkartennummern, Sozialversicherungsnummern und E-Mail-Adressen

    • Generiert sowohl sensible als auch nicht sensible Protokolleinträge für umfassende Tests

    • Ermöglicht eine detaillierte Protokollierung des Prozesses der Testdatengenerierung

  2. Geben Sie den folgenden Befehl ein, um den Daten-Pipeline-Fluss zu überprüfen:

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

    Der Befehl hat folgende Auswirkungen:

    • Bestätigt, dass die CloudWatch Log-Einträge an Amazon Data Firehose gestreamt werden

    • Überprüft, ob die Protokolldaten mit der richtigen Verschlüsselung an den Amazon S3 S3-Bucket übermittelt wurden

    • Überprüft, ob der Amazon S3 S3-Objektspeicher die richtige Präfixstruktur hat

    • Überprüft den Verschlüsselungsstatus der gespeicherten Objekte

    • Überwacht den Zeitpunkt des Datenflusses und stellt Wartezeiten für die Verarbeitung bereit

  3. Geben Sie den folgenden Befehl ein, um den Macie-Klassifizierungsjob zu starten:

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

    Der Befehl hat folgende Auswirkungen:

    • Löst den Macie-Klassifizierungsjob manuell über eine Lambda-Funktion aus

    • Überwacht den Status der Auftragsausführung und gibt Feedback

    • Überprüft die Verfügbarkeit des Macie-Dienstes vor der Ausführung

    • Behandelt Fälle, in denen Macie im Konto nicht aktiviert ist

    • Liefert detaillierte Ergebnisse der Jobausführung

  4. Geben Sie den folgenden Befehl ein, um die Warnung und die Datenisolierung zu überprüfen:

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

    Der Befehl hat folgende Auswirkungen:

    • Bestätigt, dass die EventBridge Regeln ordnungsgemäß konfiguriert und aktiv sind

    • Überprüft die Amazon SNS SNS-Themenkonfiguration und den Abonnementstatus

    • Überprüft die Einrichtung und die Berechtigungen des Buckets zur Datenisolierung

    • Überwacht die Verschiebung sensibler Daten in den Isolations-Bucket

    • Überprüft die vollständige Funktionalität des Warnungs-Workflows

Allgemeines AWS
AufgabeDescriptionErforderliche Fähigkeiten

Option 1 — Führen Sie eine automatische Bereinigung durch.

Wenn Sie den Standard-Stacknamen verwendet haben, geben Sie den folgenden Befehl ein, um den Stack zu löschen:

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

Wenn Sie einen benutzerdefinierten Stacknamen verwendet haben, geben Sie den folgenden Befehl ein, um den Stack zu löschen:

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

Wenn Sie einen benutzerdefinierten Stacknamen und benutzerdefinierte Parameter verwendet haben, geben Sie den folgenden Befehl ein, um den Stack zu löschen:

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

Option 2 — Führen Sie eine step-by-step Bereinigung durch.

  1. Geben Sie den folgenden Befehl ein, um aktive Prozesse zu beenden:

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

    Der Befehl hat folgende Auswirkungen:

    • Deaktiviert EventBridge Regeln, um die Ausführung neuer Jobs zu verhindern

    • Stoppt alle aktuell ausgeführten Macie-Klassifizierungsjobs

    • Bricht ausstehende Macie-Jobausführungen ab

    • Löscht alle ausstehenden Amazon SNS SNS-Nachrichten in der Warteschlange

    • Stellt Statusaktualisierungen für jeden gestoppten Prozess bereit

  2. Geben Sie den folgenden Befehl ein, um die Amazon S3 S3-Buckets zu leeren:

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

    Der Befehl hat folgende Auswirkungen:

    • Entfernt alle Objekte aus dem Bucket für Logs CloudWatch

    • Entfernt alle Objekte aus dem Amazon S3 S3-Bucket mit Datenisolierung

    • Löscht alle unvollständigen mehrteiligen Uploads

    • Verarbeitet versionierte Objekte, wenn die Amazon S3 S3-Versionierung aktiviert ist

    • Stellt Aktualisierungen zur Objektanzahl und zum Löschfortschritt bereit

  3. Geben Sie den folgenden Befehl ein, um den CloudFormation Stapel zu löschen:

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

    Der Befehl hat folgende Auswirkungen:

    • Leitet den Vorgang zum Löschen des CloudFormation Stacks ein

    • Überwacht den Löschfortschritt mit Statusaktualisierungen in Echtzeit

    • Behandelt Löschfehler mit detaillierter Fehlerberichterstattung

    • Wartet auf die vollständige Entfernung des Stapels, bevor der Vorgang fortgesetzt wird

    • Stellt einen Stack-Ereignisverlauf zur Fehlerbehebung bereit

  4. Geben Sie den folgenden Befehl ein, um die Macie-Ressourcen zu bereinigen:

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

    Dieser Stapel macht Folgendes:

    • Entfernt benutzerdefinierte Datenbezeichner, die von der Lösung erstellt wurden

    • Löscht alle verbleibenden Macie-Job-Artefakte und -Ergebnisse

    • Deaktiviert die Macie-Sitzung, wenn sie vom Stack aktiviert wurde

    • Behandelt Fälle, in denen Macie-Ressourcen mit anderen Anwendungen gemeinsam genutzt werden

    • Stellt den detaillierten Bereinigungsstatus für jede Macie-Komponente bereit

Allgemeines AWS

Überprüfen Sie das Aufräumen.

  1. Geben Sie den folgenden Befehl ein, um zu überprüfen, ob der Stack gelöscht wurde:

    aws cloudformation describe-stacks \ --stack-name <stack name> \ --region <region>
  2. Geben Sie den folgenden Befehl ein, um zu überprüfen, ob die Amazon S3 S3-Buckets gelöscht wurden:

    aws s3 ls | grep macie
  3. Geben Sie den folgenden Befehl ein, um zu überprüfen, ob die benutzerdefinierten Macie-Datenkennungen entfernt wurden:

    aws macie2 list-custom-data-identifiers \ --region <region>
  4. Geben Sie den folgenden Befehl ein, um nach verbleibenden Ressourcen zu suchen:

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

Fehlerbehebung

ProblemLösung

CloudFormation Der Stack-Status zeigt CREATE_FAILED an.

Die CloudFormation Vorlage ist so konfiguriert, dass sie Protokolle in Logs veröffentlicht. CloudWatch Sie können die Protokolle in der einsehen, AWS-Managementkonsole sodass Sie keine Verbindung zu Ihrer EC2 Amazon-Instance herstellen müssen. Weitere Informationen finden Sie unter CloudFormation Logs in der Konsole anzeigen (AWS Blogbeitrag).

CloudFormation delete-stackBefehl schlägt fehl.

Einige Ressourcen müssen leer sein, bevor sie gelöscht werden können. Sie müssen beispielsweise alle Objekte in einem Amazon S3 S3-Bucket oder alle Instances in einer EC2 Amazon-Sicherheitsgruppe löschen, bevor Sie den Bucket oder die Sicherheitsgruppe löschen können. Weitere Informationen finden Sie unter Stack löschen schlägt fehl in der Amazon S3 S3-Dokumentation.

Fehler beim Analysieren eines Parameters.

Wenn Sie die Konsole AWS CLI oder die CloudFormation Konsole verwenden, um einen Wert zu übergeben, fügen Sie die Anführungszeichen hinzu.

Zugehörige Ressourcen