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 プラットフォームでフィードを設定するには、次の 2 つのエントリ ポイントがあります。
- [SIEM 設定] > [フィード]
- [Content Hub] > [Content Packs]
[SIEM 設定] > [フィード] でフィードを設定する
フィードを構成する手順は次のとおりです。
- [SIEM Settings] > [Feeds] に移動します。
- [Add New Feed] をクリックします。
- 次のページで [単一のフィードを設定] をクリックします。
- [フィード名] フィールドに、フィードの名前を入力します(例: Sysdig Logs)。
- [Source type] として [Webhook] を選択します。
- [ログタイプ] として [Sysdig] を選択します。
- [次へ] をクリックします。
省略可: 次の入力パラメータの値を指定します。
- Split delimiter: ログ行を区切るために使用される区切り文字(
\n
など)。
- Split delimiter: ログ行を区切るために使用される区切り文字(
[次へ] をクリックします。
[Finalize] 画面でフィードの設定を確認し、[Submit] をクリックします。
[秘密鍵を生成する] をクリックして、このフィードを認証するためのシークレット キーを生成します。
秘密鍵をコピーして保存します。この秘密鍵を再び表示することはできません。必要に応じて、新しい秘密鍵を再生成できますが、その場合以前の秘密鍵は無効になります。
[詳細] タブで、[エンドポイント情報] フィールドから、フィードのエンドポイント URL をコピーします。 このエンドポイント URL をクライアント アプリケーション内で指定する必要があります。
[完了] をクリックします。
コンテンツ ハブからフィードを設定する
次のフィールドに値を指定します。
- Split delimiter: ログ行を区切るために使用される区切り文字(
\n
など)。
詳細オプション
- フィード名: フィードを識別する事前入力された値。
- ソースタイプ: Google SecOps にログを収集するために使用される方法。
- アセットの名前空間: フィードに関連付けられた名前空間。
Ingestion Labels: このフィードのすべてのイベントに適用されるラベル。
[秘密鍵を生成する] をクリックして、このフィードを認証するためのシークレット キーを生成します。
秘密鍵をコピーして保存します。この秘密鍵を再び表示することはできません。必要に応じて、新しい秘密鍵を再生成できますが、その場合以前の秘密鍵は無効になります。
[詳細] タブで、[エンドポイント情報] フィールドから、フィードのエンドポイント 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 にログインします。
- [Profile] > [Settings] > [Event Forwarding] に移動します。
- [+ 統合を追加] をクリックし、プルダウンから [Webhook] を選択します。
次の入力パラメータの値を指定します。
- Integration Name: Webhook のわかりやすい名前を入力します(例: Google SecOps Webhook)。
- エンドポイント: Webhook
<ENDPOINT_URL>
の後に<API_KEY
と<SECRET>
を入力します。 送信するデータ: 転送する Sysdig データの種類をプルダウンから選択します。
統合をテストし、[有効] を切り替えて有効にします。
[保存] をクリックします。
オプション 2
データを Google SecOps に直接転送する
- 管理者認証情報を使用して Sysdig Secure にログインします。
- [設定] > [イベント転送] に移動します。
- [+ 統合を追加] をクリックし、プルダウンから [Google Chronicle] を選択します。
- 次の入力パラメータの値を指定します。
- 統合名: 統合のわかりやすい名前を指定します(例: Google SecOps Integration)。
- お客様 ID: Google Cloud アカウントに関連付けられている Google お客様 ID。(Google SecOps では、[設定] > [プロファイル] で確認できます)。
- 名前空間: 省略可: インデックス登録と拡充に適したデータドメインを識別するために、タグとして使用します。
- 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 = HIGH、>3 かつ <6 = MEDIUM、6 = LOW、7 = INFORMATIONAL。 |
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」に設定されます。 |
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。