收集 WordPress CMS 記錄

支援的國家/地區:

總覽

這個剖析器會從 JSON 或純文字格式的訊息中擷取 WordPress CMS 記錄。可處理 JSON 和非 JSON 格式的記錄,剖析相關欄位並對應至 UDM,包括使用者詳細資料、網路資訊、資源屬性和安全性結果詳細資料。剖析器也會執行多項資料轉換作業,例如轉換資料類型、合併欄位,以及處理 Kubernetes 和其他資源的特定記錄模式。

事前準備

請確認您已完成下列事前準備事項:

  • Google SecOps 執行個體。
  • WordPress 網站的特殊存取權。
  • 啟用 Webhook 功能的外掛程式 (例如 WP Webhooks)。

設定動態饋給

在 Google SecOps 平台中,有兩種不同的進入點可設定動態饋給:

  • 「SIEM 設定」>「動態消息」
  • 內容中心 > 內容包

依序前往「SIEM 設定」>「動態饋給」,設定動態饋給

如要設定動態消息,請按照下列步驟操作:

  1. 依序前往「SIEM 設定」>「動態消息」
  2. 按一下「新增動態消息」
  3. 在下一個頁面中,按一下「設定單一動態饋給」
  4. 在「動態饋給名稱」欄位中,輸入動態饋給的名稱,例如「Wordpress CMS Logs」
  5. 選取「Webhook」做為「來源類型」
  6. 選取「Wordpress」做為「記錄類型」
  7. 點選「下一步」
  8. 選用:指定下列輸入參數的值:
    • 分割分隔符號:用於分隔記錄行的分隔符號,例如 \n
  9. 點選「下一步」
  10. 在「Finalize」畫面中檢查動態饋給設定,然後按一下「Submit」
  11. 按一下「產生密鑰」,產生驗證這個動態消息的密鑰。
  12. 複製並儲存密鑰。您無法再次查看這個密鑰。如有需要,您可以重新產生新的密鑰,但這項操作會使先前的密鑰失效。
  13. 在「詳細資料」分頁中,從「端點資訊」欄位複製動態消息端點網址。您需要在用戶端應用程式中指定這個端點網址。
  14. 按一下 [完成]

從內容中心設定動態饋給

為下列欄位指定值:

  • 分割分隔符號:用於分隔記錄行的分隔符號,例如 \n

進階選項

  • 動態饋給名稱:系統預先填入的值,用於識別動態饋給。
  • 來源類型:將記錄收集到 Google SecOps 的方法。
  • 資產命名空間:與動態饋給相關聯的命名空間。
  • 擷取標籤:套用至這個動態饋給所有事件的標籤。

  • 按一下「產生密鑰」,產生驗證這個動態消息的密鑰。

  • 複製並儲存密鑰。您無法再次查看這個密鑰。如有需要,您可以重新產生新的密鑰,但這項操作會使先前的密鑰失效。

  • 在「詳細資料」分頁中,從「端點資訊」欄位複製動態消息端點網址。您需要在用戶端應用程式中指定這個端點網址。

為 Webhook 資訊提供建立 API 金鑰

  1. 前往 Google Cloud 控制台 > 憑證

    前往「憑證」

  2. 按一下 [Create credentials] (建立憑證),然後選取 [API key] (API 金鑰)

  3. 將 API 金鑰存取權限制在 Google Security Operations API

指定端點網址

  1. 在用戶端應用程式中,指定 webhook 動態饋給中提供的 HTTPS 端點網址。
  2. 如要啟用驗證,請在自訂標頭中指定 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 Security Operations 進行驗證的 API 金鑰。
  • SECRET:您產生的密鑰,用於驗證動態饋給。

設定 WordPress Webhook

  1. 透過 WordPress 外掛程式目錄安裝啟用 WP Webhooks 外掛程式 (或您選擇的 Webhook 外掛程式)。
  2. 前往 WordPress 管理員選單中的「WP Webhooks」子選單 (通常位於設定下方)。
  3. 按一下頂端列選單中的「傳送資料」
  4. 選取會觸發 Webhook 的 WordPress 動作。常見的例子包括 publish_post (發布新貼文時)、user_register (新使用者註冊時) 或 comment_post (發布新留言時)。這取決於您選取並傳送至 Google SecOps 的資料。
  5. 按一下「新增 Webhook 網址」
  6. 設定 Webhook:
    • 名稱:為 Webhook 提供描述性名稱 (例如「Google SecOps 動態饋給」)。
    • Webhook 網址:貼上 Google SecOps 端點網址。
  7. 按一下「儲存 Webhook」

UDM 對應表

記錄欄位 UDM 對應 邏輯
ClientIP principal.ip 系統會從原始記錄的 ClientIP 欄位擷取用戶端的 IP 位址。
Code target.resource.attribute.labels.key 「Code」值會指派為 target.resource.attribute.labels 物件中的鍵。
Code target.resource.attribute.labels.value 原始記錄中的 Code 欄位值會指派為 target.resource.attribute.labels 物件中的值。
CurrentUserID target.user.userid 原始記錄中的 CurrentUserID 會轉換為字串,並對應至 target.user.userid 欄位。
EditUserLink target.url 原始記錄檔中的 EditUserLink 會對應至 target.url 欄位。
EventType metadata.product_event_type 原始記錄檔中的 EventType 會對應至 metadata.product_event_type 欄位。
FirstName target.user.first_name 原始記錄檔中的 FirstName 會對應至 target.user.first_name 欄位。
insertId metadata.product_log_id 原始記錄檔中的 insertId 會對應至 metadata.product_log_id 欄位。
labels.compute.googleapis.com/resource_name additional.fields.key 「資源名稱」值會指派為 additional.fields 物件中的鍵。
labels.compute.googleapis.com/resource_name additional.fields.value.string_value 原始記錄中的 labels.compute.googleapis.com/resource_name 值會指派為 additional.fields 物件中的字串值。
labels.k8s-pod/app_kubernetes_io/instance target.resource.attribute.labels.key 「Kubernetes IO Instance」值會指派為 target.resource.attribute.labels 物件中的鍵。
labels.k8s-pod/app_kubernetes_io/instance target.resource.attribute.labels.value 原始記錄中的 labels.k8s-pod/app_kubernetes_io/instance 值會指派為 target.resource.attribute.labels 物件中的值。
labels.k8s-pod/app_kubernetes_io/managed-by target.resource.attribute.labels.key 「Kubernetes IO Instance Manager」值會指派為 target.resource.attribute.labels 物件中的鍵。
labels.k8s-pod/app_kubernetes_io/managed-by target.resource.attribute.labels.value 原始記錄中的 labels.k8s-pod/app_kubernetes_io/managed-by 值會指派為 target.resource.attribute.labels 物件中的值。
labels.k8s-pod/app_kubernetes_io/name target.resource.attribute.labels.key 「Kubernetes IO Instance Name」值會指派為 target.resource.attribute.labels 物件中的鍵。
labels.k8s-pod/app_kubernetes_io/name target.resource.attribute.labels.value 原始記錄中的 labels.k8s-pod/app_kubernetes_io/name 值會指派為 target.resource.attribute.labels 物件中的值。
labels.k8s-pod/controller-revision-hash target.resource.attribute.labels.key 「Controller Revision Hash」值會指派為 target.resource.attribute.labels 物件中的鍵。
labels.k8s-pod/controller-revision-hash target.resource.attribute.labels.value 原始記錄中的 labels.k8s-pod/controller-revision-hash 值會指派為 target.resource.attribute.labels 物件中的值。
labels.k8s-pod/helm_sh/chart target.resource.attribute.labels.key 「Kubernetes IO Instance Manager SH」值會指派為 target.resource.attribute.labels 物件中的鍵。
labels.k8s-pod/helm_sh/chart target.resource.attribute.labels.value 原始記錄中的 labels.k8s-pod/helm_sh/chart 值會指派為 target.resource.attribute.labels 物件中的值。
labels.k8s-pod/k8s-app target.resource.attribute.labels.key 「Application」值會指派為 target.resource.attribute.labels 物件中的鍵。
labels.k8s-pod/k8s-app target.resource.attribute.labels.value 原始記錄中的 labels.k8s-pod/k8s-app 值會指派為 target.resource.attribute.labels 物件中的值。
labels.k8s-pod/pod-template-generation target.resource.attribute.labels.key 「Pod Template Generation」值會指派為 target.resource.attribute.labels 物件中的鍵。
labels.k8s-pod/pod-template-generation target.resource.attribute.labels.value 原始記錄中的 labels.k8s-pod/pod-template-generation 值會指派為 target.resource.attribute.labels 物件中的值。
labels.k8s-pod/pod-template-hash target.resource.attribute.labels.key 「Pod Template Hash」值會指派為 target.resource.attribute.labels 物件中的鍵。
labels.k8s-pod/pod-template-hash target.resource.attribute.labels.value 原始記錄中的 labels.k8s-pod/pod-template-hash 值會指派為 target.resource.attribute.labels 物件中的值。
LastName target.user.last_name 原始記錄檔中的 LastName 會對應至 target.user.last_name 欄位。
logName target.resource.attribute.labels.key 「記錄名稱」值會指派為 target.resource.attribute.labels 物件中的鍵。
logName target.resource.attribute.labels.value 原始記錄中的 logName 欄位值會指派為 target.resource.attribute.labels 物件中的值。
receiveTimestamp metadata.event_timestamp 系統會剖析原始記錄中的 receiveTimestamp,並對應至 metadata.event_timestamp 欄位。
resource.labels.cluster_name additional.fields.key 「叢集名稱」值會指派為 additional.fields 物件中的鍵。
resource.labels.cluster_name additional.fields.value.string_value 原始記錄中的 resource.labels.cluster_name 值會指派為 additional.fields 物件中的字串值。
resource.labels.cluster_name target.resource.resource_type 如果存在 resource.labels.cluster_name,系統會將「CLUSTER」值指派給 target.resource.resource_type
resource.labels.container_name metadata.product_event_type 如果 resource.type 為「k8s_container」,系統會使用 resource.labels.container_name 的值和 resource.labels.namespace_name 建構 metadata.product_event_type
resource.labels.container_name target.resource.name 原始記錄中的 resource.labels.container_name 值會指派給 target.resource.name 欄位。
resource.labels.location target.location.country_or_region 原始記錄中的 resource.labels.location 值會指派給 target.location.country_or_region 欄位。
resource.labels.namespace_name additional.fields.key 「命名空間名稱」值會指派為 additional.fields 物件中的鍵。
resource.labels.namespace_name additional.fields.value.string_value 原始記錄中的 resource.labels.namespace_name 值會指派為 additional.fields 物件中的字串值。
resource.labels.namespace_name metadata.product_event_type 如果 resource.type 為「k8s_container」,系統會使用 resource.labels.namespace_name 的值和 resource.labels.container_name 建構 metadata.product_event_type
resource.labels.node_name metadata.product_event_type 如果 resource.type 為「k8s_node」,系統會使用 resource.labels.node_name 的值建構 metadata.product_event_type
resource.labels.pod_name additional.fields.key 「Pod Name」值會指派為 additional.fields 物件中的鍵。
resource.labels.pod_name additional.fields.value.string_value 原始記錄中的 resource.labels.pod_name 值會指派為 additional.fields 物件中的字串值。
resource.labels.project_id additional.fields.key 「專案 ID」值會指派為 additional.fields 物件中的鍵。
resource.labels.project_id additional.fields.value.string_value 原始記錄中的 resource.labels.project_id 值會指派為 additional.fields 物件中的字串值。
resource.type target.resource.resource_subtype 原始記錄中的 resource.type 值會指派給 target.resource.resource_subtype 欄位。
Roles target.user.user_role 原始記錄中的 Roles 欄位會轉換為大寫,並對應至 target.user.user_role 欄位。
SessionID network.session_id 原始記錄檔中的 SessionID 會對應至 network.session_id 欄位。
sev security_result.severity sev 欄位的值會決定 security_result.severity 的值。「INFO」或「NOTICE」會對應至「INFORMATIONAL」,「WARN」會對應至「MEDIUM」,「ERR」則會對應至「ERROR」。
TargetUsername target.user.user_display_name 原始記錄檔中的 TargetUsername 會對應至 target.user.user_display_name 欄位。
textPayload metadata.description 如果 resource.type 為「k8s_node」,textPayload 的值會對應至 metadata.description 欄位。
textPayload network.application_protocol 系統會使用 grok 模式,從 textPayload 欄位擷取通訊協定 (例如 HTTP)。
textPayload network.http.method 系統會使用 grok 模式,從 textPayload 欄位擷取 HTTP 方法 (例如 GET、POST)。
textPayload network.http.referral_url 系統會使用 grok 模式,從 textPayload 欄位擷取網址。
textPayload network.http.response_code HTTP 回應代碼會使用 grok 模式從 textPayload 欄位擷取,並轉換為整數。
textPayload network.received_bytes 使用 grok 模式從 textPayload 欄位擷取收到的位元組,並轉換為不帶正負號的整數。
textPayload principal.ip 來源 IP 位址是使用 grok 模式從 textPayload 欄位擷取。
textPayload security_result.description 系統會使用 grok 模式從 textPayload 欄位擷取說明。
textPayload target.file.full_path 路徑是使用 grok 模式從 textPayload 欄位中擷取。
UserAgent network.http.user_agent 原始記錄檔中的 UserAgent 會對應至 network.http.user_agent 欄位。值「USER_RESOURCE_ACCESS」已指派給 metadata.event_type

還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求答案。