Mengumpulkan log Azure WAF
Dokumen ini menjelaskan cara mengekspor log Azure Web Application Firewall (WAF) ke Google Security Operations menggunakan Akun Azure Storage. Parser menangani log dalam format JSON, lalu mengubahnya menjadi UDM. Proses ini memproses log yang berisi array records dengan melakukan iterasi pada setiap data dan memetakan kolom tertentu ke properti UDM. Jika array records tidak ada, parser akan menangani log sebagai satu peristiwa, mengekstrak dan memetakan kolom yang sesuai.
Sebelum memulai
Pastikan Anda memiliki prasyarat berikut:
- Instance Google SecOps
- Tenant Azure yang aktif
- Akses istimewa ke Azure
Mengonfigurasi Akun Azure Storage
- Di konsol Azure, cari Storage accounts.
- Klik Buat.
- Tentukan nilai untuk parameter input berikut:
- Langganan: Pilih langganan.
- Grup Resource: Pilih grup resource.
- Region: Pilih wilayah.
- Performa: Pilih performa (Standar direkomendasikan).
- Redundansi: Pilih redundansi (GRS atau LRS direkomendasikan).
- Nama akun penyimpanan: Masukkan nama untuk akun penyimpanan baru.
- Klik Review + create.
- Tinjau ringkasan akun, lalu klik Buat.
- Dari halaman Storage Account Overview, pilih submenu Access keys di Security + networking.
- Klik Tampilkan di samping key1 atau key2.
- Klik Salin ke papan klip untuk menyalin kunci.
- Simpan kunci di lokasi yang aman untuk digunakan nanti.
- Dari halaman Storage Account Overview, pilih submenu Endpoints di Settings.
- Klik Salin ke papan klip untuk menyalin URL endpoint Blob service; misalnya,
https://<storageaccountname>.blob.core.windows.net
. - Simpan URL endpoint di lokasi yang aman untuk digunakan nanti.
Cara mengonfigurasi Ekspor Log untuk Log WAF Azure
- Login ke Portal Azure menggunakan akun istimewa Anda.
- Buka aturan Firewall Aplikasi Web (WAF), lalu pilih WAF yang akan dipantau.
- Pilih Monitoring > Diagnostic Settings.
- Klik + Tambahkan setelan diagnostik.
- Masukkan nama deskriptif untuk setelan diagnostik.
- Pilih allLogs.
- Centang kotak Arsipkan ke akun penyimpanan sebagai tujuan.
- Tentukan Subscription dan Storage Account.
- Klik Simpan.
Menyiapkan feed
Ada dua titik entri berbeda untuk menyiapkan feed di platform Google SecOps:
- Setelan SIEM > Feed > Tambahkan Baru
- Hub Konten > Paket Konten > Mulai
Cara menyiapkan feed Azure WAF
- Klik paket Azure Platform.
- Cari jenis log Azure WAF, lalu klik Tambahkan feed baru.
Tentukan nilai untuk kolom berikut:
- Jenis Sumber: Microsoft Azure Blob Storage V2.
- URI Azure: URL endpoint blob.
ENDPOINT_URL/BLOB_NAME
- Ganti kode berikut:
ENDPOINT_URL
: URL endpoint blob (https://<storageaccountname>.blob.core.windows.net
)BLOB_NAME
: Nama blob (seperti,<logname>-logs
)
- Ganti kode berikut:
- Opsi penghapusan sumber: Pilih opsi penghapusan sesuai dengan preferensi penyerapan Anda.
Catatan: Jika Anda memilih opsi
Delete transferred files
atauDelete transferred files and empty directories
, pastikan Anda memberikan izin yang sesuai ke akun layanan. - Usia File Maksimum: Menyertakan file yang diubah dalam beberapa hari terakhir. Defaultnya adalah 180 hari.
Shared key: Kunci akses ke Azure Blob Storage. Opsi lanjutan
Nama Feed: Nilai yang telah diisi otomatis yang mengidentifikasi feed.
Namespace Aset: Namespace yang terkait dengan feed.
Label Penyerapan: Label yang diterapkan ke semua peristiwa dari feed ini.
Klik Buat feed.
Untuk mengetahui informasi selengkapnya tentang cara mengonfigurasi beberapa feed untuk berbagai jenis log dalam keluarga produk ini, lihat Mengonfigurasi feed menurut produk.
Tabel Pemetaan UDM
Kolom Log | Pemetaan UDM | Logika |
---|---|---|
backendPoolName |
additional.fields[?key=='backendPoolName'].value.string_value |
Nilai diambil dari kolom backendPoolName dalam log mentah. |
backendSettingName |
additional.fields[?key=='backendSettingName'].value.string_value |
Nilai diambil dari kolom backendSettingName dalam log mentah. |
category |
metadata.product_event_type |
Nilai diambil dari kolom category dalam log mentah. |
EventEnqueuedUtcTime |
additional.fields[?key=='EventEnqueuedUtcTime'].value.string_value |
Nilai diambil dari kolom EventEnqueuedUtcTime di log mentah saat kolom records ada. |
EventProcessedUtcTime |
additional.fields[?key=='EventProcessedUtcTime'].value.string_value |
Nilai diambil dari kolom EventProcessedUtcTime di log mentah saat kolom records ada. |
operationName |
additional.fields[?key=='operationName'].value.string_value |
Nilai diambil dari kolom operationName dalam log mentah. |
properties.action |
additional.fields[?key=='action'].value.string_value |
Nilai diambil dari kolom properties.action di log mentah saat kolom records ada. |
properties.action |
security_result.action_details |
Nilai diambil dari kolom properties.action di log mentah jika kolom records tidak ada. |
properties.clientIP , properties.clientIp |
principal.asset.ip , principal.ip |
Nilai diambil dari kolom properties.clientIP atau properties.clientIp di log mentah, dengan memprioritaskan clientIP . |
properties.clientPort |
principal.port |
Nilai diambil dari kolom properties.clientPort dalam log mentah. |
properties.clientResponseTime |
principal.resource.attribute.labels[?key=='Client Response Time'].value |
Nilai diambil dari kolom properties.clientResponseTime di log mentah jika kolom records tidak ada. |
properties.details.data |
additional.fields[?key=='Properties data'].value.string_value |
Nilai diambil dari kolom properties.details.data di log mentah saat kolom records ada. |
properties.details.file |
principal.process.file.full_path |
Nilai diambil dari kolom properties.details.file di log mentah jika kolom records tidak ada. |
properties.details.matches[].matchVariableName , properties.details.matches[].matchVariableValue |
additional.fields[?key.startsWith('%{idx} ')].value.string_value |
Nilai diambil dari array properties.details.matches dalam log mentah. key di UDM dibuat menggunakan indeks (idx ) dan matchVariableName . value diambil dari matchVariableValue . |
properties.details.message |
metadata.description |
Nilai diambil dari kolom properties.details.message di log mentah setelah menghapus garis miring terbalik dan tanda petik. |
properties.details.msg |
metadata.description |
Nilai diambil dari kolom properties.details.msg di log mentah saat kolom records ada. |
properties.httpMethod |
network.http.method |
Nilai diambil dari kolom properties.httpMethod dalam log mentah. |
properties.httpStatus |
network.http.response_code |
Nilai diambil dari kolom properties.httpStatus dalam log mentah. |
properties.httpVersion |
network.application_protocol |
Jika kolom properties.httpVersion berisi HTTP , nilai HTTP akan ditetapkan. |
properties.host , properties.hostname , properties.originalHost |
principal.asset.hostname , principal.hostname |
Nilai diambil dari salah satu dari properties.originalHost , properties.host , atau properties.hostname , dengan memprioritaskannya dalam urutan tersebut. |
properties.policyId |
security_result.detection_fields[?key=='policyId'].value |
Nilai diambil dari kolom properties.policyId dalam log mentah. |
properties.policyMode |
security_result.detection_fields[?key=='policyMode'].value |
Nilai diambil dari kolom properties.policyMode di log mentah saat kolom records ada. |
properties.policy |
additional.fields[?key=='Properties policy'].value.string_value |
Nilai diambil dari kolom properties.policy di log mentah saat kolom records ada. |
properties.receivedBytes |
network.received_bytes |
Nilai diambil dari kolom properties.receivedBytes dalam log mentah. |
properties.requestUri |
target.url |
Nilai diambil dari kolom properties.requestUri dalam log mentah. |
properties.ruleId |
security_result.rule_id |
Nilai diambil dari kolom properties.ruleId dalam log mentah. |
properties.ruleName |
security_result.rule_name |
Nilai diambil dari kolom properties.ruleName di log mentah saat kolom records ada. |
properties.ruleName , ruleSetType |
security_result.rule_name |
Nilai diambil dari kolom properties.ruleName , atau jika kosong, dari kolom ruleSetType di log mentah jika kolom records tidak ada. |
properties.ruleSetVersion |
security_result.detection_fields[?key=='ruleSetVersion'].value |
Nilai diambil dari kolom properties.ruleSetVersion dalam log mentah. |
properties.sentBytes |
network.sent_bytes |
Nilai diambil dari kolom properties.sentBytes dalam log mentah. |
properties.serverResponseLatency |
additional.fields[?key=='Server Response Latency'].value.string_value |
Nilai diambil dari kolom properties.serverResponseLatency di log mentah jika kolom records tidak ada. |
properties.serverRouted |
target.asset.ip , target.ip , target.port |
IP dan port diekstrak dari kolom properties.serverRouted . |
properties.sslCipher |
network.tls.cipher |
Nilai diambil dari kolom properties.sslCipher dalam log mentah. |
properties.sslClientCertificateIssuerName |
network.tls.server.certificate.issuer |
Nilai diambil dari kolom properties.sslClientCertificateIssuerName dalam log mentah. |
properties.sslProtocol |
network.tls.version |
Nilai diambil dari kolom properties.sslProtocol dalam log mentah. |
properties.timeTaken |
additional.fields[?key=='Properties Timetaken'].value.string_value |
Nilai diambil dari kolom properties.timeTaken di log mentah jika kolom records tidak ada. |
properties.trackingReference |
additional.fields[?key=='trackingReference'].value.string_value |
Nilai diambil dari kolom properties.trackingReference di log mentah saat kolom records ada. |
properties.transactionId |
network.session_id |
Nilai diambil dari kolom properties.transactionId dalam log mentah. |
properties.userAgent |
network.http.user_agent |
Nilai diambil dari kolom properties.userAgent dalam log mentah. |
properties.WAFEvaluationTime |
additional.fields[?key=='Properties WAFEvaluationTime'].value.string_value |
Nilai diambil dari kolom properties.WAFEvaluationTime di log mentah jika kolom records tidak ada. |
properties.WAFMode |
additional.fields[?key=='Properties WAFMode'].value.string_value |
Nilai diambil dari kolom properties.WAFMode di log mentah jika kolom records tidak ada. |
rec.category |
metadata.product_event_type |
Nilai diambil dari kolom rec.category di log mentah saat kolom records ada. |
rec.operationName |
additional.fields[?key=='operationName'].value.string_value |
Nilai diambil dari kolom rec.operationName di log mentah saat kolom records ada. |
rec.properties.clientIP , rec.properties.clientIp |
principal.asset.ip , principal.ip |
Nilai diambil dari kolom rec.properties.clientIP atau rec.properties.clientIp di log mentah, dengan memprioritaskan clientIP jika kolom records ada. |
rec.properties.clientPort |
principal.port |
Nilai diambil dari kolom rec.properties.clientPort di log mentah saat kolom records ada. |
rec.properties.host |
principal.asset.hostname , principal.hostname |
Nilai diambil dari kolom rec.properties.host di log mentah saat kolom records ada. |
rec.properties.policy |
additional.fields[?key=='Properties policy'].value.string_value |
Nilai diambil dari kolom rec.properties.policy di log mentah saat kolom records ada. |
rec.properties.requestUri |
target.url |
Nilai diambil dari kolom rec.properties.requestUri di log mentah saat kolom records ada. |
rec.properties.ruleName |
security_result.rule_name |
Nilai diambil dari kolom rec.properties.ruleName di log mentah saat kolom records ada. |
rec.properties.trackingReference |
additional.fields[?key=='trackingReference'].value.string_value |
Nilai diambil dari kolom rec.properties.trackingReference di log mentah saat kolom records ada. |
rec.resourceId |
target.resource.id |
Nilai diambil dari kolom rec.resourceId di log mentah saat kolom records ada. |
rec.time |
metadata.event_timestamp |
Nilai diambil dari kolom rec.time di log mentah saat kolom records ada. |
resourceId |
target.resource.id |
Nilai diambil dari kolom resourceId di log mentah jika kolom records tidak ada. |
timeStamp |
metadata.event_timestamp |
Nilai diambil dari kolom timeStamp di log mentah jika kolom records tidak ada. |
T/A | metadata.event_type |
Nilai ditetapkan ke NETWORK_CONNECTION jika pokok (nama host atau IP klien) dan IP tujuan ada. Nilainya ditetapkan ke STATUS_UPDATE jika pokok ada, tetapi IP tujuan tidak ada. Jika tidak, nilai defaultnya adalah GENERIC_EVENT atau nilai kolom event_type . |
T/A | metadata.log_type |
Nilai di-hardcode menjadi AZURE_WAF . |
T/A | metadata.product_name |
Nilai di-hardcode menjadi Azure WAF Logs . |
T/A | metadata.vendor_name |
Nilai di-hardcode menjadi Microsoft . |
T/A | security_result.action |
Nilai disetel ke ALLOW jika properties.action adalah Matched , BLOCK jika properties.action adalah Block . |
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.