Mengumpulkan log audit Aware

Didukung di:

Dokumen ini menjelaskan cara menyerap log audit Aware ke Google Security Operations menggunakan Amazon S3.

Sebelum memulai

Pastikan Anda memenuhi prasyarat berikut:

  • Instance Google SecOps
  • Akses istimewa ke tenant Aware
  • Akses istimewa ke AWS (S3, IAM, Lambda, EventBridge)

Mengumpulkan prasyarat Aware (ID, kunci API, ID organisasi, token)

  1. Login ke Konsol Admin Aware.
  2. Buka System Settings > Integrations > API Tokens.
  3. Klik + API Token dan berikan izin Audit Logs Read-only.
  4. Salin dan simpan detail berikut di lokasi yang aman:
    • Token API
    • URL Dasar API: https://api.aware.work/external/system/auditlogs/v1

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, aware-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 digunakan nanti.
  12. Klik Selesai.
  13. Pilih tab Izin.
  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.

Mengonfigurasi kebijakan dan peran IAM untuk upload S3

  1. Di konsol AWS, buka IAM > Policies > Create policy > JSON tab.
  2. Masukkan kebijakan berikut:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "AllowPutObjects",
          "Effect": "Allow",
          "Action": "s3:PutObject",
          "Resource": "arn:aws:s3:::aware-audit-logs/*"
        },
        {
          "Sid": "AllowGetStateObject",
          "Effect": "Allow",
          "Action": "s3:GetObject",
          "Resource": "arn:aws:s3:::aware-audit-logs/aware/state.json"
        }
      ]
    }
    
    • Ganti aware-audit-logs jika Anda memasukkan nama bucket yang berbeda.
  3. Klik Berikutnya > Buat kebijakan.

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

  5. Lampirkan kebijakan yang baru dibuat.

  6. Beri nama peran AwareAuditLambdaRole, lalu klik Buat peran.

Buat fungsi Lambda

  1. Di Konsol AWS, buka Lambda > Functions > Create function.
  2. Klik Buat dari awal.
  3. Berikan detail konfigurasi berikut:
Setelan Nilai
Nama aware-audit-poller
Runtime Python 3.13
Arsitektur x86_64
Peran eksekusi AwareAuditLambdaRole
  1. Setelah fungsi dibuat, buka tab Code, hapus stub, dan masukkan kode berikut (aware-audit-poller.py):

    import boto3, gzip, io, json, os, time, urllib.parse
    import urllib.request
    from datetime import datetime, timedelta, timezone
    from botocore.exceptions import ClientError
    
    AWARE_ENDPOINT = "https://api.aware.work/external/system/auditlogs/v1"
    API_TOKEN = os.environ["AWARE_API_TOKEN"]
    BUCKET = os.environ["S3_BUCKET"]
    PREFIX = os.environ.get("S3_PREFIX", "aware/audit/")
    STATE_KEY = os.environ.get("STATE_KEY", "aware/state.json")
    MAX_PER_PAGE = int(os.environ.get("MAX_PER_PAGE", "500"))
    
    s3 = boto3.client("s3")
    
    def _load_state():
        try:
            obj = s3.get_object(Bucket=BUCKET, Key=STATE_KEY)
            return json.loads(obj["Body"].read().decode("utf-8"))
        except ClientError as e:
            if e.response.get("Error", {}).get("Code") == "NoSuchKey":
                return {}
            raise
    
    def _save_state(state):
        s3.put_object(Bucket=BUCKET, Key=STATE_KEY, Body=json.dumps(state).encode("utf-8"))
    
    def handler(event, context):
        tz_utc = timezone.utc
        now = datetime.now(tz=tz_utc)
    
        state = _load_state()
        start_date = (
            datetime.fromisoformat(state["last_date"]).date() if "last_date" in state
            else (now - timedelta(days=1)).date()
        )
        end_date = now.date()
    
        total = 0
        day = start_date
        while day <= end_date:
            day_str = day.strftime("%Y-%m-%d")
            params = {"filter": f"startDate:{day_str},endDate:{day_str}", "limit": str(MAX_PER_PAGE)}
            offset = 1
    
            out = io.BytesIO()
            gz = gzip.GzipFile(filename="aware_audit.jsonl", mode="wb", fileobj=out)
            wrote_any = False
    
            while True:
                q = urllib.parse.urlencode({**params, "offset": str(offset)})
                req = urllib.request.Request(f"{AWARE_ENDPOINT}?{q}")
                req.add_header("X-Aware-Api-Key", API_TOKEN)
                with urllib.request.urlopen(req, timeout=30) as resp:
                    payload = json.loads(resp.read().decode("utf-8"))
                items = (payload.get("value") or {}).get("auditLogData") or []
                if not items:
                    break
                for item in items:
                    gz.write((json.dumps(item, separators=(",", ":")) + "n").encode("utf-8"))
                    total += 1
                    wrote_any = True
                offset += 1
                time.sleep(0.2)
    
            gz.close()
            if wrote_any:
                key = f"{PREFIX}{day.strftime('%Y/%m/%d')}/aware_audit_{now.strftime('%Y%m%d_%H%M%S')}.jsonl.gz"
                s3.put_object(
                    Bucket=BUCKET,
                    Key=key,
                    Body=out.getvalue(),
                    ContentType="application/json",
                    ContentEncoding="gzip",
                )
    
            _save_state({"last_date": day.isoformat()})
            day += timedelta(days=1)
    
        return {"status": "ok", "written": total}
    
  2. Buka Configuration > Environment variables > Edit > Add new environment variable.

  3. Masukkan variabel lingkungan berikut, ganti dengan nilai Anda:

    Kunci Nilai contoh
    S3_BUCKET aware-audit-logs
    S3_PREFIX aware/audit/
    STATE_KEY aware/state.json
    AWARE_API_TOKEN <your-aware-api-token>
    MAX_PER_PAGE 500
  4. Setelah fungsi dibuat, tetap buka halamannya (atau buka Lambda > Functions > your-function**).

  5. Pilih tab Configuration

  6. Di panel General configuration, klik Edit.

  7. Ubah Waktu tunggu menjadi 5 menit (300 detik), lalu klik Simpan.

Membuat jadwal EventBridge

  1. Buka Amazon EventBridge > Scheduler > Create schedule.
  2. Berikan detail konfigurasi berikut:
    • Jadwal berulang: Tarif (1 hour).
    • Target: Fungsi Lambda Anda aware-audit-poller.
    • Name: aware-audit-poller-1h.
  3. Klik Buat jadwal.

Opsional: Buat pengguna & kunci IAM hanya baca untuk Google SecOps

  1. Di Konsol AWS, buka IAM > Pengguna > Tambahkan pengguna.
  2. Klik Add users.
  3. Berikan detail konfigurasi berikut:
    • Pengguna: secops-reader.
    • Jenis akses: Kunci akses — Akses terprogram.
  4. Klik Buat pengguna.
  5. Lampirkan kebijakan baca minimal (kustom): Pengguna > secops-reader > Izin > Tambahkan izin > Lampirkan kebijakan secara langsung > Buat kebijakan.
  6. Di editor JSON, masukkan kebijakan berikut:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": ["s3:GetObject"],
          "Resource": "arn:aws:s3:::aware-audit-logs/*"
        },
        {
          "Effect": "Allow",
          "Action": ["s3:ListBucket"],
          "Resource": "arn:aws:s3:::aware-audit-logs"
        }
      ]
    }
    
  7. Tetapkan nama ke secops-reader-policy.

  8. Buka Buat kebijakan > cari/pilih > Berikutnya > Tambahkan izin.

  9. Buka Kredensial keamanan > Kunci akses > Buat kunci akses.

  10. Download CSV (nilai ini dimasukkan ke dalam feed).

Mengonfigurasi feed di Google SecOps untuk menyerap log Audit Aware

  1. Buka Setelan SIEM > Feed.
  2. Klik + Tambahkan Feed Baru.
  3. Di kolom Nama feed, masukkan nama untuk feed (misalnya, Aware Audit logs).
  4. Pilih Amazon S3 V2 sebagai Jenis sumber.
  5. Pilih Aware Audit sebagai Log type.
  6. Klik Berikutnya.
  7. Tentukan nilai untuk parameter input berikut:
    • URI S3: s3://aware-audit-logs/aware/audit/
    • Opsi penghapusan sumber: Pilih opsi penghapusan sesuai preferensi Anda.
    • Usia File Maksimum: Menyertakan file yang diubah dalam jumlah hari terakhir. Defaultnya adalah 180 hari.
    • ID Kunci Akses: Kunci akses pengguna dengan akses ke bucket S3.
    • Kunci Akses Rahasia: Kunci rahasia pengguna dengan akses ke bucket S3.
    • Namespace aset: Namespace aset.
    • Label penyerapan: Label yang 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.