Mengumpulkan log MuleSoft Anypoint
Dokumen ini menjelaskan cara menyerap peristiwa jejak audit dari log platform MuleSoft Anypoint ke Google Security Operations menggunakan AWS S3.
Sebelum memulai
Pastikan Anda memenuhi prasyarat berikut:
- Instance Google SecOps
- Akses istimewa ke MuleSoft
- Akses istimewa ke AWS
Mendapatkan ID Organisasi MuleSoft
- Login ke Anypoint Platform.
- Buka Menu > Pengelolaan Akses.
- Di tabel Grup Bisnis, klik nama organisasi Anda.
- Salin Organization ID (misalnya,
0a12b3c4-d5e6-789f-1021-1a2b34cd5e6f
).
- Atau, buka MuleSoft Business Groups dan salin ID dari URL.
Mengonfigurasi bucket AWS S3 dan IAM untuk Google SecOps
- Buat bucket Amazon S3 dengan mengikuti panduan pengguna ini: Membuat bucket.
- Simpan Name dan Region bucket untuk referensi di masa mendatang (misalnya,
mulesoft-audit-logs
). - Buat Pengguna dengan mengikuti panduan pengguna ini: Membuat pengguna IAM.
- Pilih Pengguna yang dibuat.
- Pilih tab Kredensial keamanan.
- Klik Create Access Key di bagian Access Keys.
- Pilih Layanan pihak ketiga sebagai Kasus penggunaan.
- Klik Berikutnya.
- Opsional: Tambahkan tag deskripsi.
- Klik Create access key.
- Klik Download CSV file untuk menyimpan Access Key dan Secret Access Key untuk referensi di masa mendatang.
- Klik Selesai.
- Pilih tab Permissions.
- Klik Tambahkan izin di bagian Kebijakan izin.
- Pilih Tambahkan izin.
- Pilih Lampirkan kebijakan secara langsung.
- Telusuri dan pilih kebijakan AmazonS3FullAccess.
- Klik Berikutnya.
- Klik Add permissions.
Membuat Aplikasi Terhubung MuleSoft
- Login ke Anypoint Platform.
- Buka Pengelolaan Akses > Aplikasi Terhubung > Buat Aplikasi.
- Berikan detail konfigurasi berikut:
- Nama aplikasi: Masukkan nama unik (misalnya,
Google SecOps export
). - Pilih Aplikasi bertindak atas namanya sendiri (kredensial klien).
- Klik Add scopes → Audit Log Viewer → Next.
- Pilih setiap Grup Bisnis yang lognya Anda butuhkan.
- Klik Berikutnya > Tambahkan cakupan.
- Nama aplikasi: Masukkan nama unik (misalnya,
- Klik Simpan, lalu salin Client ID dan Client Secret.
Mengonfigurasi kebijakan & peran IAM untuk upload S3
JSON Kebijakan (ganti
mulesoft-audit-logs
dengan nama bucket Anda):{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPutAuditObjects", "Effect": "Allow", "Action": ["s3:PutObject"], "Resource": "arn:aws:s3:::mulesoft-audit-logs/*" } ] }
Buka konsol AWS > IAM > Policies > Create policy > tab JSON.
Salin dan tempel kebijakan.
Klik Berikutnya > Buat kebijakan.
Buka IAM > Roles > Create role > AWS service > Lambda.
Lampirkan kebijakan yang baru dibuat.
Beri nama peran
WriteMulesoftToS3Role
, lalu klik Buat peran.
Buat fungsi Lambda
Setelan | Nilai |
---|---|
Nama | mulesoft_audit_to_s3 |
Runtime | Python 3.13 |
Arsitektur | x86_64 |
Peran eksekusi | Gunakan yang ada > WriteMulesoftToS3Role |
Setelah fungsi dibuat, buka tab Code, hapus stub, dan masukkan kode berikut (
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()
Buka Configuration > Environment variables > Edit > Add new environment variable.
Masukkan variabel lingkungan berikut yang disediakan, lalu ganti dengan nilai Anda.
Kunci Nilai contoh MULE_ORG_ID
your_org_id
CLIENT_ID
your_client_id
CLIENT_SECRET
your_client_secret
S3_BUCKET_NAME
mulesoft-audit-logs
Jadwalkan fungsi Lambda (EventBridge Scheduler)
- Buka Configuration > Triggers > Add trigger > EventBridge Scheduler > Create rule.
- Berikan detail konfigurasi berikut:
- Name:
daily-mulesoft-audit export
. - Pola jadwal: Ekspresi cron.
- Ekspresi:
0 2 * * *
(berjalan setiap hari pada pukul 02.00 UTC).
- Name:
- Biarkan setelan lainnya dalam nilai default, lalu klik Create.
Konfigurasi feed di Google SecOps untuk menyerap log MuleSoft
- Buka Setelan SIEM > Feed.
- Klik Tambahkan baru.
- Di kolom Nama feed, masukkan nama untuk feed (misalnya,
MuleSoft Logs
). - Pilih Amazon S3 V2 sebagai Jenis sumber.
- Pilih Mulesoft sebagai Jenis log.
- Klik Berikutnya.
Tentukan nilai untuk parameter input berikut:
- URI S3: URI bucket
s3://mulesoft-audit-logs/
- Ganti
mulesoft-audit-logs
dengan nama bucket yang sebenarnya.
- Ganti
Opsi penghapusan sumber: pilih opsi penghapusan sesuai preferensi Anda.
Usia File Maksimum: Menyertakan file yang diubah dalam jumlah hari terakhir. Defaultnya adalah 180 hari.
Access Key ID: Kunci akses pengguna dengan akses ke bucket s3.
Secret Access Key: Kunci rahasia pengguna dengan akses ke bucket s3.
Namespace aset: Namespace aset.
Label penyerapan: Label yang akan diterapkan ke peristiwa dari feed ini.
- URI S3: URI bucket
Klik Berikutnya.
Tinjau konfigurasi feed baru Anda di layar Selesaikan, lalu klik Kirim.
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.