JAMF Security Cloud のログを収集する
このドキュメントでは、Google Cloud Storage V2 を使用して JAMF Security Cloud ログを Google Security Operations に取り込む方法について説明します。
JAMF Security Cloud は、Apple デバイス向けのモバイル脅威対策とエンドポイント セキュリティ プラットフォームです。DNS レイヤ保護、フィッシング防止、コンテンツ フィルタリング、デバイス リスク評価を網羅する脅威検出、コンプライアンス、デバイス セキュリティのイベントログを生成します。
始める前に
次の前提条件を満たしていることを確認してください。
- Google SecOps インスタンス
- Cloud Storage API が有効になっている GCP プロジェクト
- GCS バケットと IAM ポリシーを作成および管理する権限
- JAMF Security Cloud ポータル(Jamf Threat Defense または Jamf Protect コンソール)への特権アクセス
Google Cloud Storage バケットを作成する
- Google Cloud コンソールに移動します。
- プロジェクトを選択するか、新しいプロジェクトを作成します。
- ナビゲーション メニューで、[Cloud Storage > バケット] に移動します。
- [バケットを作成] をクリックします。
次の構成情報を提供してください。
設定 値 バケットに名前を付ける グローバルに一意の名前( jamf-security-cloud-logsなど)を入力します。ロケーション タイプ ニーズに応じて選択します(リージョン、デュアルリージョン、マルチリージョン)。 ロケーション 場所を選択します(例: us-central1)。ストレージ クラス Standard(頻繁にアクセスされるログにおすすめ) アクセス制御 均一(推奨) 保護ツール 省略可: オブジェクトのバージョニングまたは保持ポリシーを有効にする [作成] をクリックします。
JAMF Security Cloud ログを Google Cloud Storage にエクスポートする
JAMF Security Cloud は、イベントデータをクラウド ストレージの宛先にストリーミングすることをサポートしています。JAMF Security Cloud ポータルでデータ エクスポートを構成します。
- JAMF Security Cloud ポータルにログインします。
- [インテグレーション> データ ストリーム] に移動します。
- [ストリームを追加] をクリックします。
- サポートされている宛先タイプを選択します。JAMF Data Streams は、AWS S3 エンドポイントと汎用 HTTP エンドポイントをネイティブにサポートしています。Google Cloud Storage にログを配信するには、GCS に書き込む Cloud Run functions を使用して汎用 HTTP エンドポイントを使用するか、中間 S3 互換の宛先を構成します。
- 次の構成の詳細を指定します。
- ストリーム名: わかりやすい名前を入力します(例:
Chronicle GCS Export)。 - GCS バケット名: バケット名(例:
jamf-security-cloud-logs)を入力します。 - パス接頭辞: フォルダの接頭辞を入力します(例:
jamf-security-cloud/)。 - 出力形式: [JSON] を選択します(Chronicle の取り込みにおすすめ)。
- ストリーム名: わかりやすい名前を入力します(例:
- GCS バケットに対する書き込みアクセス権を持つ GCP サービス アカウントの認証情報の JSON キーをアップロードまたは貼り付けます。
- エクスポートするイベントタイプを選択します。
- 脅威イベント(ネットワークの脅威、フィッシング、マルウェア)
- デバイスのコンプライアンス イベント
- DNS セキュリティ イベント
- アプリのリスク イベント
- [保存](または [作成])をクリックします。
- ログファイルが、指定した接頭辞の下の GCS バケットに表示され始めることを確認します。
- エクスポートに使用する GCP サービス アカウントに、ターゲット バケットに対する Storage オブジェクト作成者ロールがあることを確認します。
- ログファイルは JSON 形式で書き込まれ、各ファイルには 1 つ以上のイベント レコードが含まれています。
Google SecOps サービス アカウントを取得する
- Google SecOps コンソールにログインします。
- [SIEM 設定] > [フィード] に移動します。
- [Add New Feed] をクリックします。
- [単一フィードを設定] をクリックします。
- [ソースタイプ] として [Google Cloud Storage V2] を選択します。
- [ログタイプ] として [JAMF Security Cloud] を選択します。
[サービス アカウントを取得する] をクリックします。一意のサービス アカウントのメールアドレスが表示されます(例:)。
chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.comこのメールアドレスをコピーします。次のステップでこれを使用します。
- Google SecOps インスタンスごとに一意のサービス アカウントがあります。他のドキュメントや例のサービス アカウントは使用しないでください。
Google SecOps サービス アカウントに IAM 権限を付与する
- [Cloud Storage] > [バケット] に移動します。
- バケット名をクリックします。
- [権限] タブに移動します。
- [アクセス権を付与] をクリックします。
- 次の構成の詳細を指定します。
- プリンシパルを追加: Google SecOps サービス アカウントのメールアドレスを貼り付けます。
- ロールを割り当てる: [Storage オブジェクト閲覧者] を選択します。
- [保存] をクリックします。
- 削除オプション(転送されたファイルを削除する)を使用する場合は、Storage オブジェクト閲覧者ではなく、Storage オブジェクト管理者ロールを付与します。
JAMF Security Cloud のログを取り込むように Google SecOps でフィードを構成する
- [SIEM 設定] > [フィード] に移動します。
- [Add New Feed] をクリックします。
- [単一フィードを設定] をクリックします。
- [フィード名] フィールドに、フィードの名前を入力します(例:
JAMF Security Cloud logs)。 - [ソースタイプ] として [Google Cloud Storage V2] を選択します。
- [ログタイプ] として [JAMF Security Cloud] を選択します。
- [次へ] をクリックします。
次の入力パラメータの値を指定します。
フィールド 値 ストレージ バケット URI gs://jamf-security-cloud-logs/jamf-security-cloud/ソース削除オプション 必要に応じて削除オプションを選択します。 最大ファイル経過日数 デフォルトは 180 日 アセットの名前空間 アセットの名前空間 取り込みラベル このフィードのイベントに適用されるラベル jamf-security-cloud-logsは、実際の GCS バケット名に置き換えます。- URI の末尾には必ず末尾のスラッシュ(
/)を含めてください。
[次へ] をクリックします。
[Finalize] 画面で新しいフィードの設定を確認し、[送信] をクリックします。
UDM マッピング テーブル
| ログフィールド | UDM マッピング | ロジック |
|---|---|---|
| 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 | ソースから特定のキーと値を持つラベルとして統合 |
| event_data.dns.ttl | dns_answers.ttl | uinteger に変換済み |
| event_data.dns.category | dns_questions.name | 値を直接コピー |
| event_data.receiptTime | metadata.collected_timestamp | 値を直接コピー |
| event_data_event_dataType_description、event_data.cve.description | metadata.description | event_data_event_dataType_description の値(空でない場合)、それ以外の場合は event_data.cve.description |
| has_principal、has_user | metadata.event_type | has_principal が true の場合は STATUS_UPDATE、has_user が true の場合は USER_UNCATEGORIZED、それ以外の場合は GENERIC_EVENT に設定します。 |
| event_data.md1.product, md1.product | metadata.product_event_type | event_data.md1.product が空でない場合はその値、それ以外の場合は md1.product |
| event_data.device.externalId、event_data.externalId | metadata.product_log_id | event_data.device.externalId が空でない場合はその値、それ以外の場合は event_data.externalId |
| event_data.md1.schemaVersion、schemaVersion | metadata.product_version | event_data.md1.schemaVersion の値(空でない場合)、それ以外の場合は schemaVersion |
| dns_answers | network.dns.answers | dns_answers から統合 |
| dns_questions | network.dns.questions | dns_questions から統合 |
| event_data.dns.responseStatus | network.dns.response | NOERROR の場合は true、それ以外の場合は false に設定します。 |
| event_data.domain | principal.administrative_domain | 値を直接コピー |
| event_data.application | principal.application | 値を直接コピー |
| event_data.hostName、event_data.device.userDeviceName | principal.asset.hostname | event_data.hostName が空でない場合はその値、それ以外の場合は event_data.device.userDeviceName |
| event_data.source.ip | principal.asset.ip | 値を直接コピー |
| event_data.hostName、event_data.device.userDeviceName | principal.hostname | event_data.hostName が空でない場合はその値、それ以外の場合は event_data.device.userDeviceName |
| event_data.source.ip | principal.ip | 値を直接コピー |
| event_data.source.port | principal.port | 整数に変換しました |
| event_data_event_dataType_id | principal.process.pid | 値を直接コピー |
| event_data.event_dataUrl、event_data.cve.consoleUrl | principal.url | event_data.event_dataUrl が空でない場合はその値、それ以外の場合は event_data.cve.consoleUrl |
| device.user.email | principal.user.email_addresses | メールの正規表現に一致する場合に統合 |
| event_data.account.name、event_data.user.userName | principal.user.user_display_name | event_data.account.name が空でない場合はその値、それ以外の場合は event_data.user.userName |
| event_data.account.customerId、customer.customerId、event_data.customerId、device.user.email | principal.user.userid | event_data.account.customerId が空でない場合はその値、空の場合は customer.customerId が空でない場合はその値、空の場合は event_data.customerId が空でない場合はその値、空の場合は device.user.email がメールアドレスでない場合はその値 |
| event_data.blocked | security_result.action | true の場合は BLOCK、false の場合は ALLOW に設定します。 |
| event_data_event_dataType_name | security_result.description | 値を直接コピー |
| app.threats、app.permissions、event_data.cve.id、event_data.cve.baseScore、event_data.cve.exploitAvailable、event_data.cve.attribution | security_result.detection_fields | ソースからラベルとして統合 |
| event_data.severity | security_result.severity | 2 の場合は INFORMATIONAL、4 の場合は LOW、6 の場合は MEDIUM、8 の場合は HIGH、10 の場合は CRITICAL に設定します。 |
| event_data.blockReason | security_result.summary | 値を直接コピー |
| event_data.cve.cveDetailUrl | security_result.url_back_to_product | 値を直接コピー |
| event_data.device.deviceId | target.asset.asset_id | 「CS:」の接頭辞と連結されます |
| event_data.destination.ips、event_data.destinationIp、event_data.destination.ip、device.carrier.ipAddress、device.network.assignedIp、device.network.publicIp | target.asset.ip | ソースから統合 |
| app_id_md5 | target.file.md5 | 値を直接コピー |
| app_id_sha1 | target.file.sha1 | 値を直接コピー |
| app_id_sha256 | target.file.sha256 | 値を直接コピー |
| event_data.destination.name | target.hostname | 値を直接コピー |
| event_data.destination.ips、event_data.destinationIp、event_data.destination.ip、device.carrier.ipAddress、device.network.assignedIp、device.network.publicIp | target.ip | ソースから統合 |
| device.location.countryName | target.location.country_or_region | 値を直接コピー |
| device.hw.wifiMacAddress、event_data.accessPointBssid、device.network.bssid | target.mac | ソースから統合 |
| event_data.device.osType、event_data_device_os_osType、device.os.osType | target.platform | event_data、デバイスの順に、Win と一致する場合は WINDOWS、IOS または MAC_OS と一致する場合は MAC、Lin と一致する場合は LINUX、それ以外の場合は UNKNOWN_PLATFORM に設定します。 |
| event_data_device_os_osVersion、device.os.osVersion | target.platform_version | event_data_device_os_osVersion が空でない場合はその値、それ以外の場合は device.os.osVersion |
| event_data.destination.port | target.port | 整数に変換しました |
| event_data.device.deviceName | target.resource.name | 値を直接コピー |
| event_data.user.email | target.user.email_addresses | メールの正規表現に一致する場合に統合 |
| event_data.user.email、event_data.user.name | target.user.userid | メールアドレスでない場合は event_data.user.email の値、メールアドレスの場合は event_data.user.name |
| metadata.product_name | 「JAMF_SECURITY_CLOUD」に設定 | |
| metadata.vendor_name | 「JAMF_SECURITY_CLOUD」に設定 | |
user.userEmail |
principal.user.email_addresses |
変更履歴からマッピング |
timestamp |
metadata.event_timestamp |
変更履歴からマッピング |
eventTimeUtcMs |
additional.fields |
変更履歴からマッピング |
cve.severity |
security_result.severity |
変更履歴からマッピング |
app.id", "app.name", "app.version |
additional.fields |
変更履歴からマッピング |
変更履歴
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。