MuleSoft Anypoint-Logs erfassen
In diesem Dokument wird beschrieben, wie Sie Audit-Trail-Ereignisse aus MuleSoft Anypoint-Plattform-Logs mit AWS S3 in Google Security Operations aufnehmen.
Hinweise
Prüfen Sie, ob folgende Voraussetzungen erfüllt sind:
- Google SecOps-Instanz
- Privilegierter Zugriff auf MuleSoft
- Privilegierter Zugriff auf AWS
MuleSoft-Organisations-ID abrufen
- Melden Sie sich in der Anypoint Platform an.
- Klicken Sie auf das Dreistrich-Menü > Zugriffsverwaltung.
- Klicken Sie in der Tabelle Unternehmensgruppen auf den Namen Ihrer Organisation.
- Kopieren Sie die Organisations-ID (z. B.
0a12b3c4-d5e6-789f-1021-1a2b34cd5e6f
).
- Alternativ können Sie auch zu MuleSoft Business Groups gehen und die ID aus der URL kopieren.
AWS S3-Bucket und IAM für Google SecOps konfigurieren
- Erstellen Sie einen Amazon S3-Bucket. Folgen Sie dazu dieser Anleitung: Bucket erstellen.
- Speichern Sie den Namen und die Region des Buckets zur späteren Verwendung (z. B.
mulesoft-audit-logs
). - Erstellen Sie einen Nutzer gemäß dieser Anleitung: IAM-Nutzer erstellen.
- Wählen Sie den erstellten Nutzer aus.
- Wählen Sie den Tab Sicherheitsanmeldedaten aus.
- Klicken Sie im Abschnitt Zugriffsschlüssel auf Zugriffsschlüssel erstellen.
- Wählen Sie Drittanbieterdienst als Anwendungsfall aus.
- Klicken Sie auf Weiter.
- Optional: Fügen Sie ein Beschreibungstag hinzu.
- Klicken Sie auf Zugriffsschlüssel erstellen.
- Klicken Sie auf CSV-Datei herunterladen, um den Access Key (Zugriffsschlüssel) und den Secret Access Key (geheimer Zugriffsschlüssel) für die zukünftige 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.
Verbundene MuleSoft-App erstellen
- Melden Sie sich in der Anypoint Platform an.
- Klicken Sie auf Zugriffsverwaltung > Verknüpfte Apps > App erstellen.
- Geben Sie die folgenden Konfigurationsdetails an:
- App-Name: Geben Sie einen eindeutigen Namen ein, z. B.
Google SecOps export
. - Wählen Sie App acts on its own behalf (client credentials) (App handelt in eigenem Namen (Clientanmeldedaten)) aus.
- Klicken Sie auf Bereiche hinzufügen → Audit Log Viewer → Weiter.
- Wählen Sie alle Unternehmensgruppen aus, deren Protokolle Sie benötigen.
- Klicken Sie auf Weiter > Bereiche hinzufügen.
- App-Name: Geben Sie einen eindeutigen Namen ein, z. B.
- Klicken Sie auf Speichern und kopieren Sie die Client-ID und den Clientschlüssel.
IAM-Richtlinie und -Rolle für S3-Uploads konfigurieren
Richtlinien-JSON (ersetzen Sie
mulesoft-audit-logs
durch Ihren Bucket-Namen):{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPutAuditObjects", "Effect": "Allow", "Action": ["s3:PutObject"], "Resource": "arn:aws:s3:::mulesoft-audit-logs/*" } ] }
Rufen Sie die AWS-Konsole > IAM > Richtlinien > Richtlinie erstellen > Tab „JSON“ auf.
Kopieren Sie die Richtlinie und fügen Sie sie ein.
Klicken Sie auf Weiter > Richtlinie erstellen.
Rufen Sie IAM > Rollen > Rolle erstellen > AWS-Service > Lambda auf.
Hängen Sie die neu erstellte Richtlinie an.
Geben Sie der Rolle den Namen
WriteMulesoftToS3Role
und klicken Sie auf Rolle erstellen.
Lambda-Funktion erstellen
Einstellung | Wert |
---|---|
Name | mulesoft_audit_to_s3 |
Laufzeit | Python 3.13 |
Architektur | x86_64 |
Ausführungsrolle | > WriteMulesoftToS3Role verwenden |
Nachdem die Funktion erstellt wurde, öffnen Sie den Tab Code, löschen Sie den Stub und geben Sie den folgenden Code ein (
mulesoft_audit_to_s3.py
).#!/usr/bin/env python3 import os, json, gzip, io, uuid, datetime as dt, urllib.request, urllib.error, urllib.parse import boto3 ORG_ID = os.environ["MULE_ORG_ID"] CLIENT_ID = os.environ["CLIENT_ID"] CLIENT_SECRET = os.environ["CLIENT_SECRET"] S3_BUCKET = os.environ["S3_BUCKET_NAME"] TOKEN_URL = "https://anypoint.mulesoft.com/accounts/api/v2/oauth2/token" QUERY_URL = f"https://anypoint.mulesoft.com/audit/v2/organizations/{ORG_ID}/query" def http_post(url, data, headers=None): raw = json.dumps(data).encode() if headers else urllib.parse.urlencode(data).encode() req = urllib.request.Request(url, raw, headers or {}) try: with urllib.request.urlopen(req, timeout=30) as r: return json.loads(r.read()) except urllib.error.HTTPError as e: print("MuleSoft error body →", e.read().decode()) raise def get_token(): return http_post(TOKEN_URL, { "grant_type": "client_credentials", "client_id": CLIENT_ID, "client_secret": CLIENT_SECRET })["access_token"] def fetch_audit(token, start, end): headers = { "Authorization": f"Bearer {token}", "Content-Type": "application/json" } body = { "startDate": f"{start.isoformat(timespec='milliseconds')}Z", "endDate": f"{end.isoformat(timespec='milliseconds')}Z", "limit": 200, "offset": 0, "ascending": False } while True: data = http_post(QUERY_URL, body, headers) if not data.get("data"): break yield from data["data"] body["offset"] += body["limit"] def upload(events, ts): key = f"{ts:%Y/%m/%d}/mulesoft-audit-{uuid.uuid4()}.json.gz" buf = io.BytesIO() with gzip.GzipFile(fileobj=buf, mode="w") as gz: for ev in events: gz.write((json.dumps(ev) + "\n").encode()) buf.seek(0) boto3.client("s3").upload_fileobj(buf, S3_BUCKET, key) def lambda_handler(event=None, context=None): now = dt.datetime.utcnow().replace(microsecond=0) start = now - dt.timedelta(days=1) token = get_token() events = list(fetch_audit(token, start, now)) if events: upload(events, start) print(f"Uploaded {len(events)} events") else: print("No events in the last 24 h") # For local testing if __name__ == "__main__": lambda_handler()
Klicken Sie auf Konfiguration> Umgebungsvariablen> Bearbeiten> Neue Umgebungsvariable hinzufügen.
Geben Sie die folgenden Umgebungsvariablen ein und ersetzen Sie die Platzhalter durch Ihre Werte.
Schlüssel Beispielwert MULE_ORG_ID
your_org_id
CLIENT_ID
your_client_id
CLIENT_SECRET
your_client_secret
S3_BUCKET_NAME
mulesoft-audit-logs
Lambda-Funktion planen (EventBridge Scheduler)
- Gehen Sie zu Konfiguration > „Trigger“ > „Trigger hinzufügen“ > „EventBridge Scheduler“ > „Regel erstellen“.
- Geben Sie die folgenden Konfigurationsdetails an:
- Name:
daily-mulesoft-audit export
. - Zeitplanmuster: Cron-Ausdruck.
- Ausdruck:
0 2 * * *
(wird täglich um 02:00 Uhr UTC ausgeführt).
- Name:
- Lassen Sie die restlichen Einstellungen unverändert und klicken Sie auf Erstellen.
Feed in Google SecOps konfigurieren, um die MuleSoft-Logs aufzunehmen
- Rufen Sie die SIEM-Einstellungen > Feeds auf.
- Klicken Sie auf Neu hinzufügen.
- Geben Sie im Feld Feed name (Feedname) einen Namen für den Feed ein, z. B.
MuleSoft Logs
. - Wählen Sie Amazon S3 V2 als Quelltyp aus.
- Wählen Sie Mulesoft als Logtyp aus.
- Klicken Sie auf Weiter.
Geben Sie Werte für die folgenden Eingabeparameter an:
- S3-URI: Der Bucket-URI
s3://mulesoft-audit-logs/
- Ersetzen Sie
mulesoft-audit-logs
durch den tatsächlichen Namen des Buckets.
- Ersetzen Sie
Optionen zum Löschen der Quelle: Wählen Sie die gewünschte Option aus.
Maximales Dateialter: Dateien einschließen, die in den letzten Tagen geändert wurden. Der Standardwert ist 180 Tage.
Access Key ID (Zugriffsschlüssel-ID): Nutzerzugriffsschlüssel mit Zugriff auf den S3-Bucket.
Geheimer Zugriffsschlüssel: Geheimer 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.
- S3-URI: Der Bucket-URI
Klicken Sie auf Weiter.
Prüfen Sie die neue Feedkonfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten