Mengumpulkan log CMS Wordpress
Ringkasan
Parser ini mengekstrak log CMS WordPress dari pesan berformat JSON atau teks biasa. Log ini menangani log berformat JSON dan non-JSON, mengurai kolom yang relevan dan memetakannya ke UDM, termasuk detail pengguna, informasi jaringan, atribut resource, dan detail hasil keamanan. Parser juga melakukan beberapa transformasi data, seperti mengonversi jenis data, menggabungkan kolom, dan menangani pola log tertentu untuk Kubernetes dan resource lainnya.
Sebelum memulai
Pastikan Anda memiliki prasyarat berikut:
- Instance Google SecOps.
- Akses istimewa ke situs WordPress.
- Plugin yang mengaktifkan fungsi webhook (misalnya, WP Webhooks).
Menyiapkan feed
Ada dua titik entri berbeda untuk menyiapkan feed di platform Google SecOps:
- Setelan SIEM > Feed
- Hub Konten > Paket Konten
Menyiapkan feed dari Setelan SIEM > Feed
Untuk mengonfigurasi feed, ikuti langkah-langkah berikut:
- Buka Setelan SIEM > Feed.
- Klik Tambahkan Feed Baru.
- Di halaman berikutnya, klik Konfigurasi satu feed.
- Di kolom Nama feed, masukkan nama untuk feed; misalnya, Log CMS Wordpress.
- Pilih Webhook sebagai Jenis sumber.
- Pilih Wordpress sebagai Jenis log.
- Klik Berikutnya.
- Opsional: tentukan nilai untuk parameter input berikut:
- Pemisah pemisahan: pemisah yang digunakan untuk memisahkan baris log, seperti
\n
.
- Pemisah pemisahan: pemisah yang digunakan untuk memisahkan baris log, seperti
- Klik Berikutnya.
- Tinjau konfigurasi feed di layar Selesaikan, lalu klik Kirim.
- Klik Buat Kunci Rahasia untuk membuat kunci rahasia guna mengautentikasi feed ini.
- Salin dan simpan kunci rahasia. Anda tidak dapat melihat kunci rahasia ini lagi. Jika perlu, Anda dapat membuat ulang kunci rahasia baru, tetapi tindakan ini akan membuat kunci rahasia sebelumnya tidak berlaku.
- Di tab Detail, salin URL endpoint feed dari kolom Informasi Endpoint. Anda perlu menentukan URL endpoint ini di aplikasi klien Anda.
- Klik Selesai.
Menyiapkan feed dari Hub Konten
Tentukan nilai untuk kolom berikut:
- Pemisah pemisahan: pemisah yang digunakan untuk memisahkan baris log, seperti
\n
.
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.
Klik Buat Kunci Rahasia untuk membuat kunci rahasia guna mengautentikasi feed ini.
Salin dan simpan kunci rahasia. Anda tidak dapat melihat kunci rahasia ini lagi. Jika perlu, Anda dapat membuat ulang kunci rahasia baru, tetapi tindakan ini akan membuat kunci rahasia sebelumnya tidak berlaku.
Di tab Detail, salin URL endpoint feed dari kolom Informasi Endpoint. Anda perlu menentukan URL endpoint ini di aplikasi klien Anda.
Membuat kunci API untuk feed webhook
Buka konsolGoogle Cloud > Kredensial.
Klik Create credentials, lalu pilih API key.
Batasi akses kunci API ke Google Security Operations API.
Tentukan URL endpoint
- Di aplikasi klien Anda, tentukan URL endpoint HTTPS yang disediakan di feed webhook.
Aktifkan autentikasi dengan menentukan kunci API dan kunci rahasia sebagai bagian dari header kustom dalam format berikut:
X-goog-api-key = API_KEY X-Webhook-Access-Key = SECRET
Rekomendasi: Tentukan kunci API sebagai header, bukan menentukannya di URL. Jika klien webhook Anda tidak mendukung header kustom, Anda dapat menentukan kunci API dan kunci rahasia menggunakan parameter kueri dalam format berikut:
ENDPOINT_URL?key=API_KEY&secret=SECRET
Ganti kode berikut:
ENDPOINT_URL
: URL endpoint feed.API_KEY
: kunci API untuk mengautentikasi ke Google Security Operations.SECRET
: kunci rahasia yang Anda buat untuk mengautentikasi feed.
Mengonfigurasi Webhook Wordpress
- Instal dan aktifkan plugin WP Webhooks (atau plugin webhook pilihan Anda) melalui direktori plugin WordPress.
- Buka submenu WP Webhooks di menu administrator WordPress, biasanya terletak di bagian setelan.
- Klik Kirim Data di menu panel atas.
- Pilih tindakan WordPress yang akan memicu webhook. Contoh umum mencakup publish_post (saat postingan baru dipublikasikan), user_register (saat pengguna baru mendaftar), atau comment_post (saat komentar baru diposting). Hal ini bergantung pada data yang Anda pilih dan kirim ke Google SecOps.
- Klik Tambahkan URL Webhook.
- Konfigurasi Webhook:
- Nama: Beri webhook Anda nama deskriptif (misalnya, Feed Google SecOps).
- URL Webhook: Tempelkan URL endpoint Google SecOps Anda.
- Klik Simpan Webhook.
Tabel Pemetaan UDM
Kolom Log | Pemetaan UDM | Logika |
---|---|---|
ClientIP |
principal.ip |
Alamat IP klien diekstrak dari kolom ClientIP dalam log mentah. |
Code |
target.resource.attribute.labels.key |
Nilai "Code" ditetapkan sebagai kunci dalam objek target.resource.attribute.labels . |
Code |
target.resource.attribute.labels.value |
Nilai kolom Code dari log mentah ditetapkan sebagai nilai dalam objek target.resource.attribute.labels . |
CurrentUserID |
target.user.userid |
CurrentUserID dari log mentah dikonversi menjadi string dan dipetakan ke kolom target.user.userid . |
EditUserLink |
target.url |
EditUserLink dari log mentah dipetakan ke kolom target.url . |
EventType |
metadata.product_event_type |
EventType dari log mentah dipetakan ke kolom metadata.product_event_type . |
FirstName |
target.user.first_name |
FirstName dari log mentah dipetakan ke kolom target.user.first_name . |
insertId |
metadata.product_log_id |
insertId dari log mentah dipetakan ke kolom metadata.product_log_id . |
labels.compute.googleapis.com/resource_name |
additional.fields.key |
Nilai "Resource Name" ditetapkan sebagai kunci dalam objek additional.fields . |
labels.compute.googleapis.com/resource_name |
additional.fields.value.string_value |
Nilai labels.compute.googleapis.com/resource_name dari log mentah ditetapkan sebagai nilai string dalam objek additional.fields . |
labels.k8s-pod/app_kubernetes_io/instance |
target.resource.attribute.labels.key |
Nilai "Kubernetes IO Instance" ditetapkan sebagai kunci dalam objek target.resource.attribute.labels . |
labels.k8s-pod/app_kubernetes_io/instance |
target.resource.attribute.labels.value |
Nilai labels.k8s-pod/app_kubernetes_io/instance dari log mentah ditetapkan sebagai nilai dalam objek target.resource.attribute.labels . |
labels.k8s-pod/app_kubernetes_io/managed-by |
target.resource.attribute.labels.key |
Nilai "Kubernetes IO Instance Manager" ditetapkan sebagai kunci dalam objek target.resource.attribute.labels . |
labels.k8s-pod/app_kubernetes_io/managed-by |
target.resource.attribute.labels.value |
Nilai labels.k8s-pod/app_kubernetes_io/managed-by dari log mentah ditetapkan sebagai nilai dalam objek target.resource.attribute.labels . |
labels.k8s-pod/app_kubernetes_io/name |
target.resource.attribute.labels.key |
Nilai "Kubernetes IO Instance Name" ditetapkan sebagai kunci dalam objek target.resource.attribute.labels . |
labels.k8s-pod/app_kubernetes_io/name |
target.resource.attribute.labels.value |
Nilai labels.k8s-pod/app_kubernetes_io/name dari log mentah ditetapkan sebagai nilai dalam objek target.resource.attribute.labels . |
labels.k8s-pod/controller-revision-hash |
target.resource.attribute.labels.key |
Nilai "Controller Revision Hash" ditetapkan sebagai kunci dalam objek target.resource.attribute.labels . |
labels.k8s-pod/controller-revision-hash |
target.resource.attribute.labels.value |
Nilai labels.k8s-pod/controller-revision-hash dari log mentah ditetapkan sebagai nilai dalam objek target.resource.attribute.labels . |
labels.k8s-pod/helm_sh/chart |
target.resource.attribute.labels.key |
Nilai "Kubernetes IO Instance Manager SH" ditetapkan sebagai kunci dalam objek target.resource.attribute.labels . |
labels.k8s-pod/helm_sh/chart |
target.resource.attribute.labels.value |
Nilai labels.k8s-pod/helm_sh/chart dari log mentah ditetapkan sebagai nilai dalam objek target.resource.attribute.labels . |
labels.k8s-pod/k8s-app |
target.resource.attribute.labels.key |
Nilai "Application" ditetapkan sebagai kunci dalam objek target.resource.attribute.labels . |
labels.k8s-pod/k8s-app |
target.resource.attribute.labels.value |
Nilai labels.k8s-pod/k8s-app dari log mentah ditetapkan sebagai nilai dalam objek target.resource.attribute.labels . |
labels.k8s-pod/pod-template-generation |
target.resource.attribute.labels.key |
Nilai "Pod Template Generation" ditetapkan sebagai kunci dalam objek target.resource.attribute.labels . |
labels.k8s-pod/pod-template-generation |
target.resource.attribute.labels.value |
Nilai labels.k8s-pod/pod-template-generation dari log mentah ditetapkan sebagai nilai dalam objek target.resource.attribute.labels . |
labels.k8s-pod/pod-template-hash |
target.resource.attribute.labels.key |
Nilai "Pod Template Hash" ditetapkan sebagai kunci dalam objek target.resource.attribute.labels . |
labels.k8s-pod/pod-template-hash |
target.resource.attribute.labels.value |
Nilai labels.k8s-pod/pod-template-hash dari log mentah ditetapkan sebagai nilai dalam objek target.resource.attribute.labels . |
LastName |
target.user.last_name |
LastName dari log mentah dipetakan ke kolom target.user.last_name . |
logName |
target.resource.attribute.labels.key |
Nilai "Log Name" ditetapkan sebagai kunci dalam objek target.resource.attribute.labels . |
logName |
target.resource.attribute.labels.value |
Nilai kolom logName dari log mentah ditetapkan sebagai nilai dalam objek target.resource.attribute.labels . |
receiveTimestamp |
metadata.event_timestamp |
receiveTimestamp dari log mentah diuraikan dan dipetakan ke kolom metadata.event_timestamp . |
resource.labels.cluster_name |
additional.fields.key |
Nilai "Cluster Name" ditetapkan sebagai kunci dalam objek additional.fields . |
resource.labels.cluster_name |
additional.fields.value.string_value |
Nilai resource.labels.cluster_name dari log mentah ditetapkan sebagai nilai string dalam objek additional.fields . |
resource.labels.cluster_name |
target.resource.resource_type |
Jika resource.labels.cluster_name ada, nilai "CLUSTER" akan ditetapkan ke target.resource.resource_type . |
resource.labels.container_name |
metadata.product_event_type |
Jika resource.type adalah "k8s_container", nilai resource.labels.container_name bersama dengan resource.labels.namespace_name digunakan untuk membuat metadata.product_event_type . |
resource.labels.container_name |
target.resource.name |
Nilai resource.labels.container_name dari log mentah ditetapkan ke kolom target.resource.name . |
resource.labels.location |
target.location.country_or_region |
Nilai resource.labels.location dari log mentah ditetapkan ke kolom target.location.country_or_region . |
resource.labels.namespace_name |
additional.fields.key |
Nilai "Namespace Name" ditetapkan sebagai kunci dalam objek additional.fields . |
resource.labels.namespace_name |
additional.fields.value.string_value |
Nilai resource.labels.namespace_name dari log mentah ditetapkan sebagai nilai string dalam objek additional.fields . |
resource.labels.namespace_name |
metadata.product_event_type |
Jika resource.type adalah "k8s_container", nilai resource.labels.namespace_name bersama dengan resource.labels.container_name digunakan untuk membuat metadata.product_event_type . |
resource.labels.node_name |
metadata.product_event_type |
Jika resource.type adalah "k8s_node", nilai resource.labels.node_name digunakan untuk membuat metadata.product_event_type . |
resource.labels.pod_name |
additional.fields.key |
Nilai "Pod Name" ditetapkan sebagai kunci dalam objek additional.fields . |
resource.labels.pod_name |
additional.fields.value.string_value |
Nilai resource.labels.pod_name dari log mentah ditetapkan sebagai nilai string dalam objek additional.fields . |
resource.labels.project_id |
additional.fields.key |
Nilai "Project Id" ditetapkan sebagai kunci dalam objek additional.fields . |
resource.labels.project_id |
additional.fields.value.string_value |
Nilai resource.labels.project_id dari log mentah ditetapkan sebagai nilai string dalam objek additional.fields . |
resource.type |
target.resource.resource_subtype |
Nilai resource.type dari log mentah ditetapkan ke kolom target.resource.resource_subtype . |
Roles |
target.user.user_role |
Kolom Roles dari log mentah dikonversi menjadi huruf besar dan dipetakan ke kolom target.user.user_role . |
SessionID |
network.session_id |
SessionID dari log mentah dipetakan ke kolom network.session_id . |
sev |
security_result.severity |
Nilai kolom sev menentukan nilai security_result.severity . "INFO" atau "NOTICE" dipetakan ke "INFORMATIONAL", "WARN" dipetakan ke "MEDIUM", dan "ERR" dipetakan ke "ERROR". |
TargetUsername |
target.user.user_display_name |
TargetUsername dari log mentah dipetakan ke kolom target.user.user_display_name . |
textPayload |
metadata.description |
Jika resource.type adalah "k8s_node", nilai textPayload dipetakan ke kolom metadata.description . |
textPayload |
network.application_protocol |
Protokol (misalnya, HTTP) diekstrak dari kolom textPayload menggunakan pola grok. |
textPayload |
network.http.method |
Metode HTTP (misalnya, GET, POST) diekstrak dari kolom textPayload menggunakan pola grok. |
textPayload |
network.http.referral_url |
URL diekstrak dari kolom textPayload menggunakan pola grok. |
textPayload |
network.http.response_code |
Kode respons HTTP diekstrak dari kolom textPayload menggunakan pola grok dan dikonversi menjadi bilangan bulat. |
textPayload |
network.received_bytes |
Byte yang diterima diekstrak dari kolom textPayload menggunakan pola grok dan dikonversi menjadi bilangan bulat yang tidak bertanda. |
textPayload |
principal.ip |
Alamat IP sumber diekstrak dari kolom textPayload menggunakan pola grok. |
textPayload |
security_result.description |
Deskripsi diekstrak dari kolom textPayload menggunakan pola grok. |
textPayload |
target.file.full_path |
Jalur diekstrak dari kolom textPayload menggunakan pola grok. |
UserAgent |
network.http.user_agent |
UserAgent dari log mentah dipetakan ke kolom network.http.user_agent . Nilai "USER_RESOURCE_ACCESS" ditetapkan ke metadata.event_type . |
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.