Mengumpulkan log JAMF Security Cloud
Dokumen ini menjelaskan cara menyerap log JAMF Security Cloud ke Google Security Operations menggunakan Google Cloud Storage V2.
JAMF Security Cloud adalah platform pertahanan dari ancaman seluler dan keamanan endpoint untuk perangkat Apple. Layanan ini menghasilkan log peristiwa deteksi ancaman, kepatuhan, dan keamanan perangkat yang mencakup perlindungan lapisan DNS, pencegahan phishing, pemfilteran konten, dan penilaian risiko perangkat.
Sebelum memulai
Pastikan Anda memiliki prasyarat berikut:
- Instance Google SecOps
- Project GCP dengan Cloud Storage API diaktifkan
- Izin untuk membuat dan mengelola bucket GCS dan kebijakan IAM
- Akses istimewa ke portal JAMF Security Cloud (konsol Jamf Threat Defense atau Jamf Protect)
Membuat bucket Google Cloud Storage
- Buka Konsol Google Cloud.
- Pilih project Anda atau buat project baru.
- Di menu navigasi, buka Cloud Storage > Buckets.
- Klik Create bucket.
Berikan detail konfigurasi berikut:
Setelan Nilai Beri nama bucket Anda Masukkan nama yang unik secara global (misalnya, jamf-security-cloud-logs)Location type Pilih berdasarkan kebutuhan Anda (Region, Dual-region, Multi-region) Location Pilih lokasi (misalnya, us-central1)Kelas penyimpanan Standar (direkomendasikan untuk log yang sering diakses) Access control Seragam (direkomendasikan) Alat perlindungan Opsional: Aktifkan pembuatan versi objek atau kebijakan retensi Klik Create.
Mengekspor log JAMF Security Cloud ke Google Cloud Storage
JAMF Security Cloud mendukung streaming data peristiwa ke tujuan penyimpanan cloud. Konfigurasi ekspor data di portal JAMF Security Cloud.
- Login ke portal JAMF Security Cloud.
- Buka Integrasi > Aliran Data.
- Klik Tambahkan Aliran Data.
- Pilih jenis tujuan yang didukung. JAMF Data Streams mendukung endpoint AWS S3 dan HTTP Generik secara native. Untuk mengirimkan log ke Google Cloud Storage, Anda dapat menggunakan endpoint HTTP Generik dengan fungsi Cloud Run yang menulis ke GCS, atau mengonfigurasi tujuan yang kompatibel dengan S3 perantara.
- Berikan detail konfigurasi berikut:
- Nama feed: Masukkan nama deskriptif (misalnya,
Chronicle GCS Export) - Nama bucket GCS: Masukkan nama bucket (misalnya,
jamf-security-cloud-logs) - Awalan jalur: Masukkan awalan folder (misalnya,
jamf-security-cloud/) - Output format: Pilih JSON (direkomendasikan untuk penyerapan Chronicle)
- Nama feed: Masukkan nama deskriptif (misalnya,
- Upload atau tempelkan kunci JSON kredensial akun layanan GCP yang memiliki akses tulis ke bucket GCS.
- Pilih jenis peristiwa yang akan diekspor:
- Peristiwa ancaman (ancaman jaringan, phishing, malware)
- Peristiwa kepatuhan perangkat
- Peristiwa keamanan DNS
- Peristiwa risiko aplikasi
- Klik Simpan (atau Buat).
- Pastikan file log mulai muncul di bucket GCS dengan awalan yang ditentukan.
- Pastikan akun layanan GCP yang digunakan untuk ekspor memiliki peran Storage Object Creator di bucket target.
- File log ditulis dalam format JSON, dengan setiap file berisi satu atau beberapa catatan peristiwa.
Mengambil akun layanan Google SecOps
- Login ke konsol Google SecOps.
- Buka Setelan SIEM > Feed.
- Klik Tambahkan Feed Baru.
- Klik Konfigurasi satu feed.
- Pilih Google Cloud Storage V2 sebagai Source type.
- Pilih JAMF Security Cloud sebagai Jenis log.
Klik Get Service Account. Email akun layanan yang unik akan ditampilkan, misalnya:
chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.comSalin alamat email ini. Anda akan menggunakannya pada langkah berikutnya.
- Setiap instance Google SecOps memiliki akun layanan yang unik. Jangan gunakan akun layanan dari dokumentasi atau contoh lain.
Memberikan izin IAM ke akun layanan Google SecOps
- Buka Cloud Storage > Buckets.
- Klik nama bucket Anda.
- Buka tab Izin.
- Klik Grant access.
- Berikan detail konfigurasi berikut:
- Add principals: Tempel email akun layanan Google SecOps
- Tetapkan peran: Pilih Storage Object Viewer
- Klik Simpan.
- Jika Anda berencana menggunakan opsi penghapusan (hapus file yang ditransfer), berikan peran Storage Object Admin, bukan Storage Object Viewer.
Mengonfigurasi feed di Google SecOps untuk menyerap log JAMF Security Cloud
- Buka Setelan SIEM > Feed.
- Klik Tambahkan Feed Baru.
- Klik Konfigurasi satu feed.
- Di kolom Nama feed, masukkan nama untuk feed (misalnya,
JAMF Security Cloud logs). - Pilih Google Cloud Storage V2 sebagai Source type.
- Pilih JAMF Security Cloud sebagai Jenis log.
- Klik Berikutnya.
Tentukan nilai untuk parameter input berikut:
Kolom Nilai URI bucket penyimpanan gs://jamf-security-cloud-logs/jamf-security-cloud/Opsi Penghapusan Sumber Pilih opsi penghapusan sesuai preferensi Anda Usia File Maksimum (Hari) Defaultnya adalah 180 hari Namespace aset Namespace aset Label penyerapan Label yang akan diterapkan ke acara dari feed ini - Ganti
jamf-security-cloud-logsdengan nama bucket GCS Anda yang sebenarnya. - Selalu sertakan garis miring di akhir (
/) di akhir URI.
- Ganti
Klik Berikutnya.
Tinjau konfigurasi feed baru Anda di layar Selesaikan, lalu klik Kirim.
Tabel pemetaan UDM
| Kolom Log | Pemetaan UDM | Logika |
|---|---|---|
| event_data.account.parentId, event_data.action, event_data.device.os, event_data.dns.recordType, event_data.riskDetails.appRiskIndexThreshold, event_data.riskDetails.deviceRiskIndex, event_data.routeName, event_data.signatureId.id, event_data.signatureId.name, event_data.threat.result, event_data.tld, customer.parentId, customer.resellerId, device.deviceId, device.deviceName, device.carrier.carrierName, device.carrier.isoCountryCode, device.carrier.mcc, device.carrier.mnc, device.hw.deviceModel, device.hw.hwPlatform, device.hw.imei, device.hw.platform, device.lastNetworkTrafficUtcMs, device.lastUpdatedUtcMs, device.location.isoCountryCode, device.mdm.lastMdmCheckInUtcMs, device.mdm.mdmId, device.network.ssid, device.os.osVersion, device.state.activated, device.state.deploymentState, device.state.vpnActive, device.state.wifiActive, device.user.id, device.user.name, device.wanderaApp.version, trigger.triggerTimeUtcMs, trigger.triggerType, app.appId.packageName, app.appId.appName, app.appId.appVersion, app.category.label, app.category.system, app.installation.installationTimeUtcMs, app.installation.installedBy, app.developer, app.threats, app.permissions, event_data.accessPoint, event_data.alertId, event_data.event_dataType, event_data.software.softwareId, event_data.software.softwareVersion, event_data.software.softwareName, event_data.cve.id, event_data.cve.baseScore, event_data.cve.exploitAvailable, event_data.cve.attribution, event_data.threat.types, event_data.app.id, event_data.app.name, event_data.app.version | additional.fields | Digabungkan sebagai label dengan kunci dan nilai tertentu dari sumber |
| event_data.dns.ttl | dns_answers.ttl | Dikonversi ke uinteger |
| event_data.dns.category | dns_questions.name | Nilai disalin secara langsung |
| event_data.receiptTime | metadata.collected_timestamp | Nilai disalin secara langsung |
| event_data_event_dataType_description, event_data.cve.description | metadata.description | Nilai dari event_data_event_dataType_description jika tidak kosong, atau event_data.cve.description |
| has_principal, has_user | metadata.event_type | Ditetapkan ke STATUS_UPDATE jika has_principal benar, USER_UNCATEGORIZED jika has_user benar, atau GENERIC_EVENT |
| event_data.md1.product, md1.product | metadata.product_event_type | Nilai dari event_data.md1.product jika tidak kosong, atau md1.product |
| event_data.device.externalId, event_data.externalId | metadata.product_log_id | Nilai dari event_data.device.externalId jika tidak kosong, atau event_data.externalId |
| event_data.md1.schemaVersion, schemaVersion | metadata.product_version | Nilai dari event_data.md1.schemaVersion jika tidak kosong, atau schemaVersion |
| dns_answers | network.dns.answers | Digabungkan dari dns_answers |
| dns_questions | network.dns.questions | Digabungkan dari dns_questions |
| event_data.dns.responseStatus | network.dns.response | Setel ke benar (true) jika NOERROR, atau salah (false) |
| event_data.domain | principal.administrative_domain | Nilai disalin secara langsung |
| event_data.application | principal.application | Nilai disalin secara langsung |
| event_data.hostName, event_data.device.userDeviceName | principal.asset.hostname | Nilai dari event_data.hostName jika tidak kosong, atau event_data.device.userDeviceName |
| event_data.source.ip | principal.asset.ip | Nilai disalin secara langsung |
| event_data.hostName, event_data.device.userDeviceName | principal.hostname | Nilai dari event_data.hostName jika tidak kosong, atau event_data.device.userDeviceName |
| event_data.source.ip | principal.ip | Nilai disalin secara langsung |
| event_data.source.port | principal.port | Dikonversi ke bilangan bulat |
| event_data_event_dataType_id | principal.process.pid | Nilai disalin secara langsung |
| event_data.event_dataUrl, event_data.cve.consoleUrl | principal.url | Nilai dari event_data.event_dataUrl jika tidak kosong, atau event_data.cve.consoleUrl |
| device.user.email | principal.user.email_addresses | Digabungkan jika cocok dengan regex email |
| event_data.account.name, event_data.user.userName | principal.user.user_display_name | Nilai dari event_data.account.name jika tidak kosong, atau event_data.user.userName |
| event_data.account.customerId, customer.customerId, event_data.customerId, device.user.email | principal.user.userid | Nilai dari event_data.account.customerId jika tidak kosong, atau customer.customerId jika tidak kosong, atau event_data.customerId jika tidak kosong, atau device.user.email jika bukan email |
| event_data.blocked | security_result.action | Setel ke BLOCK jika benar, ALLOW jika salah |
| event_data_event_dataType_name | security_result.description | Nilai disalin secara langsung |
| app.threats, app.permissions, event_data.cve.id, event_data.cve.baseScore, event_data.cve.exploitAvailable, event_data.cve.attribution | security_result.detection_fields | Digabungkan sebagai label dari sumber |
| event_data.severity | security_result.severity | Ditetapkan ke INFORMATIONAL jika 2, LOW jika 4, MEDIUM jika 6, HIGH jika 8, CRITICAL jika 10 |
| event_data.blockReason | security_result.summary | Nilai disalin secara langsung |
| event_data.cve.cveDetailUrl | security_result.url_back_to_product | Nilai disalin secara langsung |
| event_data.device.deviceId | target.asset.asset_id | Digabungkan dengan awalan 'CS:' |
| event_data.destination.ips, event_data.destinationIp, event_data.destination.ip, device.carrier.ipAddress, device.network.assignedIp, device.network.publicIp | target.asset.ip | Digabungkan dari sumber |
| app_id_md5 | target.file.md5 | Nilai disalin secara langsung |
| app_id_sha1 | target.file.sha1 | Nilai disalin secara langsung |
| app_id_sha256 | target.file.sha256 | Nilai disalin secara langsung |
| event_data.destination.name | target.hostname | Nilai disalin secara langsung |
| event_data.destination.ips, event_data.destinationIp, event_data.destination.ip, device.carrier.ipAddress, device.network.assignedIp, device.network.publicIp | target.ip | Digabungkan dari sumber |
| device.location.countryName | target.location.country_or_region | Nilai disalin secara langsung |
| device.hw.wifiMacAddress, event_data.accessPointBssid, device.network.bssid | target.mac | Digabungkan dari sumber |
| event_data.device.osType, event_data_device_os_osType, device.os.osType | target.platform | Disetel ke WINDOWS jika cocok dengan Win, MAC jika IOS atau MAC_OS, LINUX jika Lin, atau UNKNOWN_PLATFORM jika tidak ada yang cocok, dari event_data terlebih dahulu, lalu perangkat |
| event_data_device_os_osVersion, device.os.osVersion | target.platform_version | Nilai dari event_data_device_os_osVersion jika tidak kosong, atau device.os.osVersion |
| event_data.destination.port | target.port | Dikonversi ke bilangan bulat |
| event_data.device.deviceName | target.resource.name | Nilai disalin secara langsung |
| event_data.user.email | target.user.email_addresses | Digabungkan jika cocok dengan regex email |
| event_data.user.email, event_data.user.name | target.user.userid | Nilai dari event_data.user.email jika bukan email, atau event_data.user.name |
| metadata.product_name | Tetapkan ke "JAMF_SECURITY_CLOUD" | |
| metadata.vendor_name | Tetapkan ke "JAMF_SECURITY_CLOUD" |
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.