Mengumpulkan log Akamai WAF
Dokumen ini menjelaskan cara mengekspor dan menyerap log Akamai WAF ke Google Security Operations menggunakan Google Cloud Storage atau AWS S3.
Parser menangani log, mendukung format syslog dan CEF. Parser ini mengekstrak
kolom seperti alamat IP, URL, metode HTTP, kode respons, agen pengguna,
dan informasi aturan keamanan, lalu memetakannya ke Model Data Terpadu (UDM) untuk
representasi yang konsisten. Parser juga menangani kolom Akamai tertentu seperti
attackData
dan clientReputation
, melakukan transformasi data yang diperlukan dan memperkaya output UDM.
Sebelum memulai
Pastikan Anda memenuhi prasyarat berikut:
- Instance Google SecOps
- Akses istimewa ke Google Cloud atau AWS
- Akses istimewa ke Akamai
Mengekspor dan menyerap log Akamai WAF dari Cloud Storage
Bagian ini menguraikan langkah awal dalam proses: menyiapkan penyimpanan yang diperlukan untuk log WAF Akamai Anda.
Membuat Google Cloud Bucket Storage
- Login ke konsol Google Cloud .
Buka halaman Cloud Storage Buckets.
Klik Buat.
Di halaman Buat bucket, masukkan informasi bucket Anda. Setelah setiap langkah berikut, klik Lanjutkan untuk melanjutkan ke langkah berikutnya:
Di bagian Mulai, lakukan tindakan berikut:
- Masukkan nama unik yang memenuhi persyaratan nama bucket (misalnya,
akamai-waf-logs
). - Untuk mengaktifkan namespace hierarkis, klik panah peluas untuk meluaskan bagian Optimalkan untuk beban kerja berorientasi file dan intensif data, lalu pilih Aktifkan namespace Hierarkis di bucket ini.
- Untuk menambahkan label bucket, klik panah peluas untuk meluaskan bagian Label.
- Klik Tambahkan label, lalu tentukan kunci dan nilai untuk label Anda.
- Masukkan nama unik yang memenuhi persyaratan nama bucket (misalnya,
Di bagian Pilih lokasi untuk menyimpan data Anda, lakukan hal berikut:
- Pilih Jenis lokasi.
- Gunakan menu drop-down jenis lokasi untuk memilih Lokasi tempat data objek dalam bucket Anda akan disimpan secara permanen.
- Untuk menyiapkan replikasi lintas bucket, luaskan bagian Siapkan replikasi lintas bucket.
Di bagian Pilih kelas penyimpanan untuk data Anda, pilih kelas penyimpanan default untuk bucket, atau pilih Autoclass untuk pengelolaan kelas penyimpanan otomatis untuk data bucket Anda.
Di bagian Pilih cara mengontrol akses ke objek, pilih tidak untuk menerapkan pencegahan akses publik, dan pilih model kontrol akses untuk objek bucket Anda.
Di bagian Pilih cara melindungi data objek, lakukan tindakan berikut:
- Pilih salah satu opsi di bagian Perlindungan data yang ingin Anda tetapkan untuk bucket Anda.
- Untuk memilih cara mengenkripsi data objek Anda, klik panah peluas berlabel Enkripsi data, lalu pilih Metode enkripsi data.
Klik Buat.
Mengonfigurasi Izin untuk Cloud Storage
Buka halaman Buat akun layanan.
Pilih project Google Cloud.
Masukkan nama akun layanan untuk ditampilkan di konsol Google Cloud .
Klik Buat dan lanjutkan.
Berikan roles/storage.admin pada bucket.
Klik Selesai untuk menyelesaikan pembuatan akun layanan.
Buat dan Download File Kunci Akun Layanan Google Cloud
Buka halaman Akun layanan.
Pilih project Google Cloud.
Klik alamat email akun layanan yang baru dibuat.
Klik tab Kunci.
Klik menu Tambahkan kunci, lalu pilih Buat kunci baru.
Pilih JSON sebagai Jenis kunci, lalu klik Buat.
- Mengklik Buat akan mendownload file kunci akun layanan. Setelah mendownload file kunci, Anda tidak dapat mendownloadnya lagi.
- Kunci yang didownload memiliki format berikut, dengan
PRIVATE_KEY
adalah bagian pribadi dari pasangan kunci publik-pribadi.
Mengonfigurasi Akamai WAF untuk mengirim log ke Cloud Storage
- Login ke Akamai Control Center.
- Buka bagian Keamanan.
- Pilih Log.
- Konfigurasi Pengiriman Log baru:
- Sumber Log: Pilih konfigurasi WAF Anda.
- Tujuan: Pilih Google Cloud Storage.
- Nama tampilan: Masukkan deskripsi nama unik.
- Bucket: Tentukan nama bucket Cloud Storage yang Anda buat (misalnya,
gs://akamai-waf-logs
). - Project ID: Masukkan ID unik project Google Cloud Anda.
- Nama Akun Layanan: Masukkan nama akun layanan yang Anda buat sebelumnya.
- Private Key: Masukkan nilai private_key dari kunci JSON yang Anda buat dan download sebelumnya. (Anda harus memasukkan kunci pribadi dalam format PEM dengan simbol jeda baris (\n), misalnya
-----BEGIN PRIVATE KEY-----\nprivate_key\n-----END PRIVATE KEY-----\n
) - Format Log: Pilih format log yang Anda inginkan (misalnya, JSON).
- Frekuensi Push: Pilih frekuensi yang Anda inginkan untuk pengiriman log (misalnya,
every 60 seconds
).
Klik Validasi & Simpan untuk memvalidasi koneksi ke tujuan, dan menyimpan detail yang Anda berikan.
Klik Berikutnya untuk membuka tab Ringkasan.
Menyiapkan feed
Ada dua titik entri berbeda untuk menyiapkan feed di platform Google SecOps:
- Setelan SIEM > Feed
- Hub Konten > Paket Konten
Siapkan feed dari Setelan SIEM > Feed menggunakan Google Cloud Penyimpanan
Untuk mengonfigurasi feed, ikuti langkah-langkah berikut:
- Buka Setelan SIEM > Feed.
- Klik Tambahkan Feed Baru.
- Di halaman berikutnya, klik Konfigurasi satu feed.
- Di kolom Feed name, masukkan nama untuk feed (misalnya, Akamai WAF Logs).
- Pilih Google Cloud Storage sebagai Jenis sumber.
- Pilih Akamai WAF sebagai Jenis log.
- Klik Dapatkan Akun Layanan sebagai Akun Layanan Chronicle.
- Klik Berikutnya.
Tentukan nilai untuk parameter input berikut:
- URI Bucket Penyimpanan: Google Cloud URL bucket penyimpanan (misalnya,
gs://akamai-waf-logs
). - URI Adalah: Pilih Direktori yang menyertakan subdirektori.
- Opsi penghapusan sumber: Pilih opsi penghapusan sesuai preferensi Anda.
- URI Bucket Penyimpanan: Google Cloud URL bucket penyimpanan (misalnya,
Klik Berikutnya.
Tinjau konfigurasi feed baru Anda di layar Selesaikan, lalu klik Kirim.
Menyiapkan feed dari Hub Konten
Tentukan nilai untuk kolom berikut:
- URI Bucket Penyimpanan: Google Cloud URL bucket penyimpanan (misalnya,
gs://akamai-waf-logs
). - URI Adalah: Pilih Direktori yang menyertakan subdirektori.
Opsi penghapusan sumber: Pilih opsi penghapusan sesuai preferensi Anda.
Opsi lanjutan
- Nama Feed: Nilai yang telah diisi otomatis yang mengidentifikasi feed.
- Jenis Sumber: Metode yang digunakan untuk mengumpulkan log ke Google SecOps.
- Namespace Aset: Namespace yang terkait dengan feed.
- Label Penyerapan: Label yang diterapkan ke semua peristiwa dari feed ini.
Mengekspor dan menyerap log Akamai WAF dari AWS S3
Bagian ini menjelaskan langkah-langkah awal untuk menyiapkan bucket Amazon S3 Anda guna menerima dan menyimpan log Akamai WAF.
Mengonfigurasi bucket Amazon S3
- Buat bucket Amazon S3 dengan mengikuti panduan pengguna ini: Membuat bucket.
- Simpan Nama dan Region bucket untuk referensi di masa mendatang.
- 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.
- Cari kebijakan AmazonS3FullAccess.
- Pilih kebijakan.
- Klik Berikutnya.
- Klik Tambahkan izin.
Mengonfigurasi Akamai WAF untuk mengirim log ke Amazon S3
- Login ke Akamai Control Center.
- Buka bagian Keamanan.
- Pilih Log.
Konfigurasi Pengiriman Log baru:
- Sumber Log: Pilih konfigurasi WAF Anda.
- Tujuan: Pilih Amazon S3.
- Bucket S3: Tentukan nama bucket S3 yang Anda buat.
- Region: Pilih region AWS tempat bucket S3 Anda berada.
- ID Kunci Akses dan Kunci Akses Rahasia: Berikan kredensial yang Anda buat.
- Format Log: Pilih format log yang Anda inginkan (misalnya, JSON).
Frekuensi Pengiriman: Pilih frekuensi yang Anda inginkan untuk pengiriman log (misalnya, setiap 5 menit).
Verifikasi pengiriman log:
- Setelah mengonfigurasi LDS, pantau bucket S3 untuk file log yang masuk.
Menyiapkan feed dari Setelan SIEM > Feed menggunakan AWS S3
Untuk mengonfigurasi feed, ikuti langkah-langkah berikut:
- Buka Setelan SIEM > Feed.
- Klik Tambahkan Feed Baru.
- Di halaman berikutnya, klik Konfigurasi satu feed.
- Di kolom Feed name, masukkan nama untuk feed (misalnya, Akamai WAF Logs).
- Pilih Amazon S3 sebagai Jenis sumber.
- Pilih Akamai WAF sebagai Jenis log.
- Klik Berikutnya.
Tentukan nilai untuk parameter input berikut:
- Region: region tempat bucket Amazon S3 berada.
- URI S3: URI bucket.
s3:/BUCKET_NAME
Ganti kode berikut:BUCKET_NAME
: nama bucket.
- URI adalah: pilih JENIS URI sesuai dengan konfigurasi aliran log: File tunggal | Direktori | Direktori yang mencakup subdirektori.
- Opsi penghapusan sumber: pilih opsi penghapusan sesuai preferensi Anda.
- Access Key ID: Kunci akses pengguna dengan akses ke bucket s3.
- Secret Access Key: kunci rahasia Pengguna dengan akses ke bucket s3.
Klik Berikutnya.
Tinjau konfigurasi feed baru Anda di layar Selesaikan, lalu klik Kirim.
Tabel pemetaan UDM
Kolom Log (Menaik) | Pemetaan UDM | Logika |
---|---|---|
attackData.clientIP |
principal.ip , principal.asset.ip |
Alamat IP klien yang memulai permintaan. Diekstrak dari kolom attackData.clientIP di log akamai_siem. |
attackData.configId |
metadata.product_log_id |
ID konfigurasi keamanan. Diekstrak dari kolom attackData.configId di log akamai_siem. Juga ditambahkan sebagai detection_field dalam objek security_result. |
attackData.policyId |
T/A | Digunakan dalam logika parser untuk mengisi security_result.summary dengan nilai PolicyId:[value] . |
attackData.ruleActions |
security_result.action , security_result.action_details |
Tindakan yang diambil berdasarkan aturan yang dipicu. Diekstrak dari kolom attackData.ruleActions di log akamai_siem. "deny" dipetakan ke BLOCK, nilai lainnya ("alert", "monitor", "allow", "tarpit") dipetakan ke ALLOW. Nilai asli juga disimpan di action_details . |
attackData.ruleData |
security_result.detection_fields |
Data yang terkait dengan aturan yang dipicu. Diekstrak dari kolom attackData.ruleData di log akamai_siem. Ditambahkan ke security_result.detection_fields dengan kunci "RuleData". |
attackData.ruleMessages |
security_result.threat_name |
Pesan yang terkait dengan aturan yang dipicu. Diekstrak dari kolom attackData.ruleMessages di log akamai_siem. |
attackData.ruleSelectors |
security_result.detection_fields |
Pemilih yang terkait dengan aturan yang dipicu. Diekstrak dari kolom attackData.ruleSelectors di log akamai_siem. Ditambahkan ke security_result.detection_fields dengan kunci "RuleSelector". |
attackData.ruleTags |
security_result.category_details |
Tag yang terkait dengan aturan yang dipicu. Diekstrak dari kolom attackData.ruleTags di log akamai_siem. |
attackData.ruleVersions |
security_result.detection_fields |
Versi aturan yang dipicu. Diekstrak dari kolom attackData.ruleVersions di log akamai_siem. Ditambahkan ke security_result.detection_fields dengan kunci "Rule Version". |
clientReputation |
principal.labels |
Informasi reputasi klien. Diekstrak dari kolom clientReputation di log akamai_siem. Ditambahkan sebagai label ke prinsipal dengan kunci "reputation". |
cliIP , cli_ip , principal_ip |
principal.ip , principal.asset.ip |
Alamat IP klien. Diekstrak dari cliIP atau cli_ip atau principal_ip , bergantung pada format log. |
cp |
additional.fields |
Kode CP. Diekstrak dari kolom cp . Ditambahkan ke additional.fields dengan kunci "cp". |
eventId |
metadata.product_log_id |
ID Acara. Diekstrak dari kolom eventId . |
eventTime , log_date |
metadata.event_timestamp |
Stempel waktu peristiwa. Diekstrak dari eventTime atau diuraikan dari log_date , bergantung pada format log. |
eventType.eventDefinition.eventDefinitionId |
target.resource.product_object_id |
ID definisi peristiwa. Diekstrak dari eventType.eventDefinition.eventDefinitionId . |
eventType.eventDefinition.eventDescription |
metadata.description |
Deskripsi acara. Diekstrak dari eventType.eventDefinition.eventDescription . |
eventType.eventDefinition.eventName |
metadata.product_event_type |
Nama acara. Diekstrak dari eventType.eventDefinition.eventName . |
eventType.eventTypeId |
additional.fields |
ID jenis peristiwa. Diekstrak dari eventType.eventTypeId . Ditambahkan ke additional.fields dengan kunci "eventTypeId". |
eventType.eventTypeName |
additional.fields |
Nama jenis acara. Diekstrak dari eventType.eventTypeName . Ditambahkan ke additional.fields dengan kunci "eventTypeName". |
format |
T/A | Digunakan oleh parser untuk menentukan format log. |
geo.asn |
principal.location.name |
Autonomous System Number (ASN). Diekstrak dari geo.asn atau AkamaiSiemASN , bergantung pada format log. Nilai diawali dengan "ASN ". |
geo.city |
principal.location.city |
Kota. Diekstrak dari geo.city atau AkamaiSiemCity , bergantung pada format log. |
geo.country |
principal.location.country_or_region |
Negara. Diekstrak dari geo.country atau AkamaiSiemContinent , bergantung pada format log. |
httpMessage.bytes |
network.sent_bytes |
Byte yang dikirim dalam pesan HTTP. Diekstrak dari httpMessage.bytes . |
httpMessage.host |
target.hostname , target.asset.hostname |
Nama host. Diekstrak dari httpMessage.host atau reqHost , bergantung pada format log. |
httpMessage.method |
network.http.method |
Metode HTTP. Diekstrak dari httpMessage.method atau network_http_method atau reqMethod , bergantung pada format log. Dikonversi menjadi huruf besar. |
httpMessage.path |
target.url |
Jalur permintaan. Diekstrak dari httpMessage.path atau target_url atau reqPath , bergantung pada format log. Jika ada, httpMessage.query ditambahkan ke jalur dengan pemisah "?". |
httpMessage.port |
target.port |
Port. Diekstrak dari httpMessage.port atau reqPort , bergantung pada format log. |
httpMessage.protocol |
T/A | Digunakan oleh parser untuk menentukan protokol. |
httpMessage.query |
T/A | Digunakan dalam logika parser untuk ditambahkan ke httpMessage.path jika ada. |
httpMessage.requestId |
network.session_id |
ID Permintaan. Diekstrak dari httpMessage.requestId atau reqId , bergantung pada format log. |
httpMessage.requestHeaders , AkamaiSiemRequestHeaders |
additional.fields |
Header permintaan. Diekstrak dari httpMessage.requestHeaders atau AkamaiSiemRequestHeaders , bergantung pada format log. Ditambahkan ke additional.fields dengan kunci "AkamaiSiemRequestHeaders". |
httpMessage.responseHeaders , AkamaiSiemResponseHeaders |
additional.fields |
Header respons. Diekstrak dari httpMessage.responseHeaders atau AkamaiSiemResponseHeaders , bergantung pada format log. Ditambahkan ke additional.fields dengan kunci "AkamaiSiemResponseHeaders". |
httpMessage.status , AkamaiSiemResponseStatus , network_http_response_code , statusCode |
network.http.response_code |
Kode respons HTTP. Diekstrak dari httpMessage.status atau AkamaiSiemResponseStatus atau network_http_response_code atau statusCode , bergantung pada format log. |
httpMessage.tls , AkamaiSiemTLSVersion , tlsVersion |
network.tls.version |
Versi TLS. Diekstrak dari httpMessage.tls atau AkamaiSiemTLSVersion atau tlsVersion , bergantung pada format log. |
httpMessage.useragent , network_http_user_agent , UA , useragent |
network.http.user_agent |
Agen pengguna. Diekstrak dari httpMessage.useragent atau network_http_user_agent atau UA atau useragent , bergantung pada format log. |
log_description |
metadata.description |
Deskripsi log. Diekstrak dari log_description . |
log_rule |
security_result.rule_name |
Aturan log. Diekstrak dari log_rule . |
message |
T/A | Pesan log mentah. Digunakan oleh parser untuk berbagai ekstraksi. |
network_http_referral_url |
network.http.referral_url |
URL rujukan HTTP. Diekstrak dari network_http_referral_url . |
proto |
T/A | Digunakan dalam logika parser untuk mengisi security_result.summary jika attackData.policyId tidak ada. |
reqHost |
target.hostname , target.asset.hostname |
Minta host. Diekstrak dari reqHost . |
reqId |
metadata.product_log_id , network.session_id |
ID Permintaan. Diekstrak dari reqId . |
reqMethod |
network.http.method |
Metode permintaan. Diekstrak dari reqMethod . |
reqPath |
target.url |
Jalur permintaan. Diekstrak dari reqPath . |
reqPort |
target.port |
Minta port. Diekstrak dari reqPort . |
rspContentType |
target.file.mime_type |
Jenis konten respons. Diekstrak dari rspContentType . |
securityRules |
security_result.rule_name , security_result.about.resource.attribute.labels |
Aturan keamanan. Diekstrak dari securityRules . Bagian pertama dipetakan ke rule_name , dan sisanya ditambahkan sebagai label dengan kunci "non_deny_rules" dan "deny_rule_format". |
statusCode |
network.http.response_code |
Kode status. Diekstrak dari statusCode . |
state |
principal.location.state , target.user.personal_address.state |
Negara bagian/provinsi. Diekstrak dari state . |
tlsVersion |
network.tls.version |
Versi TLS. Diekstrak dari tlsVersion . |
type |
metadata.product_event_type |
Jenis peristiwa. Diekstrak dari type . |
UA |
network.http.user_agent |
Agen pengguna. Diekstrak dari UA . |
version |
metadata.product_version , principal.asset.software.version |
Versi. Diekstrak dari version . |
T/A | metadata.event_timestamp |
Stempel waktu peristiwa berasal dari kolom _ts di log akamai_lds, kolom httpMessage.start di log akamai_siem, atau kolom log_date dalam format lain. |
T/A | metadata.vendor_name |
Dikodekan secara permanen ke "Akamai". |
T/A | metadata.product_name |
Hardcode ke "Kona". |
T/A | metadata.log_type |
Dikodekan secara permanen ke "AKAMAI_WAF". |
T/A | network.application_protocol |
Tetapkan ke "HTTP" untuk log akamai_siem dan akamai_lds, atau "DNS" untuk format lainnya. |
T/A | security_result.severity |
Setel ke MEDIUM untuk tindakan "alert", CRITICAL untuk tindakan "deny", dan HIGH untuk tindakan lainnya. |
T/A | event.idm.read_only_udm.metadata.event_type |
Tetapkan ke "NETWORK_HTTP" untuk sebagian besar format log, "GENERIC_EVENT" untuk peristiwa dengan kolom eventId atau eventData , atau "STATUS_UPDATE" untuk peristiwa dengan cli_ip atau p_ip , tetapi tanpa reqHost . |
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.