Mengintegrasikan Pub/Sub dengan Google SecOps
Dokumen ini menjelaskan cara mengintegrasikan Pub/Sub dengan Google Security Operations.
Kasus penggunaan
Integrasi Pub/Sub mendukung kasus penggunaan berikut:
Penyerapan pemberitahuan otomatis: Terus mengambil log keamanan, pemberitahuan, dan telemetri yang dipublikasikan ke topik Pub/Sub untuk menyerapnya ke Google SecOps sebagai kasus.
Orkestrasi keamanan terpusat: Gabungkan perutean peristiwa keamanan melalui Pub/Sub dari sistem cloud dan pihak ketiga untuk memicu playbook respons otomatis.
Sebelum memulai
Sebelum mengonfigurasi integrasi Pub/Sub di Google SecOps, selesaikan langkah-langkah prasyarat berikut:
Berikan peran Identity and Access Management yang diperlukan ke akun layanan Anda.
Pilih dan konfigurasi salah satu metode autentikasi berikut:
Opsi 1: Workload Identity (direkomendasikan): Metode ini menggunakan token berumur pendek menggunakan peniruan akun layanan.
Opsi 2: Kunci JSON akun layanan: Metode ini mengandalkan file kunci rahasia statis yang berumur panjang.
Membuat akun layanan
Di konsol Google Cloud , buka IAM & Admin > Service Accounts.
Klik addCreate service account.
Berikan nama dan deskripsi, lalu klik Selesai. Catat Alamat email akun layanan.
Memberikan peran IAM
Dengan memberikan izin, integrasi dapat melihat dan mengambil pesan dari langganan Anda. Untuk menetapkan peran standar, selesaikan langkah-langkah berikut:
Di konsol Google Cloud , buka IAM.
Temukan akun layanan Anda, lalu klik Edit principal (edit).
Klik Add another role dan pilih Pub/Sub Viewer (
roles/pubsub.viewer).Klik Simpan.
Mengonfigurasi kredensial Workload Identity
Workload Identity adalah pendekatan yang direkomendasikan karena menggunakan token akses berumur pendek menggunakan peniruan akun layanan.
Mengidentifikasi identitas instance yang unik
Untuk membuat koneksi, Anda harus memberikan izin kepada instance Google SecOps untuk meniru identitas akun layanan Anda.
Di Google SecOps, buka Content Hub > Response Integrations.
Pilih integrasi Pub/Sub dan masukkan email akun layanan Anda di Workload Identity Email.
Klik Save > Test. Pengujian diperkirakan akan gagal.
Klik close_small di samping tombol Test dan temukan email identitas yang diawali dengan
gke-init-python@...atausoar-python@....Salin alamat email unik ini.
Mengizinkan identitas instance di Google Cloud
Di konsol Google Cloud , buka IAM & Admin > Service Accounts.
Pilih akun layanan target dan buka Permissions > Grant Access.
Tempelkan alamat email unik ke New principals dan tetapkan peran Service Account Token Creator (
roles/iam.serviceAccountTokenCreator).
Memberikan akses project kuota
Autentikasi dengan Workload Identity memerlukan Quota Project ID untuk melacak penggunaan API dan penagihan.
Di konsol Google Cloud , buka IAM untuk project yang digunakan sebagai project kuota.
Temukan akun layanan Anda, lalu klik Edit principal (edit).
Klik Add another role dan pilih Service Usage Consumer (
roles/serviceusage.serviceUsageConsumer).Klik Simpan.
Mengonfigurasi kunci JSON
File kunci rahasia statis yang berumur panjang memerlukan rotasi manual. Hanya gunakan metode ini jika autentikasi Workload Identity tidak tersedia.
Di konsol Google Cloud , buka IAM & Admin > Service Accounts, lalu pilih akun layanan Anda.
Buka tab Keys dan klik Add key > Create new key.
Pilih JSON dan klik Create. Browser akan mendownload file JSON ke komputer Anda.
Parameter integrasi
Integrasi Pub/Sub memerlukan parameter berikut:
| Parameter | Deskripsi |
|---|---|
Workload Identity Email |
Opsional. Alamat email klien akun layanan Anda. Hanya konfigurasikan parameter ini jika Anda melakukan autentikasi menggunakan Workload
Identity. Jika dikonfigurasi, Anda juga harus memberikan
|
Service Account JSON File Content |
Opsional. Konten lengkap file JSON kunci akun layanan. Konfigurasikan parameter ini untuk autentikasi kunci akun layanan. |
Quota Project ID |
Opsional. Project ID yang digunakan untuk penggunaan dan penagihan API. Parameter ini diperlukan saat menggunakan autentikasi Workload Identity. Jika tidak ada nilai yang diberikan, integrasi akan mengambil ID dari kredensial akun layanan. |
Project ID |
Opsional. Project ID yang akan ditargetkan di Pub/Sub. Jika tidak ada nilai yang diberikan, integrasi akan mengambil ID dari kredensial akun layanan. |
Verify SSL |
Wajib. Memvalidasi sertifikat SSL untuk koneksi ke server. Diaktifkan secara default. |
Untuk mendapatkan petunjuk tentang cara mengonfigurasi integrasi di Google SecOps, lihat Mengonfigurasi integrasi.
Anda dapat melakukan perubahan pada tahap selanjutnya, jika diperlukan. Setelah mengonfigurasi instance integrasi, Anda dapat menggunakannya dalam playbook. Untuk mengetahui informasi selengkapnya tentang cara mengonfigurasi dan mendukung beberapa instance, lihat Mendukung beberapa instance.
Tindakan
Untuk mengetahui informasi selengkapnya tentang tindakan, lihat Merespons tindakan yang tertunda dari meja kerja Anda dan Menjalankan tindakan manual dalam kasus Anda.
Ping
Gunakan tindakan Ping untuk menguji konektivitas ke Pub/Sub.
Tindakan ini tidak berjalan di entity Google SecOps.
Input tindakan
Tidak ada.
Output tindakan
Tindakan Ping memberikan output berikut:
| Jenis output tindakan | Ketersediaan |
|---|---|
| Lampiran repositori kasus | Tidak tersedia |
| Link repositori kasus | Tidak tersedia |
| Tabel repositori kasus | Tidak tersedia |
| Tabel pengayaan | Tidak tersedia |
| Hasil JSON | Tidak tersedia |
| Pesan output | Tersedia |
| Hasil skrip | Tersedia |
Pesan output
Tindakan Ping dapat menampilkan pesan output berikut:
| Pesan output | Deskripsi pesan |
|---|---|
Successfully connected to the Pub/Sub server with the
provided connection parameters! |
Tindakan berhasil. |
Failed to connect to the Pub/Sub server! Error is
ERROR_REASON |
Tindakan gagal. Periksa koneksi ke server, parameter input, atau kredensial. |
Hasil skrip
Tabel berikut mencantumkan nilai untuk output hasil skrip saat menggunakan tindakan Ping:
| Nama hasil skrip | Nilai |
|---|---|
is_success |
True atau False |
Konektor
Untuk mendapatkan petunjuk mendetail terkait cara mengonfigurasi konektor di Google SecOps, lihat Menyerap data Anda (konektor).
Pub/Sub – Messages Connector
Di platform Google SecOps, Pub/Sub – Messages Connector disebut PubSub – Messages Connector.
Gunakan Pub/Sub – Messages Connector untuk mengambil pesan dari Pub/Sub.
Pemetaan tingkat keparahan JSON
Untuk memetakan tingkat keparahan pemberitahuan, Anda harus menentukan kolom yang digunakan Pub/Sub – Messages Connector untuk mendapatkan nilai tingkat keparahan dalam parameter Severity Mapping JSON. Respons konektor dapat berisi jenis nilai, seperti integer, float, dan string.
Pub/Sub – Messages Connector membaca nilai integer dan float
serta memetakannya sesuai dengan setelan Google SecOps. Tabel
berikut menunjukkan pemetaan nilai integer ke tingkat keparahan di
Google SecOps:
| Nilai bilangan bulat | Tingkat keparahan yang dipetakan |
|---|---|
100 |
Critical |
Dari 80 hingga 100 |
High |
Dari 60 hingga 80 |
Medium |
Dari 40 hingga 60 |
Low |
Kurang dari 40 |
Informational |
Jika respons berisi nilai string, Pub/Sub – Messages Connector memerlukan konfigurasi tambahan.
Awalnya, nilai default akan muncul sebagai berikut:
{
"Default": 60
}
Jika nilai yang diperlukan untuk pemetaan berada di kunci JSON event_severity, nilai tersebut dapat berupa:
"Malicious""Benign""Unknown"
Untuk mengurai nilai kunci JSON event_severity dan memastikan bahwa objek JSON
memiliki format yang benar, konfigurasikan parameter Severity Mapping JSON sebagai
berikut:
{
"event_severity": {
"Malicious": 100,
"Unknown": 60,
"Benign": -1
},
"Default": 50
}
Nilai "Default" wajib diisi.
Jika ada beberapa kecocokan untuk objek JSON yang sama, Pub/Sub – Messages Connector akan memprioritaskan kunci objek JSON pertama.
Untuk menggunakan kolom yang berisi nilai integer atau float, konfigurasikan kunci dan string kosong dalam parameter Severity Mapping JSON:
{
"Default":"60",
"integer_field": "",
"float_field": ""
}
Input konektor
Pub/Sub – Messages Connector memerlukan parameter berikut:
| Parameter | Deskripsi |
|---|---|
Product Field Name |
Wajib Nama kolom tempat nama produk disimpan. Nilai defaultnya adalah |
Event Field Name |
Wajib Nama kolom yang digunakan untuk menentukan nama peristiwa (subjenis). Nilai defaultnya adalah |
Environment Field Name |
Opsional
Nama kolom tempat nama lingkungan disimpan. Jika kolom lingkungan tidak ditemukan, lingkungan akan ditetapkan ke lingkungan default. Nilai defaultnya adalah |
Environment Regex Pattern |
Opsional
Pola ekspresi reguler yang akan dijalankan pada nilai yang ditemukan di kolom Gunakan nilai default Jika pola ekspresi reguler null atau kosong, atau nilai lingkungan null, hasil lingkungan akhir adalah lingkungan default. |
PythonProcessTimeout |
Wajib Batas waktu tunggu dalam detik untuk proses Python yang menjalankan skrip saat ini. Nilai defaultnya adalah |
Service Account JSON File Content |
Opsional Konten file JSON kunci akun layanan. Anda dapat mengonfigurasi parameter ini atau parameter Untuk mengonfigurasi parameter ini, berikan konten lengkap file JSON kunci akun layanan yang Anda download saat membuat akun layanan. Untuk Pub/Sub – Messages Connector, autentikasi dengan file JSON kunci akun layanan memiliki prioritas lebih tinggi daripada Workload Identity Federation. |
Workload Identity Email |
Opsional Alamat email klien akun layanan Anda. Anda dapat mengonfigurasi parameter ini atau parameter Untuk meniru identitas akun layanan dengan
Workload Identity Federation,
berikan peran |
Project ID |
Opsional Project ID yang akan digunakan di konektor. |
Quota Project ID |
Opsional Google Cloud Project ID yang Anda gunakan untuk
API dan penagihan Google Cloud . Parameter ini mengharuskan Anda memberikan
peran Integrasi akan melampirkan nilai parameter ini ke semua permintaan API. |
Subscription ID |
Wajib ID langganan Pub/Sub. |
Case Name Template |
Opsional Nama kasus kustom. Saat Anda mengonfigurasi
parameter ini, konektor akan menambahkan kunci baru yang disebut
Anda dapat memberikan placeholder dalam format berikut:
Contoh: Untuk placeholder, konektor menggunakan peristiwa Google SecOps pertama. Konektor hanya menangani kunci yang berisi nilai string. Untuk mengonfigurasi parameter ini, tentukan kolom peristiwa tanpa awalan. |
Alert Name Template |
Wajib Nama notifikasi kustom. Anda dapat memberikan placeholder dalam format berikut:
Contoh: Untuk placeholder, konektor menggunakan peristiwa Google SecOps pertama. Konektor hanya menangani
kunci yang berisi nilai string. Jika Anda tidak memberikan nilai apa pun atau menggunakan template yang tidak valid, konektor akan menggunakan nilai pengganti dalam format berikut: |
Rule Generator Template |
Wajib Pembuat aturan kustom. Anda dapat memberikan placeholder dalam format berikut:
Contoh: Untuk placeholder, konektor menggunakan peristiwa Google SecOps pertama. Konektor hanya menangani
kunci yang berisi nilai string. Jika Anda tidak memberikan nilai apa pun atau menggunakan template yang tidak valid, konektor akan menggunakan nilai pengganti dalam format berikut: |
Timestamp Field |
Wajib Nama kolom untuk menentukan stempel waktu pemberitahuan Google SecOps. Jika stempel waktu tidak menggunakan format waktu epoch Unix, tentukan format stempel waktu dalam parameter Nilai defaultnya adalah
|
Timestamp Format |
Opsional Format stempel waktu pesan. Konektor memerlukan stempel waktu untuk memproses pesan dengan benar. Jika stempel waktu tidak menggunakan format waktu epoch Unix dan Anda tidak mengonfigurasi format stempel waktu, konektor akan gagal. Nilai defaultnya adalah
|
Severity Mapping JSON |
Wajib Objek JSON yang menentukan cara konektor mengekstrak tingkat keparahan dari pesan. Nilai defaultnya adalah sebagai berikut: { "Default": "60" } Untuk mengetahui informasi selengkapnya tentang pemetaan tingkat keseriusan, lihat Pemetaan tingkat keseriusan JSON. |
Unique ID Field |
Opsional Nama kolom untuk mengonfirmasi bahwa pesan tersebut unik. Anda dapat menggunakan kata kunci yang dicadangkan |
Max Messages To Fetch |
Wajib Jumlah maksimum pesan yang akan diproses untuk setiap iterasi konektor. Nilai defaultnya adalah |
Disable Overflow |
Opsional Jika dipilih, konektor akan mengabaikan mekanisme overflow Google SecOps selama pembuatan pemberitahuan. Dipilih secara default. |
Verify SSL |
Wajib Jika dipilih, integrasi akan memverifikasi bahwa sertifikat SSL untuk terhubung ke Pub/Sub valid. Dipilih secara default. |
Proxy Server Address |
Opsional Alamat server proxy yang akan digunakan. |
Proxy Username |
Opsional Nama pengguna proxy untuk melakukan autentikasi. |
Proxy Password |
Opsional Sandi proxy untuk melakukan autentikasi. |
Aturan konektor
Pub/Sub – Messages Connector mendukung proxy.
Peristiwa konektor
Contoh berikut menunjukkan output JSON dari peristiwa Google SecOps yang dihasilkan oleh Pub/Sub – Messages Connector:
{
"notificationConfigName": "organizations/ORGANIZATION_ID/notificationConfigs/soar_connector_toxic_notifications_config",
"finding": {
"name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/findings/FINDING_ID",
"parent": "organizations/ORGANIZATION_ID/sources/SOURCE_ID",
"resourceName": "//compute.googleapis.com/projects/PROJECT_ID/global/firewalls/FIREWALL_ID",
"state": "ACTIVE",
"category": "OPEN_NETBIOS_PORT",
"externalUri": "https://console.cloud.google.com/networking/firewalls/details/default-allow-rdp?project\u003dPROJECT_ID",
"sourceProperties": {
"Recommendation": "Restrict the firewall rules at: https://console.cloud.google.com/networking/firewalls/details/default-allow-rdp?project\u003dPROJECT_ID",
"ExceptionInstructions": "Add the security mark \"allow_open_netbios_port\" to the asset with a value of \"true\" to prevent this finding from being activated again.",
"Explanation": "Firewall rules that allow connections from all IP addresses on TCP ports 137-139 or UDP ports 137-139 may expose NetBIOS services to attackers.",
"ScannerName": "FIREWALL_SCANNER",
"ResourcePath": [
"projects/PROJECT_ID/",
"folders/FOLDER_ID/",
"folders/FOLDER_ID/",
"organizations/ORGANIZATION_ID/"
],
"ExposedService": "NetBIOS",
"OpenPorts": {
"TCP": [
137.0,
138.0,
139.0
],
"UDP": [
137.0,
138.0,
139.0
]
},
"compliance_standards": {
"iso": [
{
"ids": [
"A.13.1.1"
]
}
],
"pci": [
{
"ids": [
"1.2.1"
]
}
],
"nist": [
{
"ids": [
"SC-7"
]
}
]
},
"ReactivationCount": 4.0
},
"securityMarks": {
"name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/findings/FINDING_ID/securityMarks",
"marks": {
"peter": "e2e1"
}
},
"eventTime": "2024-08-30T14:44:37.973090Z",
"createTime": "2024-06-24T07:08:54.777Z",
"propertyDataTypes": {
"ResourcePath": {
"listValues": {
"propertyDataTypes": [
{
"primitiveDataType": "STRING"
}
]
}
},
"ReactivationCount": {
"primitiveDataType": "NUMBER"
},
"Explanation": {
"primitiveDataType": "STRING"
},
"ExposedService": {
"primitiveDataType": "STRING"
},
"ScannerName": {
"primitiveDataType": "STRING"
}
}
}
}
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.