AWS Elastic MapReduce-Protokolle erfassen

Unterstützt in:

In diesem Dokument wird beschrieben, wie Sie AWS Elastic MapReduce (EMR)-Logs in Google Security Operations aufnehmen. AWS EMR ist eine cloudbasierte Big-Data-Plattform, mit der große Datenmengen schnell verarbeitet werden. Wenn Sie EMR-Logs in Google SecOps einbinden, können Sie Clusteraktivitäten analysieren und potenzielle Sicherheitsbedrohungen erkennen.

Vorbereitung

  • Sie benötigen eine Google SecOps-Instanz.
  • Sie benötigen erhöhte Zugriffsrechte für AWS.

Amazon S3-Bucket konfigurieren

  1. Erstellen Sie einen Amazon S3-Bucket. Folgen Sie dazu dieser Anleitung: Bucket erstellen.
  2. Speichern Sie den Namen und die Region des Buckets für später.
  3. Erstellen Sie einen Nutzer gemäß der Anleitung IAM-Nutzer erstellen.
  4. Wählen Sie den erstellten Nutzer aus.
  5. Wählen Sie den Tab Sicherheitsanmeldedaten aus.
  6. Klicken Sie im Bereich Zugriffsschlüssel auf Zugriffsschlüssel erstellen.
  7. Wählen Sie als Anwendungsfall Drittanbieterdienst aus.
  8. Klicken Sie auf Weiter.
  9. Optional: Fügen Sie ein Beschreibungs-Tag hinzu.
  10. Klicken Sie auf Zugriffsschlüssel erstellen.
  11. Klicken Sie auf CSV-Datei herunterladen, um den Zugriffsschlüssel und den Secret Access Key zur späteren Verwendung zu speichern.
  12. Klicken Sie auf Fertig.
  13. Wählen Sie den Tab Berechtigungen aus.
  14. Klicken Sie im Bereich Berechtigungsrichtlinien auf Berechtigungen hinzufügen.
  15. Wählen Sie Berechtigungen hinzufügen aus.
  16. Wählen Sie Richtlinien direkt anhängen aus.
  17. Suchen Sie nach den Richtlinien AmazonS3FullAccess und CloudWatchLogsFullAccess und wählen Sie sie aus.
  18. Klicken Sie auf Weiter.
  19. Klicken Sie auf Berechtigungen hinzufügen.

AWS EMR zum Weiterleiten von Protokollen konfigurieren

  1. Melden Sie sich bei der AWS Management Console an.
  2. Geben Sie in die Suchleiste EMR ein und wählen Sie in der Liste der Dienste Amazon EMR aus.
  3. Klicken Sie auf Cluster.
  4. Suchen Sie den EMR-Cluster, für den Sie die Protokollierung aktivieren möchten, und wählen Sie ihn aus.
  5. Klicken Sie auf der Seite Clusterdetails auf Bearbeiten.
  6. Gehen Sie auf dem Bildschirm Cluster bearbeiten zum Bereich Protokollierung.
  7. Wählen Sie Aktivieren aus.
  8. Geben Sie den S3-Bucket an, in dem die Protokolle gespeichert werden sollen.
  9. Geben Sie den S3-URI im Format s3://your-bucket-name/ an. Dadurch werden alle EMR-Protokolle im Stammverzeichnis des Buckets gespeichert.
  10. Wählen Sie die folgenden Protokolltypen aus:
    • Step logs
    • Application logs
    • YARN logs
    • System logs
    • HDFS Logs (wenn Sie Hadoop verwenden)
  11. Klicken Sie auf Speichern.

Feed in Google SecOps für die Aufnahme von AWS EMR-Logs konfigurieren

  1. Gehen Sie zu SIEM-Einstellungen > Feeds.
  2. Klicken Sie auf Neu hinzufügen.
  3. Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B. AWS EMR-Protokolle.
  4. Wählen Sie als Quelltyp Amazon S3 aus.
  5. Wählen Sie AWS EMR als Logtyp aus.
  6. Klicken Sie auf Weiter.
  7. 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.
    • 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.

    • Zugriffsschlüssel-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.

  8. Klicken Sie auf Weiter.

  9. Prüfen Sie die neue Feedkonfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.

UDM-Zuordnungstabelle

Logfeld UDM-Zuordnung Logik
app_id additional.fields[].key Der Wert „APP“ wird über den Parser zugewiesen.
app_id additional.fields[].value.string_value Direkt aus dem Feld APP im Rohprotokoll zugeordnet.
app_name additional.fields[].key Der Wert „APPNAME“ wird über den Parser zugewiesen.
app_name additional.fields[].value.string_value Direkt aus dem Feld APPNAME im Rohprotokoll zugeordnet.
blockid additional.fields[].key Der Wert „blockid“ wird über den Parser zugewiesen.
blockid additional.fields[].value.string_value Direkt aus dem Feld blockid im Rohprotokoll zugeordnet.
bytes network.received_bytes Wird direkt aus dem Feld bytes im Rohprotokoll abgeleitet und in eine positive Ganzzahl umgewandelt.
cliID additional.fields[].key Der Wert „cliID“ wird über den Parser zugewiesen.
cliID additional.fields[].value.string_value Direkt aus dem Feld cliID im Rohprotokoll zugeordnet.
cmd target.process.command_line Direkt aus dem Feld cmd im Rohprotokoll zugeordnet.
comp_name additional.fields[].key Der Wert „COMP“ wird über den Parser zugewiesen.
comp_name additional.fields[].value.string_value Direkt aus dem Feld COMP im Rohprotokoll zugeordnet.
configuration_version additional.fields[].key Der Wert „configuration_version“ wird über den Parser zugewiesen.
configuration_version additional.fields[].value.string_value Wird direkt aus dem Feld configuration_version im Rohprotokoll zugeordnet und in einen String umgewandelt.
containerID additional.fields[].key Der Wert „containerID“ wird über den Parser zugewiesen.
containerID additional.fields[].value.string_value Direkt aus dem Feld CONTAINERID im Rohprotokoll zugeordnet.
description security_result.description Direkt aus dem Feld description im Rohprotokoll zugeordnet.
dfs.FSNamesystem.* additional.fields[].key Der Schlüssel wird generiert, indem „dfs.FSNamesystem.“ mit dem Schlüssel aus den JSON-Daten verknüpft wird.
dfs.FSNamesystem.* additional.fields[].value.string_value Der Wert wird direkt aus dem entsprechenden Wert im JSON-Objekt dfs.FSNamesystem abgeleitet und in einen String konvertiert.
duration additional.fields[].key Der Wert „duration“ wird über den Parser zugewiesen.
duration additional.fields[].value.string_value Direkt aus dem Feld duration im Rohprotokoll zugeordnet.
duration network.session_duration.seconds Wird direkt aus dem Feld duration im Rohprotokoll abgeleitet und in eine Ganzzahl umgewandelt.
environment additional.fields[].key Der Wert „environment“ wird über den Parser zugewiesen.
environment additional.fields[].value.string_value Direkt aus dem Feld environment im Rohprotokoll zugeordnet. Mithilfe von Grok und Stringmanipulation aus dem Feld ip_port extrahiert. Wird mithilfe von Grok und Stringmanipulation aus dem Feld ip_port extrahiert und in eine Ganzzahl umgewandelt.
event_type metadata.event_type Wird anhand der Parserlogik basierend auf dem Vorhandensein von principal- und target-Informationen bestimmt. Kann NETWORK_CONNECTION, USER_RESOURCE_ACCESS, STATUS_UPDATE oder GENERIC_EVENT sein.
file_path target.file.full_path Direkt aus dem Feld file_path im Rohprotokoll zugeordnet.
host principal.hostname Direkt aus dem Feld host im Rohprotokoll zugeordnet.
host target.hostname Direkt aus dem Feld host im Rohprotokoll zugeordnet.
host_ip principal.ip Direkt aus dem Feld host_ip im Rohprotokoll zugeordnet.
host_port principal.port Wird direkt aus dem Feld host_port im Rohprotokoll abgeleitet und in eine Ganzzahl umgewandelt.
http_url target.url Direkt aus dem Feld http_url im Rohprotokoll zugeordnet.
index additional.fields[].key Der Wert „index“ wird über den Parser zugewiesen.
index additional.fields[].value.string_value Direkt aus dem Feld index im Rohprotokoll zugeordnet.
kind metadata.product_event_type Direkt aus dem Feld kind im Rohprotokoll zugeordnet. Der Wert „AWS_EMR“ wird über den Parser zugewiesen. Der Wert „AWS EMR“ wird über den Parser zugewiesen. Der Wert „AMAZON“ wird über den Parser zugewiesen.
offset additional.fields[].key Der Wert „offset“ wird über den Parser zugewiesen.
offset additional.fields[].value.string_value Direkt aus dem Feld offset im Rohprotokoll zugeordnet.
op metadata.product_event_type Direkt aus dem Feld op oder OPERATION im Rohprotokoll zugeordnet.
proto network.application_protocol Mit Grok aus dem Feld http_url extrahiert und in Großbuchstaben umgewandelt.
puppet_version additional.fields[].key Der Wert „puppet_version“ wird über den Parser zugewiesen.
puppet_version additional.fields[].value.string_value Direkt aus dem Feld puppet_version im Rohprotokoll zugeordnet.
queue_name additional.fields[].key Der Wert „queue_name“ wird über den Parser zugewiesen.
queue_name additional.fields[].value.string_value Direkt aus dem Feld queue_name im Rohprotokoll zugeordnet.
report_format additional.fields[].key Der Wert „report_format“ wird über den Parser zugewiesen.
report_format additional.fields[].value.string_value Wird direkt aus dem Feld report_format im Rohprotokoll zugeordnet und in einen String umgewandelt.
resource additional.fields[].key Der Wert „resource“ wird über den Parser zugewiesen.
resource additional.fields[].value.string_value Direkt aus dem Feld resource im Rohprotokoll zugeordnet.
result security_result.action_details Direkt aus dem Feld RESULT im Rohprotokoll zugeordnet.
security_id additional.fields[].key Der Wert „security_id“ wird über den Parser zugewiesen.
security_id additional.fields[].value.string_value Direkt aus dem Feld security_id im Rohprotokoll zugeordnet.
severity security_result.severity Aus dem Feld severity im Rohprotokoll zugeordnet. INFO ist INFORMATIONAL zugeordnet, WARN ist MEDIUM zugeordnet.
srvID additional.fields[].key Der Wert „srvID“ wird über den Parser zugewiesen.
srvID additional.fields[].value.string_value Direkt aus dem Feld srvID im Rohprotokoll zugeordnet.
status additional.fields[].key Der Wert „status“ wird über den Parser zugewiesen.
status additional.fields[].value.string_value Direkt aus dem Feld status im Rohprotokoll zugeordnet.
summary security_result.summary Direkt aus dem Feld summary im Rohprotokoll zugeordnet.
target_app target.application Direkt aus dem Feld TARGET im Rohprotokoll zugeordnet.
target_ip target.ip Direkt aus dem Feld target_ip oder IP im Rohprotokoll zugeordnet.
target_port target.port Wird direkt aus dem Feld target_port im Rohprotokoll abgeleitet und in eine Ganzzahl umgewandelt.
timestamp metadata.event_timestamp Wird direkt aus dem Feld timestamp im Rohprotokoll zugeordnet und als ISO 8601-Zeitstempel geparst.
timestamp event.timestamp Wird direkt aus dem Feld timestamp im Rohprotokoll zugeordnet und als ISO 8601-Zeitstempel geparst.
trade_date additional.fields[].key Der Wert „trade_date“ wird über den Parser zugewiesen.
trade_date additional.fields[].value.string_value Direkt aus dem Feld trade_date im Rohprotokoll zugeordnet.
transaction_uuid additional.fields[].key Der Wert „transaction_uuid“ wird über den Parser zugewiesen.
transaction_uuid additional.fields[].value.string_value Direkt aus dem Feld transaction_uuid im Rohprotokoll zugeordnet.
type additional.fields[].key Der Wert „type“ wird über den Parser zugewiesen.
type additional.fields[].value.string_value Direkt aus dem Feld type im Rohprotokoll zugeordnet.
user target.user.userid Direkt aus dem Feld USER oder ugi im Rohprotokoll zugeordnet.

Änderungen

2023-12-19

  • Fehlerkorrektur: Die unzuverlässigen Ergebnisse für das Grok-Muster wurden behoben.

2023-10-30

  • Neu erstellter Parser.

Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten