AWS Control Tower-Logs erfassen
In diesem Dokument wird beschrieben, wie Sie AWS Control Tower-Protokolle in Google Security Operations aufnehmen. AWS Control Tower ermöglicht die Governance, Compliance und Sicherheitsüberwachung für mehrere AWS-Konten. Mit dieser Integration können Sie Protokolle aus AWS Control Tower analysieren, um mehr Transparenz und Sicherheit zu erhalten.
Vorbereitung
- Sie benötigen eine Google SecOps-Instanz.
- Sie benötigen erhöhte Zugriffsrechte für AWS.
Amazon S3-Bucket konfigurieren
- Erstellen Sie einen Amazon S3-Bucket. Folgen Sie dazu dieser Anleitung: Bucket erstellen.
- Speichern Sie den Namen und die Region des Buckets für später.
- Erstellen Sie einen Nutzer gemäß der Anleitung IAM-Nutzer erstellen.
- Wählen Sie den erstellten Nutzer aus.
- Wählen Sie den Tab Sicherheitsanmeldedaten aus.
- Klicken Sie im Bereich Zugriffsschlüssel auf Zugriffsschlüssel erstellen.
- Wählen Sie als Anwendungsfall Drittanbieterdienst aus.
- Klicken Sie auf Weiter.
- Optional: Fügen Sie ein Beschreibungs-Tag hinzu.
- Klicken Sie auf Zugriffsschlüssel erstellen.
- Klicken Sie auf CSV-Datei herunterladen, um den Zugriffsschlüssel und den Secret Access Key zur späteren Verwendung zu speichern.
- Klicken Sie auf Fertig.
- Wählen Sie den Tab Berechtigungen aus.
- Klicken Sie im Bereich Berechtigungsrichtlinien auf Berechtigungen hinzufügen.
- Wählen Sie Berechtigungen hinzufügen aus.
- Wählen Sie Richtlinien direkt anhängen aus.
- Suchen Sie nach den Richtlinien AmazonS3FullAccess und CloudWatchLogsFullAccess und wählen Sie sie aus.
- Klicken Sie auf Weiter.
- Klicken Sie auf Berechtigungen hinzufügen.
CloudTrail in AWS Control Tower konfigurieren
- Melden Sie sich bei der AWS Management Console an.
- Rufen Sie AWS Control Tower auf.
- Geben Sie in die Suchleiste CloudTrail ein und wählen Sie die Option in der Dienstliste aus.
Klicken Sie auf Pfad erstellen, um einen neuen Pfad zu erstellen.
Legen Sie die Trail-Einstellungen fest:
- Pfadname: Geben Sie einen aussagekräftigen Namen für den Pfad an, z. B. ControlTowerTrail.
- Trail auf alle Regionen anwenden: Wählen Sie Ja für Trail auf alle Regionen anwenden aus.
- Verwaltungsereignisse: Die Ereignisse vom Typ Lesen/Schreiben müssen auf Alle eingestellt sein.
- Optional: Datenereignisse: Aktivieren Sie S3-Datenereignisse und Lambda-Datenereignisse, um detaillierte Datenaktivitäten zu erfassen.
- Optional: Validierung der Logdatei: Aktivieren Sie diese Option, damit Logdateien nach dem Speichern nicht manipuliert werden.
Wählen Sie in der Auswahl Ereignis aus, ob Verwaltungsereignisse und Datenereignisse protokolliert werden sollen.
CloudTrail für das Senden von Protokollen an einen S3-Bucket konfigurieren
- Rufen Sie die AWS IAM-Konsole auf.
- Klicken Sie auf Rollen.
- Suchen Sie nach der Rolle, die von CloudTrail verwendet wird
AWSServiceRoleForCloudTrail
. Die Rolle wird automatisch beim Einrichten von CloudTrail erstellt. - Klicken Sie auf dem Tab Berechtigungen für die Rolle auf Richtlinien anhängen.
- Suchen Sie nach
CloudTrailS3DeliveryPolicy
. - Klicken Sie das Kästchen neben der
CloudTrailS3DeliveryPolicy
-Richtlinie an. - Klicken Sie auf Richtlinie anfügen.
- Rufen Sie die CloudTrail Console von AWS auf.
- Wählen Sie im Bereich Speicherort S3 als Ziel für Protokolldateien aus.
- Wählen Sie den zuvor erstellten S3-Bucket aus.
- Klicken Sie auf Zulassen, wenn Sie aufgefordert werden, CloudTrail die Berechtigung zum Schreiben von Protokollen in den ausgewählten Bucket zu erteilen.
- Prüfen Sie Ihre Einstellungen und klicken Sie auf Erstellen oder auf Änderungen speichern, wenn Sie einen vorhandenen Trail bearbeiten.
Feed in Google SecOps für die Aufnahme von AWS Control Tower-Logs konfigurieren
- Gehen Sie zu SIEM-Einstellungen > Feeds.
- Klicken Sie auf Neu hinzufügen.
- Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B. AWS Control Tower-Protokolle.
- Wählen Sie als Quelltyp Amazon S3 aus.
- Wählen Sie AWS Control Tower als Logtyp aus.
- Klicken Sie auf Weiter.
Geben Sie Werte für die folgenden Eingabeparameter an:
- Region: die Region, in der sich der Amazon S3-Bucket befindet.
- S3-URI: der Bucket-URI.
s3://your-log-bucket-name/
- Ersetzen Sie
your-log-bucket-name
durch den tatsächlichen Namen des Buckets.
- Ersetzen Sie
- URI ist ein: Wählen Sie Verzeichnis oder Verzeichnis mit Unterverzeichnissen aus.
Optionen zum Löschen der Quelle: Wählen Sie die gewünschte Löschoption aus.
Access Key ID: Der Nutzerzugriffsschlüssel mit Zugriff auf den S3-Bucket.
Geheimer Zugriffsschlüssel: Der geheime Schlüssel des Nutzers mit Zugriff auf den S3-Bucket.
Asset-Namespace: der Asset-Namespace.
Aufnahmelabels: Das Label, das auf die Ereignisse aus diesem Feed angewendet werden soll.
Klicken Sie auf Weiter.
Prüfen Sie die neue Feedkonfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.
UDM-Zuordnungstabelle
Logfeld | UDM-Zuordnung | Logik |
---|---|---|
awsAccountId | target.user.group_identifiers | Die mit dem Ereignis verknüpfte AWS-Konto-ID. |
digestPublicKeyFingerprint | target.file.sha1 | Der Fingerabdruck des öffentlichen Schlüssels, der zum Signieren des Digests verwendet wurde. |
digestPublicKeyFingerprint | target.resource.attribute.labels.value | Der Fingerabdruck des öffentlichen Schlüssels, der zum Signieren des Digests verwendet wurde. |
digestS3Bucket | target.resource.name | Der Name des S3-Buckets, in dem der Digest gespeichert ist. |
digestS3Object | target.file.full_path | Der Pfad zum Digest-Objekt im S3-Bucket. |
digestSignatureAlgorithm | network.tls.cipher | Der Algorithmus, der zum Signieren des Digests verwendet wird. |
digestSignatureAlgorithm | target.resource.attribute.labels.value | Der Algorithmus, der zum Signieren des Digests verwendet wird. |
digestStartTime | metadata.event_timestamp | Die Startzeit des Zeitraums für den Recap. Wird als Ereigniszeit verwendet, wenn „eventTime“ nicht verfügbar ist. |
eventCategory | security_result.category_details | Die Kategorie des Ereignisses. |
eventID | metadata.product_log_id | Die eindeutige ID des Ereignisses. |
eventName | metadata.product_event_type | Der Name des Ereignisses. |
eventName | security_result.summary | Der Name des Ereignisses, der zum Generieren der Zusammenfassung der Sicherheitsergebnisse verwendet wird. |
eventSource | target.application | Die Quelle des Ereignisses. |
eventTime | metadata.event_timestamp | Zeit, zu der das Ereignis aufgetreten ist. |
eventType | additional.fields.value.string_value | Der Typ des Ereignisses. |
logFiles.hashValue | about.file.sha256 | SHA-256-Hash der Protokolldatei. |
logFiles.s3Bucket | about.resource.name | Der Name des S3-Buckets, in dem die Protokolldatei gespeichert ist. |
logFiles.s3Object | about.file.full_path | Der Pfad zum Logdateiobjekt im S3-Bucket. |
previousDigestHashValue | target.file.sha256 | Der SHA-256-Hash des vorherigen Digests. |
recipientAccountId | target.resource.attribute.labels.value | Die AWS-Konto-ID des Empfängers des Ereignisses. |
Records.awsRegion | principal.location.name | Die AWS-Region, in der das Ereignis aufgetreten ist. |
Records.errorCode | security_result.rule_id | Der Fehlercode, der der Anfrage zugeordnet ist (falls vorhanden). |
Records.errorMessage | security_result.description | Die Fehlermeldung, die mit der Anfrage verknüpft ist, falls vorhanden. |
Records.eventCategory | security_result.category_details | Die Kategorie des Ereignisses. |
Records.eventID | metadata.product_log_id | Die eindeutige ID des Ereignisses. |
Records.eventName | metadata.product_event_type | Der Name des Ereignisses. |
Records.eventName | security_result.summary | Der Name des Ereignisses, der zum Generieren der Zusammenfassung der Sicherheitsergebnisse verwendet wird. |
Records.eventSource | target.application | Die Quelle des Ereignisses. |
Records.eventTime | metadata.event_timestamp | Zeit, zu der das Ereignis aufgetreten ist. |
Records.eventType | additional.fields.value.string_value | Der Typ des Ereignisses. |
Records.requestID | target.resource.attribute.labels.value | Die ID der Anfrage. |
Records.requestParameters.groupName | target.group.group_display_name | Der Name der Gruppe, die mit der Anfrage verknüpft ist, falls vorhanden. |
Records.requestParameters.userName | src.user.userid | Der Name des Nutzers, der mit der Anfrage verknüpft ist, sofern vorhanden. |
Records.requestParameters.userName | src.user.user_display_name | Der Name des Nutzers, der mit der Anfrage verknüpft ist, sofern vorhanden. |
Records.responseElements.ConsoleLogin | security_action | Das Ergebnis des Anmeldeversuchs in der Konsole. |
Records.responseElements.ConsoleLogin | security_result.summary | Das Ergebnis des Anmeldeversuchs in der Konsole, das zum Generieren der Zusammenfassung der Sicherheitsergebnisse verwendet wird. |
Records.sourceIPAddress | principal.hostname | Die IP-Adresse des Hauptkontos. Wird als Hostname verwendet, wenn keine gültige IP-Adresse angegeben wurde. |
Records.sourceIPAddress | principal.ip | Die IP-Adresse des Hauptkontos. |
Records.tlsDetails.cipherSuite | network.tls.cipher | Die Chiffrensammlung, die für die TLS-Verbindung verwendet wird. |
Records.tlsDetails.tlsVersion | network.tls.version | Die TLS-Version, die für die Verbindung verwendet wird. |
Records.userAgent | network.http.user_agent | Der User-Agent der Anfrage. |
Records.userIdentity.accessKeyId | additional.fields.value.string_value | Die für die Anfrage verwendete Zugriffsschlüssel-ID. |
Records.userIdentity.accountId | principal.user.group_identifiers | Die AWS-Konto-ID des Nutzers. |
Records.userIdentity.arn | principal.user.attribute.labels.value | Die ARN des Nutzers. |
Records.userIdentity.arn | target.user.userid | Die ARN des Nutzers. Wird als User-ID verwendet, wenn „userName“ nicht verfügbar ist. |
Records.userIdentity.principalId | principal.user.product_object_id | Die Haupt-ID des Nutzers. |
Records.userIdentity.sessionContext.attributes.mfaAuthenticated | principal.user.attribute.labels.value | Gibt an, ob für die Anfrage die Bestätigung in zwei Schritten verwendet wurde. |
Records.userIdentity.sessionContext.sessionIssuer.userName | principal.user.userid | Der Nutzername des Nutzers, der die Sitzung gestartet hat. |
Records.userIdentity.type | principal.resource.type | Die Art der Identität, die für die Anfrage verwendet wird. |
Records.userIdentity.userName | target.user.userid | Der Nutzername des Nutzers. |
- | extensions.auth.mechanism | Legen Sie diesen Wert auf „REMOTE“ fest. |
- | metadata.event_type | Je nach Ereignisname auf „STATUS_UPDATE“, „USER_RESOURCE_ACCESS“, „USER_LOGIN“ oder „GENERIC_EVENT“ festlegen. |
- | metadata.log_type | Legen Sie diesen Wert auf „AWS_CONTROL_TOWER“ fest. |
- | metadata.product_name | Legen Sie diesen Wert auf „AWS Control Tower“ fest. |
- | metadata.vendor_name | Legen Sie diesen Wert auf „AWS“ fest. |
- | principal.asset.attribute.cloud.environment | Legen Sie diesen Wert auf „AMAZON_WEB_SERVICES“ fest. |
- | security_result.action | Legen Sie je nach errorCode „ALLOW“ oder „BLOCK“ fest. |
- | security_result.severity | Legen Sie „INFORMATIONELL“ fest. |
Änderungen
2024-03-17
- Verbesserung:
- „req.userIdentity.arn“ und „req.userIdentity.userName“ wurden „target.user.userid“ zugeordnet.
2023-01-04
- Verbesserung:
- Initialisierte Variablen, um die Replikation von Daten in der For-Schleife zu vermeiden.
2022-12-15
- Verbesserung:
- „metadata.vendor_name“ wurde auf „AWS“ zugeordnet.
- „metadata.product_name“ wurde auf „AWS Control Tower“ zugeordnet.
- „metadata.event_type“ wurde in „USER_LOGIN“ umgewandelt, wenn „eventName“ „ConsoleLogin“ ist.
- „security_result.severity“ wurde in „INFORMATIONAL“ umgewandelt, wenn „eventName“ „ConsoleLogin“ ist.
2022-11-17
- Verbesserung:
- „req.userIdentity.userName“ und „req.userIdentity.sessionContext.sessionIssuer.userName“ wurden in „target.user.id“ überführt.
- „ConsoleLogin:Success“ wurde „security_result.action“ zugeordnet.
- Zugeordnete Portinformationen von „sourceIPAddress“ zu „principal.port“.
2022-10-31
- Neu erstellter Parser.
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten