收集 Sysdig 記錄
這個剖析器會從 Sysdig JSON 記錄中擷取安全事件資料,並將原始記錄欄位轉換及對應至 Google Security Operations UDM 格式。這項服務會處理各種欄位,包括中繼資料、主體或目標資訊、安全性結果詳細資料和 Kubernetes 相關內容,進而擴充 Google SecOps 內的資料,以利進行分析。剖析器也會根據欄位值執行資料類型轉換、錯誤處理和條件式邏輯,確保 UDM 呈現方式準確且完整。
事前準備
請確認您已完成下列事前準備事項:
- Google SecOps 執行個體。
- Sysdig Secure 的特殊存取權。
為 Webhook 資訊提供建立 API 金鑰
前往 Google Cloud 控制台 > 憑證。
按一下 [Create credentials] (建立憑證),然後選取 [API key] (API 金鑰)。
將 API 金鑰存取權限制在 Google Security Operations API。
選項 1
設定動態饋給
在 Google SecOps 平台中,有兩種不同的進入點可設定動態饋給:
- 「SIEM 設定」>「動態消息」
- 內容中心 > 內容包
依序前往「SIEM 設定」>「動態饋給」,設定動態饋給
如要設定動態消息,請按照下列步驟操作:
- 依序前往「SIEM 設定」>「動態消息」。
- 按一下「新增動態消息」。
- 在下一個頁面中,按一下「設定單一動態饋給」。
- 在「動態饋給名稱」欄位中,輸入動態饋給的名稱,例如「Sysdig Logs」。
- 選取「Webhook」做為「來源類型」。
- 選取「Sysdig」做為「記錄類型」。
- 點選「下一步」。
選用:指定下列輸入參數的值:
- 分割分隔符號:用於分隔記錄行的分隔符號,例如
\n
。
- 分割分隔符號:用於分隔記錄行的分隔符號,例如
點選「下一步」。
在「Finalize」畫面中檢查動態饋給設定,然後按一下「Submit」。
按一下「產生密鑰」,產生驗證這個動態消息的密鑰。
複製並儲存密鑰。您無法再次查看這個密鑰。如有需要,您可以重新產生新的密鑰,但這項操作會使先前的密鑰失效。
在「詳細資料」分頁中,從「端點資訊」欄位複製動態消息端點網址。您需要在用戶端應用程式中指定這個端點網址。
按一下 [完成]。
從內容中心設定動態饋給
為下列欄位指定值:
- 分割分隔符號:用於分隔記錄行的分隔符號,例如
\n
。
進階選項
- 動態饋給名稱:系統預先填入的值,用於識別動態饋給。
- 來源類型:將記錄收集到 Google SecOps 的方法。
- 資產命名空間:與動態饋給相關聯的命名空間。
擷取標籤:套用至這個動態饋給所有事件的標籤。
按一下「產生密鑰」,產生驗證這個動態消息的密鑰。
複製並儲存密鑰。您無法再次查看這個密鑰。如有需要,您可以重新產生新的密鑰,但這項操作會使先前的密鑰失效。
在「詳細資料」分頁中,從「端點資訊」欄位複製動態消息端點網址。您需要在用戶端應用程式中指定這個端點網址。
指定端點網址
- 在用戶端應用程式中,指定 webhook 動態饋給中提供的 HTTPS 端點網址。
如要啟用驗證,請在自訂標頭中指定 API 金鑰和私密金鑰,格式如下:
X-goog-api-key = API_KEY X-Webhook-Access-Key = SECRET
建議:請將 API 金鑰指定為標頭,而非在網址中指定。
如果 Webhook 用戶端不支援自訂標頭,您可以使用查詢參數指定 API 金鑰和密鑰,格式如下:
ENDPOINT_URL?key=API_KEY&secret=SECRET
更改下列內容:
ENDPOINT_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 Integration」)。
- 客戶 ID:與帳戶相關聯的 Google 客戶 ID。 Google Cloud (在 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 ,其中「key」是 tag |
原始記錄中的 content.fields.container.image.tag 值會直接對應至這個 UDM 欄位。 |
content.fields.evt.res |
read_only_udm.metadata.ingestion_labels.value ,其中「key」是 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 ,其中「key」是 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 ,其中「key」是 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 ,其中「key」是 content_policyOrigin |
原始記錄中的 content.policyOrigin 值會直接對應至這個 UDM 欄位。 |
content.policyVersion |
read_only_udm.additional.fields.value.string_value ,其中「key」是 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 ,其中「key」是 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 ,其中「key」是 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 ,其中「key」是 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 ,其中「key」是 kubernetes_cluster_name |
原始記錄中的 labels.kubernetes.cluster.name 值會直接對應至這個 UDM 欄位。 |
labels.kubernetes.deployment.name |
read_only_udm.additional.fields.value.string_value ,其中「key」是 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 ,其中「key」是 kubernetes_node_name |
原始記錄中的 labels.kubernetes.node.name 值會直接對應至這個 UDM 欄位。 |
labels.kubernetes.pod.name |
read_only_udm.additional.fields.value.string_value ,其中「key」是 pod_name |
原始記錄中的 labels.kubernetes.pod.name 值會直接對應至這個 UDM 欄位。 |
labels.kubernetes.service.name |
read_only_udm.additional.fields.value.string_value ,其中「key」是 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 專業人員尋求答案。