收集 Lacework Cloud Security 記錄
總覽
這個剖析器會從 Lacework Cloud Security JSON 記錄中擷取欄位,並轉換為 UDM 格式。這個服務會將原始記錄欄位對應至 UDM 欄位、處理各種資料類型,並從標記中擷取額外情境資訊來豐富事件內容,最終根據主體和目標資訊的存在與否,將事件類型分類。
事前準備
請確認您已完成下列事前準備事項:
- Google Security Operations 執行個體。
- FortiCNAPP Lacework 的特殊存取權。
設定動態饋給
在 Google SecOps 平台中,有兩種不同的進入點可設定動態饋給:
- 「SIEM 設定」>「動態消息」
- 內容中心 > 內容包
依序前往「SIEM 設定」>「動態饋給」,設定動態饋給
如要設定動態消息,請按照下列步驟操作:
- 依序前往「SIEM 設定」>「動態消息」。
- 按一下「新增動態消息」。
- 在下一個頁面中,按一下「設定單一動態饋給」。
- 在「動態饋給名稱」欄位中,輸入動態饋給的名稱 (例如「Lacework Logs」)。
- 選取「Webhook」做為「來源類型」。
- 選取「Lacework」做為「記錄類型」。
- 點選「下一步」。
- 選用:指定下列輸入參數的值:
- 分割分隔符號:用於分隔記錄行的分隔符號,例如
\n
。
- 分割分隔符號:用於分隔記錄行的分隔符號,例如
- 點選「下一步」。
- 在「Finalize」畫面中檢查動態饋給設定,然後按一下「Submit」。
- 按一下「產生密鑰」,產生驗證這個動態消息的密鑰。
- 複製並儲存密鑰。您無法再次查看這個密鑰。如有需要,您可以重新產生新的密鑰,但這項操作會使先前的密鑰失效。
- 在「詳細資料」分頁中,從「端點資訊」欄位複製動態消息端點網址。您需要在用戶端應用程式中指定這個端點網址。
- 按一下 [完成]。
從內容中心設定動態饋給
為下列欄位指定值:
- 分割分隔符號:用於分隔記錄行的分隔符號,例如
\n
。
進階選項
- 動態饋給名稱:系統預先填入的值,用於識別動態饋給。
- 來源類型:將記錄收集到 Google SecOps 的方法。
- 資產命名空間:與動態饋給相關聯的命名空間。
擷取標籤:套用至這個動態饋給所有事件的標籤。
按一下「產生密鑰」,產生驗證這個動態消息的密鑰。
複製並儲存密鑰。您無法再次查看這個密鑰。如有需要,您可以重新產生新的密鑰,但這項操作會使先前的密鑰失效。
在「詳細資料」分頁中,從「端點資訊」欄位複製動態消息端點網址。您需要在用戶端應用程式中指定這個端點網址。
為 Webhook 資訊提供建立 API 金鑰
前往 Google Cloud 控制台 > 憑證。
按一下 [Create credentials] (建立憑證),然後選取 [API key] (API 金鑰)。
限制 API 金鑰對 Chronicle API 的存取權。
指定端點網址
- 在用戶端應用程式中,指定 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
:您產生的密鑰,用於驗證動態饋給。
為 Google SecOps 設定 Lacework Webhook
- 以管理員權限登入 Lacework FortiCNAPP 控制台。
- 依序前往「設定」>「通知」>「快訊頻道」。
- 按一下「+ 新增」。
- 選取「Webhook」。
- 點選「下一步」。
- 為管道指定專屬名稱 (例如「Google SecOps」)。
- Webhook 網址:輸入
<ENDPOINT_URL>
,然後依序輸入<API_KEY>
和<SECRET>
。 - 按一下 [儲存]。
- 選取「快訊規則」,然後設定所需的快訊路徑詳細資料。
UDM 對應表
記錄欄位 | UDM 對應 | 邏輯 |
---|---|---|
AGENT_VERSION |
metadata.product_version |
直接從「AGENT_VERSION 」欄位對應。 |
CREATED_TIME |
metadata.event_timestamp |
直接從 CREATED_TIME 欄位對應,並轉換為時間戳記。 |
FILEDATA_HASH |
target.file.sha256 |
直接從「FILEDATA_HASH 」欄位對應。 |
FILE_PATH |
target.file.full_path |
直接從「FILE_PATH 」欄位對應。 |
IP_ADDR |
principal.ip |
直接從「IP_ADDR 」欄位對應。 |
OS |
target.platform |
對應「OS 」欄位。Logic 會將各種 OS 字串 (Linux、Windows、Mac) 轉換為 UDM 列舉值 (LINUX、WINDOWS、MAC)。如果找不到相符項目,預設值為 UNKNOWN_PLATFORM。 |
STATUS |
additional.fields[].key:"STATUS", value.string_value |
直接從 STATUS 欄位對應為額外欄位。 |
TAGS.Account |
metadata.product_deployment_id |
直接從「TAGS.Account 」欄位對應。 |
TAGS.AmiId |
additional.fields[].key:"AmiId", value.string_value |
直接從 TAGS.AmiId 欄位對應為額外欄位。 |
TAGS.ExternalIp |
target.ip |
直接從「TAGS.ExternalIp 」欄位對應。 |
TAGS.Hostname |
principal.hostname |
直接從「TAGS.Hostname 」欄位對應。 |
TAGS.InstanceId |
target.asset_id |
直接從 TAGS.InstanceId 欄位對應,並加上「裝置例項 ID:」前置字串。 |
TAGS.LwTokenShort |
additional.fields[].key:"LwTokenShort", value.string_value |
直接從 TAGS.LwTokenShort 欄位對應為額外欄位。 |
TAGS.MID |
additional.fields[].key:"MID", value.string_value |
直接從 MID 欄位對應為額外欄位。 |
TAGS.MODE |
additional.fields[].key:"MODE", value.string_value |
直接從 MODE 欄位對應為額外欄位。 |
TAGS.Name |
additional.fields[].key:"Name", value.string_value |
直接從 TAGS.Name 欄位對應為額外欄位。 |
TAGS.QSConfigName-vfzg0 |
additional.fields[].key:"QSConfigName", value.string_value |
直接從 TAGS.QSConfigName-vfzg0 欄位對應為額外欄位。 |
TAGS.ResourceType |
target.resource.resource_subtype |
直接從「TAGS.ResourceType 」欄位對應。 |
TAGS.SubnetId |
target.resource.attribute.labels[].key:"Subnet Id", value |
直接從 TAGS.SubnetId 欄位對應為 target.resource.attribute 中的標籤。 |
TAGS.VmInstanceType |
target.resource.attribute.labels[].key:"VmInstanceType", value |
直接從 TAGS.VmInstanceType 欄位對應為 target.resource.attribute 中的標籤。 |
TAGS.VmProvider |
target.resource.attribute.labels[].key:"VmProvider", value |
直接從 TAGS.VmProvider 欄位對應為 target.resource.attribute 中的標籤。 |
TAGS.VpcId |
target.resource.product_object_id |
直接從「TAGS.VpcId 」欄位對應。 |
TAGS.Zone |
target.cloud.availability_zone |
直接從「TAGS.Zone 」欄位對應。 |
TAGS.alpha.eksctl.io/nodegroup-name |
additional.fields[].key:"eksctl_nodegroup_name", value.string_value |
直接從 TAGS.alpha.eksctl.io/nodegroup-name 欄位對應為額外欄位。 |
TAGS.alpha.eksctl.io/nodegroup-type |
additional.fields[].key:"eksctl_nodegroup_type", value.string_value |
直接從 TAGS.alpha.eksctl.io/nodegroup-type 欄位對應為額外欄位。 |
TAGS.arch |
principal.platform_version |
直接從「TAGS.arch 」欄位對應。 |
TAGS.aws:autoscaling:groupName |
additional.fields[].key:"autoscaling_groupName", value.string_value |
直接從 TAGS.aws:autoscaling:groupName 欄位對應為額外欄位。 |
TAGS.aws:ec2:fleet-id |
additional.fields[].key:"ec2_fleetid", value.string_value |
直接從 TAGS.aws:ec2:fleet-id 欄位對應為額外欄位。 |
TAGS.aws:ec2launchtemplate:id |
additional.fields[].key:"ec2launchtemplate_id", value.string_value |
直接從 TAGS.aws:ec2launchtemplate:id 欄位對應為額外欄位。 |
TAGS.aws:ec2launchtemplate:version |
additional.fields[].key:"ec2launchtemplate_ver", value.string_value |
直接從 TAGS.aws:ec2launchtemplate:version 欄位對應為額外欄位。 |
TAGS.aws:eks:cluster-name |
additional.fields[].key:"eks_cluster_name", value.string_value |
直接從 TAGS.aws:eks:cluster-name 欄位對應為額外欄位。 |
TAGS.enableCrowdStrike |
additional.fields[].key:"enableCrowdStrike", value.string_value |
直接從 TAGS.enableCrowdStrike 欄位對應為額外欄位。 |
TAGS.falconx.io/application |
additional.fields[].key:"io/application", value.string_value |
直接從 TAGS.falconx.io/application 欄位對應為額外欄位。 |
TAGS.falconx.io/environment |
additional.fields[].key:"io/environment", value.string_value |
直接從 TAGS.falconx.io/environment 欄位對應為額外欄位。 |
TAGS.falconx.io/managedBy |
additional.fields[].key:"io/managedBy", value.string_value |
直接從 TAGS.falconx.io/managedBy 欄位對應為額外欄位。 |
TAGS.falconx.io/project |
additional.fields[].key:"io/project", value.string_value |
直接從 TAGS.falconx.io/project 欄位對應為額外欄位。 |
TAGS.falconx.io/proxy-type |
additional.fields[].key:"io/proxy_type", value.string_value |
直接從 TAGS.falconx.io/proxy-type 欄位對應為額外欄位。 |
TAGS.falconx.io/service |
additional.fields[].key:"io/service", value.string_value |
直接從 TAGS.falconx.io/service 欄位對應為額外欄位。 |
TAGS.falconx.io/team |
additional.fields[].key:"io/team", value.string_value |
直接從 TAGS.falconx.io/team 欄位對應為額外欄位。 |
TAGS.k8s.io/cluster-autoscaler/enabled |
additional.fields[].key:"k8s_autoscaler_enabled", value.string_value |
直接從 TAGS.k8s.io/cluster-autoscaler/enabled 欄位對應為額外欄位。 |
TAGS.k8s.io/cluster-autoscaler/falcon |
additional.fields[].key:"k8s_cluster_autoscaler", value.string_value |
直接從 TAGS.k8s.io/cluster-autoscaler/falcon 欄位對應為額外欄位。 |
TAGS.kubernetes.io/cluster/falcon |
additional.fields[].key:"kubernetes_io_cluster", value.string_value |
直接從 TAGS.kubernetes.io/cluster/falcon 欄位對應為額外欄位。 |
TAGS.lw_KubernetesCluster |
additional.fields[].key:"lw_KubernetesCluster", value.string_value |
直接從 TAGS.lw_KubernetesCluster 欄位對應為額外欄位。 |
LAST_UPDATE |
additional.fields[].key:"LAST_UPDATE", value.string_value |
直接從 LAST_UPDATE 欄位對應為額外欄位。硬式編碼為「LACEWORK」。硬式編碼為「Lacework Cloud Security」。 |
metadata.event_type |
metadata.event_type |
由邏輯決定。如果 principal.ip 和 target.ip 都存在,則設為「NETWORK_CONNECTION」;如果只有 principal.ip 存在,則設為「STATUS_UPDATE」;否則設為「GENERIC_EVENT」。 |
還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求答案。