Sysdig ログを収集する
このパーサーは、Sysdig JSON ログからセキュリティ イベントデータを抽出し、未加工のログフィールドを変換して Google Security Operations UDM 形式にマッピングします。メタデータ、プリンシパル/ターゲット情報、セキュリティ結果の詳細、Kubernetes 関連のコンテキストなど、さまざまなフィールドを処理し、Google SecOps 内で分析するためのデータを拡充します。また、パーサーは、フィールド値に基づいてデータ型の変換、エラー処理、条件付きロジックも実行し、正確で包括的な UDM 表現を実現します。
始める前に
- Google SecOps インスタンスがあることを確認します。
- Sysdig Secure への特権アクセス権があることを確認します。
Webhook フィードの API キーを作成する
Google Cloud コンソール > [認証情報] に移動します。
[認証情報を作成] をクリックして [API キー] を選択します。
API キーのアクセスを Google Security Operations API に制限します。
オプション 1
Google SecOps で Webhook フィードを構成して Sysdig ログを取り込む
- [SIEM 設定] > [フィード] に移動します。
- [新しく追加] をクリックします。
- [フィード名] フィールドに、フィードの名前を入力します(例: Sysdig ログ)。
- [ソースタイプ] として [Webhook] を選択します。
- [ログタイプ] で [Sysdig] を選択します。
- [次へ] をクリックします。
- 省略可: 次の入力パラメータの値を指定します。
- 分割区切り文字: ログ行を区切るために使用される区切り文字(
\n
など)。 - アセットの名前空間: アセットの名前空間。
- 取り込みラベル: このフィードのイベントに適用されるラベル。
- 分割区切り文字: ログ行を区切るために使用される区切り文字(
- [次へ] をクリックします。
- [Finalize] 画面でフィードの設定を確認し、[送信] をクリックします。
- [秘密鍵を生成する] をクリックして、このフィードを認証するためのシークレット キーを生成します。
- シークレット キーをコピーして保存します。この秘密鍵を再び表示することはできません。必要に応じて、新しい秘密鍵を再生成できますが、この操作により以前の秘密鍵は無効になります。
- [詳細] タブで、[エンドポイント情報] フィールドから、フィードのエンドポイント URL をコピーします。このエンドポイント URL は、クライアント アプリケーションで指定する必要があります。
- [完了] をクリックします。
エンドポイント URL を指定する
- クライアント アプリケーションで、Webhook フィードで指定された HTTPS エンドポイント URL を指定します。
次の形式でカスタム ヘッダーの一部として API キーとシークレット キーを指定して、認証を有効にします。
X-goog-api-key = API_KEY X-Webhook-Access-Key = SECRET
推奨事項: API キーは URL ではなくヘッダーとして指定してください。
Webhook クライアントがカスタム ヘッダーをサポートしていない場合は、次の形式のクエリ パラメータを使用して API キーとシークレット キーを指定できます。
ENDPOINT_URL?key=API_KEY&secret=SECRET
次のように置き換えます。
ENDPOINT_URL
: フィードのエンドポイント URL。API_KEY
: Google SecOps に対する認証に使用する API キー。SECRET
: フィードの認証用に生成したシークレット キー。
Sysdig で Webhook を構成する
- 管理者権限で Sysdig Secure にログインします。
- [プロフィール] > [設定] > [イベント転送] に移動します。
- [+ 統合を追加] をクリックし、プルダウンから [Webhook] を選択します。
次の入力パラメータの値を指定します。
- 統合名: Webhook のわかりやすい名前を入力します(例: Google SecOps Webhook)。
- エンドポイント: Webhook
<ENDPOINT_URL>
に続けて<API_KEY
と<SECRET>
を入力します。 送信するデータ: 転送する Sysdig データの種類をプルダウンから選択します。
統合をテストしてから、[有効] を切り替えて有効にします。
[保存] をクリックします。
オプション 2
データを Google SecOps に直接転送する
- 管理者の認証情報を使用して Sysdig Secure にログインします。
- [設定] > [イベント転送] に移動します。
- [+ 統合を追加] をクリックし、プルダウンから [Google Chronicle] を選択します。
- 次の入力パラメータの値を指定します。
- 統合名: 統合のわかりやすい名前を入力します(例: Google SecOps 統合)。
- お客様 ID: GCP アカウントに関連付けられている Google お客様 ID。(Google SecOps では、[設定] > [プロファイル] で確認できます)。
- Namespace: 省略可。タグとして使用して、インデックス登録と拡充に適したデータドメインを識別します。
- JSON 認証情報: Google SecOps JSON 認証情報をアップロードします。
- リージョン: 米国、ヨーロッパ、アジアなどのリージョンを選択します。
- 送信するデータ: 転送する Sysdig データの種類をプルダウンから選択します。
- 統合をテストしてから、[有効] を切り替えて有効にします。
- [保存] をクリックします。
UDM マッピング テーブル
ログフィールド | UDM マッピング | ロジック |
---|---|---|
agentId |
read_only_udm.metadata.product_deployment_id |
元のログの agentId の値は、この UDM フィールドに直接マッピングされます。 |
category |
read_only_udm.security_result.category_details |
元のログの category の値は、この UDM フィールドに直接マッピングされます。 |
content.fields.container.id |
read_only_udm.target.asset.asset_id |
元のログの content.fields.container.id の値に「container_id:」が追加され、この UDM フィールドにマッピングされます。containerId が空の場合に使用されます。 |
content.fields.container.image.repository |
read_only_udm.target.file.full_path |
元のログの content.fields.container.image.repository の値は、この UDM フィールドに直接マッピングされます。 |
content.fields.container.image.tag |
read_only_udm.metadata.ingestion_labels.value (キーが tag の場合) |
元のログの content.fields.container.image.tag の値は、この UDM フィールドに直接マッピングされます。 |
content.fields.evt.res |
read_only_udm.metadata.ingestion_labels.value (キーが evt_res の場合) |
元のログの content.fields.evt.res の値は、この UDM フィールドに直接マッピングされます。 |
content.fields.evt.type |
read_only_udm.metadata.event_type |
元のログの content.fields.evt.type の値は、この UDM フィールドに直接マッピングされます。 |
content.fields.falco.rule |
read_only_udm.security_result.rule_name |
元のログの content.fields.falco.rule の値は、この UDM フィールドに直接マッピングされます。content.ruleName が空の場合に使用されます。 |
content.fields.group.gid |
read_only_udm.target.group.product_object_id |
元のログの content.fields.group.gid の値は、この UDM フィールドに直接マッピングされます。 |
content.fields.group.name |
read_only_udm.target.group.group_display_name |
元のログの content.fields.group.name の値は、この UDM フィールドに直接マッピングされます。 |
content.fields.proc.cmdline |
read_only_udm.target.process.command_line |
元のログの content.fields.proc.cmdline の値は、この UDM フィールドに直接マッピングされます。 |
content.fields.proc.pcmdline |
read_only_udm.target.process.parent_process.command_line |
元のログの content.fields.proc.pcmdline の値は、この UDM フィールドに直接マッピングされます。 |
content.fields.proc.pid |
read_only_udm.target.process.pid |
元のログの content.fields.proc.pid の値は、この UDM フィールドに直接マッピングされます。 |
content.fields.proc.ppid |
read_only_udm.target.process.parent_process.pid |
元のログの content.fields.proc.ppid の値は、この UDM フィールドに直接マッピングされます。 |
content.fields.proc.sid |
read_only_udm.metadata.ingestion_labels.value (キーは sid ) |
元のログの content.fields.proc.sid の値は、この UDM フィールドに直接マッピングされます。 |
content.fields.user.loginname |
read_only_udm.principal.user.user_display_name |
元のログの content.fields.user.loginname の値は、この UDM フィールドに直接マッピングされます。 |
content.fields.user.uid |
read_only_udm.principal.user.userid |
元のログの content.fields.user.uid の値は、この UDM フィールドに直接マッピングされます。 |
content.output |
read_only_udm.additional.fields.value.string_value (キーが content_output の場合) |
元のログの content.output の値は、この UDM フィールドに直接マッピングされます。 |
content.policyId |
read_only_udm.security_result.rule_id |
元のログの content.policyId の値は、この UDM フィールドに直接マッピングされます。 |
content.policyOrigin |
read_only_udm.additional.fields.value.string_value (キーが content_policyOrigin の場合) |
元のログの content.policyOrigin の値は、この UDM フィールドに直接マッピングされます。 |
content.policyVersion |
read_only_udm.additional.fields.value.string_value (キーが content_policyVersion の場合) |
元のログの content.policyVersion の値は、この UDM フィールドに直接マッピングされます。 |
content.ruleName |
read_only_udm.security_result.rule_name |
元のログの content.ruleName の値は、この UDM フィールドに直接マッピングされます。 |
content.ruleTags |
read_only_udm.security_result.rule_labels |
元のログの content.ruleTags 配列の値は、この UDM フィールドにマッピングされ、キーは「ruletag_index」として動的に生成されます。 |
content.ruleType |
read_only_udm.additional.fields.value.string_value (キーは content_ruleType ) |
元のログの content.ruleType の値は、この UDM フィールドに直接マッピングされます。 |
containerId |
read_only_udm.target.asset.asset_id |
元のログの containerId の値に「container_id:」が追加され、この UDM フィールドにマッピングされます。 |
description |
read_only_udm.metadata.description |
元のログの description の値は、この UDM フィールドに直接マッピングされます。 |
id |
read_only_udm.metadata.product_log_id |
元のログの id の値は、この UDM フィールドに直接マッピングされます。 |
labels.container.label.io.kubernetes.container.name |
read_only_udm.additional.fields.value.string_value (キーが container_name の場合) |
元のログの labels.container.label.io.kubernetes.container.name の値は、この UDM フィールドに直接マッピングされます。 |
labels.container.label.io.kubernetes.pod.name |
read_only_udm.additional.fields.value.string_value (キーが pod_name の場合) |
元のログの labels.container.label.io.kubernetes.pod.name の値は、この UDM フィールドに直接マッピングされます。labels.kubernetes.pod.name が空の場合に使用されます。 |
labels.container.label.io.kubernetes.pod.namespace |
read_only_udm.principal.namespace |
元のログの labels.container.label.io.kubernetes.pod.namespace の値は、この UDM フィールドに直接マッピングされます。labels.kubernetes.namespace.name が空の場合に使用されます。 |
labels.aws.instanceId |
read_only_udm.target.resource.product_object_id |
元のログの labels.aws.instanceId の値は、この UDM フィールドに直接マッピングされます。 |
labels.aws.region |
read_only_udm.target.resource.attribute.cloud.availability_zone |
元のログの labels.aws.region の値は、この UDM フィールドに直接マッピングされます。 |
labels.host.hostName |
read_only_udm.principal.ip または read_only_udm.principal.hostname |
値に「ip」が含まれている場合、IP アドレスとして解析され、principal.ip にマッピングされます。それ以外の場合は principal.hostname にマッピングされます。 |
labels.host.mac |
read_only_udm.principal.mac |
元のログの labels.host.mac の値は、この UDM フィールドに直接マッピングされます。machineId が空の場合に使用されます。 |
labels.kubernetes.cluster.name |
read_only_udm.additional.fields.value.string_value (キーが kubernetes_cluster_name の場合) |
元のログの labels.kubernetes.cluster.name の値は、この UDM フィールドに直接マッピングされます。 |
labels.kubernetes.deployment.name |
read_only_udm.additional.fields.value.string_value (キーが kubernetes_deployment_name の場合) |
元のログの labels.kubernetes.deployment.name の値は、この UDM フィールドに直接マッピングされます。 |
labels.kubernetes.namespace.name |
read_only_udm.principal.namespace |
元のログの labels.kubernetes.namespace.name の値は、この UDM フィールドに直接マッピングされます。 |
labels.kubernetes.node.name |
read_only_udm.additional.fields.value.string_value (キーは kubernetes_node_name ) |
元のログの labels.kubernetes.node.name の値は、この UDM フィールドに直接マッピングされます。 |
labels.kubernetes.pod.name |
read_only_udm.additional.fields.value.string_value (キーが pod_name の場合) |
元のログの labels.kubernetes.pod.name の値は、この UDM フィールドに直接マッピングされます。 |
labels.kubernetes.service.name |
read_only_udm.additional.fields.value.string_value (キーは kubernetes_service_name ) |
元のログの labels.kubernetes.service.name の値は、この UDM フィールドに直接マッピングされます。 |
machineId |
read_only_udm.principal.mac |
元のログの machineId の値は、この UDM フィールドに直接マッピングされます。 |
name |
read_only_udm.security_result.summary |
元のログの name の値は、この UDM フィールドに直接マッピングされます。 |
severity |
read_only_udm.security_result.severity |
未加工ログの severity の値は、次の範囲に基づいて文字列値にマッピングされます。4 未満 = 高、3 より大きく 6 未満 = 中、6 = 低、7 = 情報。 |
source |
read_only_udm.security_result.description |
元のログの source の値は、この UDM フィールドに直接マッピングされます。 |
timestampRFC3339Nano |
read_only_udm.metadata.event_timestamp |
未加工ログの timestampRFC3339Nano の値はタイムスタンプとして解析され、この UDM フィールドにマッピングされます。 |
type |
read_only_udm.metadata.product_event_type |
元のログの type の値は、この UDM フィールドに直接マッピングされます。 |
(パーサー ロジック) | read_only_udm.metadata.product_name |
「SYSDIG」にハードコードされました。 |
(パーサー ロジック) | read_only_udm.metadata.vendor_name |
「SYSDIG」にハードコードされました。 |
(パーサー ロジック) | read_only_udm.metadata.event_type |
デフォルトでは「PROCESS_UNCATEGORIZED」に設定されます。labels.host.hostName が空の場合は「GENERIC_EVENT」に設定されます。 |
(パーサー ロジック) | read_only_udm.metadata.log_type |
「SYSDIG」にハードコードされました。 |
(パーサー ロジック) | read_only_udm.target.resource.resource_type |
labels.aws.instanceId が存在する場合は「CLOUD_PROJECT」に設定します。 |
変更点
2024-01-05
- 「severity」が 0、1、2、3 の場合、「security_result.severity」のマッピングを「LOW」から「HIGH」に変更しました。
- 「severity」が 6 の場合、「security_result.severity」のマッピングを「HIGH」から「LOW」に変更しました。
- 「severity」が 7 の場合、「security_result.severity」のマッピングを「HIGH」から「INFORMATIONAL」に変更しました。
- JSON 形式ではないログに「drop」を追加しました。
- 「timestampRFC3339Nano」の日付マッピングに「on_error」を追加しました。
2022-10-07
- 新しく作成されたパーサー。