Mengumpulkan log Jamf Security Cloud
Dokumen ini menjelaskan cara menyerap log Jamf Security Cloud ke Google Security Operations menggunakan Google Cloud Storage atau Amazon S3. Jamf Security Cloud adalah platform keamanan endpoint dan perlindungan dari ancaman seluler untuk perangkat Apple. Alat ini menghasilkan log peristiwa deteksi ancaman, kepatuhan, dan keamanan perangkat yang mencakup perlindungan lapisan DNS, pencegahan phishing, pemfilteran konten, dan penilaian risiko perangkat. Jamf Security Cloud mengekspor log menggunakan Data Streams. Setiap konfigurasi aliran data mengirimkan tepat satu jenis data ke satu tujuan.
Sebelum memulai
Pastikan Anda memiliki prasyarat berikut:
- Instance Google SecOps
- Akses istimewa ke portal Jamf Security Cloud
- Untuk Metode 1: akses istimewa ke Google Cloud (Google Cloud Storage, Cloud Run)
- Untuk Metode 2: akses istimewa ke AWS (S3, IAM)
Pilih jenis aliran data yang akan diekspor
Parser Jamf Security Cloud mendukung keenam jenis aliran data. Buat konfigurasi aliran data terpisah untuk setiap jenis data yang ingin Anda masukkan:
- Peristiwa ancaman: peristiwa ancaman yang terdeteksi, termasuk komunikasi jaringan berbahaya, malware, dan aplikasi berisiko
- Traffic jaringan: log traffic jaringan yang diproses oleh infrastruktur jaringan Jamf
- Akses peristiwa: permintaan yang diizinkan dan ditolak dari kebijakan Jamf Connect Zero Trust Network Access (ZTNA)
- Data perangkat: informasi tentang perangkat
- Insight aplikasi: informasi tentang aplikasi yang diinstal di perangkat
- Data kerentanan: detail tentang setiap kerentanan yang ditemukan dan perangkat tempat kerentanan tersebut ditemukan
Metode 1: Google Cloud Penyimpanan
Jamf Security Cloud tidak memiliki tujuan penyimpanan bawaan Google Cloud , dan Jamf mencatat bahwa pengiriman data langsung ke Google SecOps menggunakan integrasi HTTP tidak didukung. Metode ini menggunakan target aliran data HTTP Generik untuk mengirim peristiwa ke fungsi Cloud Run milik Anda, yang menuliskannya ke bucket Google Cloud Storage. Kemudian, Google SecOps akan memproses bucket menggunakan feed Storage V2. Google Cloud
Buat Google Cloud Bucket penyimpanan
- Buka Google Cloud console.
- 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)Storage class Standar (direkomendasikan untuk log yang sering diakses) Access control Seragam (direkomendasikan) Alat perlindungan Opsional: Aktifkan pembuatan versi objek atau kebijakan retensi Klik Create.
Buat akun layanan untuk fungsi Cloud Run
- Di GCP Console, buka IAM & Admin > Service Accounts.
- Klik Create Service Account.
- Berikan detail konfigurasi berikut:
- Nama akun layanan: Masukkan
jamf-sc-receiver-sa - Deskripsi akun layanan: Masukkan
Service account for the Cloud Run function that receives Jamf Security Cloud events
- Nama akun layanan: Masukkan
- Klik Create and Continue.
- Klik Done.
Memberi akun layanan akses ke bucket
- Buka Cloud Storage > Buckets.
- Klik nama bucket Anda.
- Buka tab Izin.
- Klik Grant access.
- Berikan detail konfigurasi berikut:
- Tambahkan prinsipal: Masukkan email akun layanan (misalnya,
jamf-sc-receiver-sa@PROJECT_ID.iam.gserviceaccount.com) - Tetapkan peran: Pilih Storage Object Admin
- Tambahkan prinsipal: Masukkan email akun layanan (misalnya,
- Klik Simpan.
Membuat fungsi Cloud Run untuk menerima peristiwa
- Buat token autentikasi yang kuat dan simpan untuk referensi di masa mendatang (misalnya, jalankan
openssl rand -hex 32). Jamf Security Cloud mengirimkan token ini di header permintaan, dan fungsi menolak permintaan tanpa token ini. - Di Konsol GCP, buka Cloud Run.
- Klik Create service.
- Pilih Function (gunakan editor inline untuk membuat fungsi).
Di bagian Konfigurasi, berikan detail konfigurasi berikut:
Setelan Nilai Nama layanan jamf-sc-receiverRegion Pilih region yang cocok dengan bucket Cloud Storage Anda (misalnya, us-central1)Runtime Pilih Python 3.12 atau yang lebih baru Di bagian Autentikasi, pilih Izinkan pemanggilan tanpa autentikasi.
Luaskan Containers, Networking, Security.
Buka tab Security:
- Akun layanan: Pilih
jamf-sc-receiver-sa
- Akun layanan: Pilih
Buka tab Containers:
- Klik Variables & Secrets.
- Klik + Add variable untuk setiap variabel lingkungan:
Nama Variabel Nilai Contoh Deskripsi GCS_BUCKETjamf-security-cloud-logsNama bucket Cloud Storage GCS_PREFIXjamf-security-cloud/Awalan untuk file log AUTH_TOKEN<your-generated-token>Token yang dikirim Jamf Security Cloud di header X-Auth-TokenKlik Create.
Tunggu hingga layanan dibuat. Setelah layanan dibuat, editor kode inline akan terbuka secara otomatis.
Masukkan main di kolom Entry point.
Di editor kode inline, buat dua file:
File pertama: main.py
import hashlib import os from datetime import datetime, timezone import functions_framework from google.cloud import storage BUCKET = os.environ["GCS_BUCKET"] PREFIX = os.environ.get("GCS_PREFIX", "jamf-security-cloud/") AUTH_TOKEN = os.environ["AUTH_TOKEN"] storage_client = storage.Client() @functions_framework.http def main(request): if request.headers.get("X-Auth-Token") != AUTH_TOKEN: return ("Unauthorized", 401) body = request.get_data() if not body: return ("OK", 200) now = datetime.now(timezone.utc) digest = hashlib.sha256(body).hexdigest()[:12] object_name = f"{PREFIX}{now:%Y/%m/%d}/{now:%Y%m%dT%H%M%S%f}_{digest}.json" storage_client.bucket(BUCKET).blob(object_name).upload_from_string( body, content_type="application/json" ) return ("OK", 200)File kedua: requirements.txt
functions-framework==3.* google-cloud-storage==2.*
Klik Simpan dan deploy ulang.
Salin dan simpan URL layanan (misalnya,
https://jamf-sc-receiver-abc123-uc.a.run.app). Anda akan menggunakan nama host di bagian berikutnya.
Mengonfigurasi aliran data HTTP generik di Jamf Security Cloud
- Login ke portal Jamf Security Cloud.
- Buka Integrasi > Aliran Data.
- Klik Konfigurasi baru.
- Pilih jenis aliran data (misalnya, Peristiwa ancaman).
- Pilih HTTP Generik sebagai jenis target aliran data.
- Klik Lanjutkan.
- Berikan detail konfigurasi berikut:
- Protokol: Pilih https
- Server Hostname/IP: Masukkan nama host layanan Cloud Run (misalnya,
jamf-sc-receiver-abc123-uc.a.run.app) - Port: Masukkan
443 - Endpoint: Masukkan
/ - Header Tambahan: Klik Tambahkan header dan masukkan nama
X-Auth-Tokendengan token yang dihasilkan sebagai nilai
- Klik Test Configuration dan pastikan pengujian berhasil.
- Klik tombol Aktifkan konfigurasi untuk mengaktifkan aliran data.
- Klik Simpan.
- Ulangi langkah-langkah ini untuk setiap jenis aliran data tambahan yang ingin Anda ekspor.
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.
Memberi akun layanan Google SecOps akses ke bucket
- 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.
Mengonfigurasi feed di Google SecOps untuk menyerap data dari Google Cloud Storage
- 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 peristiwa dari feed ini - Ganti
jamf-security-cloud-logsdengan nama bucket 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.
Metode 2: Amazon S3
AWS S3 milik pelanggan adalah satu-satunya tujuan penyimpanan cloud yang didukung secara native oleh Jamf Security Cloud Data Streams. Jamf Security Cloud menulis peristiwa langsung ke bucket S3 Anda, dan Google SecOps menyerapnya menggunakan feed Amazon S3 V2.
Mengonfigurasi bucket AWS S3 dan peran IAM untuk Jamf Security Cloud
- Buat bucket Amazon S3 dengan mengikuti panduan pengguna ini: Membuat bucket
- Simpan Name dan Region bucket untuk referensi di masa mendatang (misalnya,
jamf-security-cloud-logs). Buat peran IAM yang diasumsikan Jamf Security Cloud untuk mengupload data ke bucket. Peran ini memerlukan izin
s3:PutObjectdi bucket dan akun AWS Jamf yang tercantum sebagai entitas tepercaya.Simpan peran IAM
ARNuntuk referensi di masa mendatang.
Mengonfigurasi aliran data AWS S3 milik pelanggan di Jamf Security Cloud
- Login ke portal Jamf Security Cloud.
- Buka Integrasi > Aliran Data.
- Klik Konfigurasi baru.
- Pilih jenis aliran data (misalnya, Peristiwa ancaman).
- Pilih AWS S3 milik pelanggan sebagai jenis target aliran data.
- Klik Lanjutkan.
- Berikan detail konfigurasi berikut:
- Nama bucket Amazon S3: Masukkan nama bucket (misalnya,
jamf-security-cloud-logs) - Peran IAM yang diasumsikan oleh Jamf: Masukkan ARN peran IAM yang Anda buat untuk Jamf Security Cloud
- Region: Pilih region bucket S3 Anda
- Nama bucket Amazon S3: Masukkan nama bucket (misalnya,
- Klik Create configuration.
Opsional: Di Setelan lanjutan, pilih JSON sebagai format pesan.
Klik tombol Aktifkan konfigurasi untuk mengaktifkan aliran data.
Klik Simpan.
Ulangi langkah-langkah ini untuk setiap jenis aliran data tambahan yang ingin Anda ekspor.
Membuat pengguna IAM dan kunci akses untuk Google SecOps
- 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 file .csv untuk menyimpan Kunci Akses dan Kunci Akses Rahasia untuk referensi di masa mendatang.
- Klik Done.
- Pilih tab Izin.
- Klik Tambahkan izin di bagian Kebijakan izin.
- Pilih Tambahkan izin.
- Pilih Lampirkan kebijakan secara langsung.
- Telusuri kebijakan AmazonS3FullAccess.
- Pilih kebijakan.
- Klik Berikutnya.
- Klik Add permissions.
Mengonfigurasi feed di Google SecOps untuk melakukan penyerapan dari Amazon S3
- 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 Amazon S3 V2 sebagai Jenis sumber.
- Pilih JAMF Security Cloud sebagai Jenis log.
- Klik Berikutnya.
Tentukan nilai untuk parameter input berikut:
Kolom Nilai URI S3 s3://jamf-security-cloud-logs/Opsi penghapusan sumber Pilih opsi penghapusan sesuai preferensi Anda Usia File Maksimum (Hari) Defaultnya adalah 180 hari ID Kunci Akses Kunci akses pengguna dengan akses ke bucket S3 Kunci Akses Rahasia Kunci rahasia pengguna dengan akses ke bucket S3 Namespace aset Namespace aset Label penyerapan Label yang akan diterapkan ke peristiwa dari feed ini - Ganti
jamf-security-cloud-logsdengan nama bucket S3 Anda yang sebenarnya.
- Ganti
Klik Berikutnya.
Tinjau konfigurasi feed baru Anda di layar Selesaikan, lalu klik Kirim.
Tabel pemetaan UDM
| Kolom Log | Pemetaan UDM | Logika |
|---|---|---|
accessPoint_label |
additional.fields |
Digabung |
action_label |
additional.fields |
Digabung |
activated_label |
additional.fields |
Digabung |
alertId_label |
additional.fields |
Digabung |
appName_label |
additional.fields |
Digabung |
appRiskIndexThreshold_label |
additional.fields |
Digabung |
appVersion_label |
additional.fields |
Digabung |
app_id_label |
additional.fields |
Digabung |
carrierName_label |
additional.fields |
Digabung |
category_label |
additional.fields |
Digabung |
deploymentState_label |
additional.fields |
Digabung |
developer_label |
additional.fields |
Digabung |
deviceId_label |
additional.fields |
Digabung |
deviceModel_label |
additional.fields |
Digabung |
deviceName_label |
additional.fields |
Digabung |
deviceRiskIndex_label |
additional.fields |
Digabung |
device_os_label |
additional.fields |
Digabung |
device_user_name_label |
additional.fields |
Digabung |
eventTimeUtcMs_label |
additional.fields |
Digabung |
eventType_label |
additional.fields |
Digabung |
hwPlatform_label |
additional.fields |
Digabung |
imei_label |
additional.fields |
Digabung |
installationTimeUtcMs_label |
additional.fields |
Digabung |
installedBy_label |
additional.fields |
Digabung |
isoCountryCode_label |
additional.fields |
Digabung |
lastMdmCheckInUtcMs_label |
additional.fields |
Digabung |
lastNetworkTrafficUtcMs_label |
additional.fields |
Digabung |
lastUpdatedUtcMs_label |
additional.fields |
Digabung |
loc_isoCountryCode_label |
additional.fields |
Digabung |
mcc_label |
additional.fields |
Digabung |
mdmId_label |
additional.fields |
Digabung |
mnc_label |
additional.fields |
Digabung |
osVersion_label |
additional.fields |
Digabung |
packageName_label |
additional.fields |
Digabung |
parentId_label |
additional.fields |
Digabung |
parentId_label_1 |
additional.fields |
Digabung |
platform_label |
additional.fields |
Digabung |
profileId_label |
additional.fields |
Digabung |
profileName_label |
additional.fields |
Digabung |
profileStatus_label |
additional.fields |
Digabung |
recordType_label |
additional.fields |
Digabung |
resellerId_label |
additional.fields |
Digabung |
routeName_label |
additional.fields |
Digabung |
signatureId_id_label |
additional.fields |
Digabung |
signatureId_name_label |
additional.fields |
Digabung |
softwareId_label |
additional.fields |
Digabung |
softwareName_label |
additional.fields |
Digabung |
softwareVersion_label |
additional.fields |
Digabung |
ssid_label |
additional.fields |
Digabung |
system_label |
additional.fields |
Digabung |
threat_result_label |
additional.fields |
Digabung |
triggerTimeUtcMs_label |
additional.fields |
Digabung |
triggerType_label |
additional.fields |
Digabung |
types_list |
additional.fields |
Digabung |
userId_label |
additional.fields |
Digabung |
user_tld_label |
additional.fields |
Digabung |
vpnActive_label |
additional.fields |
Digabung |
wanderaAppVersion_label |
additional.fields |
Digabung |
wifiActive_label |
additional.fields |
Digabung |
event_data.receiptTime |
metadata.collected_timestamp |
Dipetakan secara langsung |
event_data.cve.description |
metadata.description |
Dipetakan secara langsung |
event_data_event_dataType_description |
metadata.description |
Dipetakan secara langsung |
event_data.timestamp |
metadata.event_timestamp |
Diurai sebagai yyyy-MM-ddTHH:mm:ss.SSSZ |
has_principal |
metadata.event_type |
Dipetakan: true → STATUS_UPDATE |
has_user |
metadata.event_type |
Dipetakan: true → USER_UNCATEGORIZED |
event_data.md1.product |
metadata.product_event_type |
Dipetakan secara langsung |
md1.product |
metadata.product_event_type |
Dipetakan secara langsung |
event_data.device.externalId |
metadata.product_log_id |
Dipetakan secara langsung |
event_data.externalId |
metadata.product_log_id |
Dipetakan secara langsung |
md1.product |
metadata.product_name |
Dipetakan secara langsung |
event_data.md1.schemaVersion |
metadata.product_version |
Dipetakan secara langsung |
schemaVersion |
metadata.product_version |
Dipetakan secara langsung |
dns_answers |
network.dns.answers |
Digabung |
dns_questions |
network.dns.questions |
Digabung |
event_data.domain |
principal.administrative_domain |
Dipetakan secara langsung |
event_data.application |
principal.application |
Dipetakan secara langsung |
event_data.hostName |
principal.asset.hostname |
Dipetakan secara langsung |
event_data.source.ip |
principal.asset.ip |
Digabung |
event_data.device.userDeviceName |
principal.hostname |
Dipetakan secara langsung |
event_data.hostName |
principal.hostname |
Dipetakan secara langsung |
event_data.source.ip |
principal.ip |
Digabung |
event_data.source.port |
principal.port |
Diganti nama/dipetakan |
event_data_event_dataType_id |
principal.process.pid |
Dipetakan secara langsung |
event_data.cve.consoleUrl |
principal.url |
Dipetakan secara langsung |
event_data.event_dataUrl |
principal.url |
Dipetakan secara langsung |
device.user.email |
principal.user.email_addresses |
Digabung |
event_data.user.userEmail |
principal.user.email_addresses |
Digabung |
event_data.account.name |
principal.user.user_display_name |
Dipetakan secara langsung |
event_data.user.userName |
principal.user.user_display_name |
Dipetakan secara langsung |
customer.customerId |
principal.user.userid |
Dipetakan secara langsung |
customerId |
principal.user.userid |
Dipetakan secara langsung |
device.user.email |
principal.user.userid |
Dipetakan secara langsung |
event_data.account.customerId |
principal.user.userid |
Dipetakan secara langsung |
event_data.customerId |
principal.user.userid |
Dipetakan secara langsung |
actionforBlocked |
security_result.action |
Digabung |
event_data_event_dataType_name |
security_result.description |
Dipetakan secara langsung |
attribution_label |
security_result.detection_fields |
Digabung |
baseScore_label |
security_result.detection_fields |
Digabung |
cve_id_label |
security_result.detection_fields |
Digabung |
exploitAvailable_label |
security_result.detection_fields |
Digabung |
permission_label |
security_result.detection_fields |
Digabung |
threats_label |
security_result.detection_fields |
Digabung |
event_data.cve.severity |
security_result.severity |
Dipetakan secara langsung |
event_data.blockReason |
security_result.summary |
Dipetakan secara langsung |
event_data.cve.cveDetailUrl |
security_result.url_back_to_product |
Dipetakan secara langsung |
event_data.device.deviceId |
target.asset.asset_id |
Dipetakan secara langsung |
event_data.destination.name |
target.asset.hostname |
Dipetakan secara langsung |
device.carrier.ipAddress |
target.asset.ip |
Digabung |
device.network.assignedIp |
target.asset.ip |
Digabung |
device.network.publicIp |
target.asset.ip |
Digabung |
event_data.destination.ip |
target.asset.ip |
Digabung |
event_data.destinationIp |
target.asset.ip |
Digabung |
ip |
target.asset.ip |
Digabung |
app_id_md5 |
target.file.md5 |
Dipetakan secara langsung |
app_id_sha1 |
target.file.sha1 |
Dipetakan secara langsung |
app_id_sha256 |
target.file.sha256 |
Dipetakan secara langsung |
event_data.destination.name |
target.hostname |
Dipetakan secara langsung |
device.carrier.ipAddress |
target.ip |
Digabung |
device.network.assignedIp |
target.ip |
Digabung |
device.network.publicIp |
target.ip |
Digabung |
event_data.destination.ip |
target.ip |
Digabung |
event_data.destinationIp |
target.ip |
Digabung |
ip |
target.ip |
Digabung |
device.location.countryName |
target.location.country_or_region |
Dipetakan secara langsung |
event_data.location |
target.location.name |
Dipetakan secara langsung |
device.hw.wifiMacAddress |
target.mac |
Digabung |
device.network.bssid |
target.mac |
Digabung |
event_data.accessPointBssid |
target.mac |
Digabung |
event_data_device_os_osVersion |
target.platform_version |
Dipetakan secara langsung |
event_data.destination.port |
target.port |
Diganti nama/dipetakan |
event_data.device.deviceName |
target.resource.name |
Dipetakan secara langsung |
event_data.user.email |
target.user.email_addresses |
Digabung |
event_data.user.email |
target.user.userid |
Dipetakan secara langsung |
event_data.user.name |
target.user.userid |
Dipetakan secara langsung |
| T/A | metadata.event_type |
Konstanta: STATUS_UPDATE |
| T/A | metadata.product_name |
Konstanta: JAMF_SECURITY_CLOUD |
| T/A | metadata.vendor_name |
Konstanta: JAMF_SECURITY_CLOUD |
| T/A | security_result.severity |
Konstanta: INFORMATIONAL |
| T/A | target.platform |
Konstanta: WINDOWS |
Log Perubahan
Melihat Log Perubahan untuk parser ini
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.