Mengumpulkan log MuleSoft Anypoint

Didukung di:

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

  1. Login ke Anypoint Platform.
  2. Buka Menu > Pengelolaan Akses.
  3. Di tabel Grup Bisnis, klik nama organisasi Anda.
  4. Salin Organization ID (misalnya, 0a12b3c4-d5e6-789f-1021-1a2b34cd5e6f).

Mengonfigurasi bucket AWS S3 dan IAM untuk Google SecOps

  1. Buat bucket Amazon S3 dengan mengikuti panduan pengguna ini: Membuat bucket.
  2. Simpan Name dan Region bucket untuk referensi di masa mendatang (misalnya, mulesoft-audit-logs).
  3. Buat Pengguna dengan mengikuti panduan pengguna ini: Membuat pengguna IAM.
  4. Pilih Pengguna yang dibuat.
  5. Pilih tab Kredensial keamanan.
  6. Klik Create Access Key di bagian Access Keys.
  7. Pilih Layanan pihak ketiga sebagai Kasus penggunaan.
  8. Klik Berikutnya.
  9. Opsional: Tambahkan tag deskripsi.
  10. Klik Create access key.
  11. Klik Download CSV file untuk menyimpan Access Key dan Secret Access Key untuk referensi di masa mendatang.
  12. Klik Selesai.
  13. Pilih tab Permissions.
  14. Klik Tambahkan izin di bagian Kebijakan izin.
  15. Pilih Tambahkan izin.
  16. Pilih Lampirkan kebijakan secara langsung.
  17. Telusuri dan pilih kebijakan AmazonS3FullAccess.
  18. Klik Berikutnya.
  19. Klik Add permissions.

Membuat Aplikasi Terhubung MuleSoft

  1. Login ke Anypoint Platform.
  2. Buka Pengelolaan Akses > Aplikasi Terhubung > Buat Aplikasi.
  3. 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.
  4. Klik Simpan, lalu salin Client ID dan Client Secret.

Mengonfigurasi kebijakan & peran IAM untuk upload S3

  1. 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/*"
        }
      ]
    }
    
  2. Buka konsol AWS > IAM > Policies > Create policy > tab JSON.

  3. Salin dan tempel kebijakan.

  4. Klik Berikutnya > Buat kebijakan.

  5. Buka IAM > Roles > Create role > AWS service > Lambda.

  6. Lampirkan kebijakan yang baru dibuat.

  7. 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
  1. 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()
    
  2. Buka Configuration > Environment variables > Edit > Add new environment variable.

  3. 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)

  1. Buka Configuration > Triggers > Add trigger > EventBridge Scheduler > Create rule.
  2. Berikan detail konfigurasi berikut:
    • Name: daily-mulesoft-audit export.
    • Pola jadwal: Ekspresi cron.
    • Ekspresi: 0 2 * * * (berjalan setiap hari pada pukul 02.00 UTC).
  3. Biarkan setelan lainnya dalam nilai default, lalu klik Create.

Konfigurasi feed di Google SecOps untuk menyerap log MuleSoft

  1. Buka Setelan SIEM > Feed.
  2. Klik Tambahkan baru.
  3. Di kolom Nama feed, masukkan nama untuk feed (misalnya, MuleSoft Logs).
  4. Pilih Amazon S3 V2 sebagai Jenis sumber.
  5. Pilih Mulesoft sebagai Jenis log.
  6. Klik Berikutnya.
  7. Tentukan nilai untuk parameter input berikut:

    • URI S3: URI bucket
      • s3://mulesoft-audit-logs/
        • Ganti mulesoft-audit-logs dengan nama bucket yang sebenarnya.
    • Opsi penghapusan sumber: pilih opsi penghapusan sesuai preferensi Anda.

    • Usia File Maksimum: Menyertakan file yang diubah dalam beberapa 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.

  8. Klik Berikutnya.

  9. Tinjau konfigurasi feed baru Anda di layar Selesaikan, lalu klik Kirim.

Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.