Logs für AWS EC2-Hosts erfassen
In diesem Dokument wird beschrieben, wie Sie AWS EC2-Hostprotokolle für Monitoring und Analysen in Google Security Operations einbinden. Bei der Integration werden EC2-Hostprotokolle geparst und dem Unified Data Model (UDM) zugeordnet, Daten transformiert und Beziehungen zwischen EC2-Hosts und ‑Instanzen erstellt. Die Protokolle enthalten wertvolle Informationen zu den Instanzen, Hosteigenschaften, Instanztypen und Leistungsmesswerten, die für die Sicherheitsüberwachung, Prüfung und Compliance verwendet werden können.
Hinweise
- Sie benötigen eine Google SecOps-Instanz.
- Sie benötigen erhöhte Zugriffsrechte für AWS.
AWS IAM und S3 konfigurieren
- Erstellen Sie einen Amazon S3-Bucket. Folgen Sie dazu der Anleitung unter 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 der Richtlinie AmazonS3FullAccess und wählen Sie sie aus.
- Klicken Sie auf Weiter.
- Klicken Sie auf Berechtigungen hinzufügen.
CloudTrail für AWS KMS konfigurieren
- Melden Sie sich bei der AWS Management Console an.
- Geben Sie in die Suchleiste CloudTrail ein und wählen Sie den Dienst aus der Liste aus.
- Klicken Sie auf Weg erstellen.
- Geben Sie einen Trail-Namen an, z. B.
EC2-Activity-Trail
. - Klicken Sie auf das Kästchen Für alle Konten in meiner Organisation aktivieren.
- Geben Sie den zuvor erstellten S3-Bucket-URI ein (das Format sollte
s3://your-log-bucket-name/
sein) oder erstellen Sie einen neuen S3-Bucket. - Wenn die serverseitige Verschlüsselung mit AWS KMS aktiviert ist, geben Sie einen Namen für den AWS KMS-Alias an oder wählen Sie einen vorhandenen AWS KMS-Schlüssel aus.
- Die anderen Einstellungen können Sie beibehalten.
- Klicken Sie auf Weiter.
- Wählen Sie unter Ereignistypen die Optionen Verwaltungsereignisse und Datenereignisse aus, um EC2-Hostaktivitäten zu erfassen.
- Klicken Sie auf Weiter.
- Prüfen Sie die Einstellungen unter Überprüfen und erstellen.
- Klicken Sie auf Weg erstellen.
- Optional: Wenn Sie einen neuen Bucket erstellt haben, fahren Sie mit der folgenden Anleitung fort:
- Rufen Sie S3 auf.
- Suchen Sie den neu erstellten Log-Bucket und wählen Sie ihn aus.
- Wählen Sie den Ordner AWSLogs aus.
- Klicken Sie auf S3-URI kopieren und speichern Sie sie.
Feed in Google SecOps für die Aufnahme von AWS EC2-Hosts 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 EC2-Hostprotokolle.
- Wählen Sie als Quelltyp Amazon S3 aus.
- Wählen Sie als Logtyp AWS EC2-Hosts 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.
Secret Access Key: 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 |
---|---|---|
AllocationTime |
entity.metadata.creation_timestamp |
Das Feld AllocationTime wird als Zeitstempel geparst und dem Feld creation_timestamp zugeordnet. Der Parser versucht, verschiedene Formate zu verarbeiten (JJJJ-MM-TT HH:mm:ss, RFC 3339, UNIX, ISO 8601). |
AllowsMultipleInstanceTypes |
entity.entity.asset.attribute.labels.value |
Der Wert von AllowsMultipleInstanceTypes aus dem Rohprotokoll wird als Wert eines Labels verwendet. Der Schlüssel für dieses Label ist auf allows_multiple_instance_types festgelegt. |
AutoPlacement |
entity.entity.asset.attribute.labels.value |
Der Wert von AutoPlacement aus dem Rohprotokoll wird als Wert eines Labels verwendet. Der Schlüssel für dieses Label ist auf auto_placement festgelegt. |
AvailabilityZone |
entity.entity.asset.attribute.cloud.availability_zone |
Das Feld AvailabilityZone wird direkt dem Feld availability_zone zugeordnet. |
AvailabilityZoneID |
entity.entity.asset.attribute.labels.value |
Der Wert von AvailabilityZoneID aus dem Rohprotokoll wird als Wert eines Labels verwendet. Der Schlüssel für dieses Label ist auf availability_zone_id festgelegt. |
AvailableCapacity.AvailableInstanceCapacity.AvailableCapacity |
entity.entity.asset.attribute.labels.value |
Der Wert von AvailableCapacity.AvailableInstanceCapacity.AvailableCapacity (oder AvailableCapacity.Instance.Available nach der Umbenennung) wird in einen String konvertiert und als Wert eines Labels verwendet. Der Schlüssel ist auf available_instance_capacity_available_capacity festgelegt. |
AvailableCapacity.AvailableInstanceCapacity.InstanceType |
entity.entity.asset.attribute.labels.value |
Der Wert AvailableCapacity.AvailableInstanceCapacity.InstanceType (oder AvailableCapacity.Instance.Type nach der Umbenennung) wird als Wert eines Labels verwendet. Der Schlüssel ist auf available_instance_capacity_instance_type festgelegt. |
AvailableCapacity.AvailableInstanceCapacity.TotalCapacity |
entity.entity.asset.attribute.labels.value |
Der Wert von AvailableCapacity.AvailableInstanceCapacity.TotalCapacity (oder AvailableCapacity.Instance.Total nach der Umbenennung) wird in einen String umgewandelt und als Wert eines Labels verwendet. Der Schlüssel ist auf total_capacity festgelegt. |
AvailableCapacity.AvailableVCpus |
entity.entity.asset.attribute.labels.value |
Der Wert von AvailableCapacity.AvailableVCpus (oder AvailableCapacity.VCPUs nach der Umbenennung) wird in einen String konvertiert und als Wert eines Labels verwendet. Der Schlüssel ist auf available_v_cpus festgelegt. |
ClientToken |
entity.entity.asset.attribute.labels.value |
Der Wert von ClientToken aus dem Rohprotokoll wird als Wert eines Labels verwendet. Der Schlüssel für dieses Label ist auf client_token festgelegt. |
HostID |
entity.metadata.product_entity_id |
Das Feld HostID (oder ID nach der Umbenennung) wird direkt dem Feld product_entity_id zugeordnet. |
HostID |
entity.entity.asset.asset_id |
Das Feld HostID (oder ID nach der Umbenennung) wird direkt dem Feld asset_id zugeordnet. |
HostMaintenance |
entity.entity.asset.attribute.labels.value |
Der Wert von HostMaintenance (oder Maintenance nach der Umbenennung) aus dem Rohprotokoll wird als Wert eines Labels verwendet. Der Schlüssel für dieses Label ist auf host_maintenance festgelegt. |
HostProperties.Cores |
entity.entity.asset.hardware.cpu_number_cores |
Der Wert von HostProperties.Cores wird in eine vorzeichenlose Ganzzahl konvertiert und cpu_number_cores zugeordnet. |
HostProperties.InstanceFamily |
entity.entity.asset.attribute.labels.value |
Der Wert von HostProperties.InstanceFamily aus dem Rohprotokoll wird als Wert eines Labels verwendet. Der Schlüssel für dieses Label ist auf host_properties_instance_family festgelegt. |
HostProperties.InstanceType |
entity.entity.asset.attribute.labels.value |
Der Wert von HostProperties.InstanceType aus dem Rohprotokoll wird als Wert eines Labels verwendet. Der Schlüssel für dieses Label ist auf host_properties_instance_type festgelegt. |
HostProperties.Sockets |
entity.entity.asset.attribute.labels.value |
Der Wert von HostProperties.Sockets wird in einen String umgewandelt und als Wert eines Labels verwendet. Der Schlüssel ist auf host_properties_sockets festgelegt. |
HostProperties.TotalVCpus |
entity.entity.asset.attribute.labels.value |
Der Wert von HostProperties.TotalVCpus (oder HostProperties.TotalVCPUs nach der Umbenennung) wird in einen String konvertiert und als Wert eines Labels verwendet. Der Schlüssel ist auf host_properties_total_v_cpus festgelegt. |
HostRecovery |
entity.entity.asset.attribute.labels.value |
Der Wert von HostRecovery (oder Recovery nach der Umbenennung) aus dem Rohprotokoll wird als Wert eines Labels verwendet. Der Schlüssel für dieses Label ist auf host_recovery festgelegt. |
HostReservationID |
entity.entity.asset.attribute.labels.value |
Der Wert von HostReservationID (oder ReservationID nach der Umbenennung) aus dem Rohprotokoll wird als Wert eines Labels verwendet. Der Schlüssel für dieses Label ist auf host_reservation_id festgelegt. |
MemberOfServiceLinkedResourceGroup |
entity.entity.asset.attribute.labels.value |
Der Wert von MemberOfServiceLinkedResourceGroup wird in einen String umgewandelt und als Wert eines Labels verwendet. Der Schlüssel ist auf member_of_service_linked_resource_group festgelegt. |
OwnerID |
entity.entity.asset.attribute.labels.value |
Der Wert von OwnerID aus dem Rohprotokoll wird als Wert eines Labels verwendet. Der Schlüssel für dieses Label ist auf owner_id festgelegt. |
ReleaseTime |
entity.entity.asset.attribute.labels.value |
Der Wert von ReleaseTime aus dem Rohprotokoll wird als Wert eines Labels verwendet. Der Schlüssel für dieses Label ist auf release_time festgelegt. |
State |
entity.entity.asset.attribute.labels.value |
Der Wert von State aus dem Rohprotokoll wird als Wert eines Labels verwendet. Der Schlüssel für dieses Label ist auf state festgelegt. |
TagSet |
entity.entity.asset.attribute.labels |
Das TagSet -Array wird durchlaufen und die Key und Value jedes Tags werden jeweils als Schlüssel und Wert eines Labels verwendet. Der Wert AMAZON_WEB_SERVICES wird diesem Feld vom Parser zugewiesen. collection_time aus dem Rohprotokoll wird dem Feld collected_timestamp zugeordnet. Der Wert ASSET wird diesem Feld vom Parser zugewiesen. Der Wert AWS EC2 HOSTS wird diesem Feld vom Parser zugewiesen. Der Wert AWS wird diesem Feld vom Parser zugewiesen. Beziehungen werden aus den Feldern Instances und OutpostArn abgeleitet, diese Felder selbst werden jedoch nicht direkt dem IDM-Objekt zugeordnet. Die Parserlogik erstellt anhand dieser Felder Beziehungsobjekte und fügt sie dem relations -Array hinzu. |
collection_time |
entity.metadata.collected_timestamp |
Die collection_time des Logs wird als collected_timestamp des Ereignisses verwendet. |
Änderungen
2024-01-31
- Unterstützung für neues Schema hinzugefügt.
2023-12-14
- Neu erstellter Parser.
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten