將記錄匯出至 SIEM 系統

本頁面說明如何將 Google Distributed Cloud (GDC) 實體隔離方案的記錄檔,匯出至外部安全資訊與事件管理 (SIEM) 系統。這項整合功能可集中分析記錄,並強化安全監控。

記錄檔匯出的核心是部署 SIEMOrgForwarder 自訂資源。這項資源會做為設定檔,指定要接收記錄檔的外部 SIEM 執行個體詳細資料。管理員只要在 SIEMOrgForwarder 檔案中定義這些參數,就能建立簡化且安全的記錄檔匯出管道。

事前準備

如要取得管理 SIEMOrgForwarder 自訂資源所需的權限,請要求 IAM 機構組織管理員授予您其中一個相關聯的 SIEM Export 組織角色。

視所需的存取層級和權限而定,您可能會在專案命名空間中取得這項資源的建立者、編輯者或檢視者角色。詳情請參閱「準備 IAM 權限」。

取得必要權限後,請先完成下列步驟,再將記錄匯出至外部 SIEM 系統:

  1. 建立連線:確認 GDC 與外部 SIEM 目的地之間已建立連線。如有需要,請與基礎架構營運商 (IO) 合作,建立與客戶網路上行連線。

  2. 設定環境變數:設定下列環境變數,以便執行本頁中的指令:

    • kubeconfig 檔案的路徑:

      export KUBECONFIG=KUBECONFIG_PATH
      

      將 KUBECONFIG_PATH 替換為 Management API 伺服器的 kubeconfig 檔案路徑。

    • 專案命名空間:

      export PROJECT_NAMESPACE=PROJECT_NAMESPACE
      

設定記錄匯出

在同一個命名空間中建立密鑰和 SIEMOrgForwarder 自訂資源。您可以使用任何專案命名空間。每個 SIEMOrgForwarder 都會從組織中的所有叢集匯出平台記錄,因此您不必在其他專案或叢集中建立這些資源。

建議您使用 platform-obs 命名空間,因為 SIEMOrgForwarder 只會匯出平台記錄。SIEM Export Org 角色也會授予命名空間中所有 Secret 的讀取權限,因此請要求 IAM 機構組織管理員,只將這些角色授予平台管理員。

將記錄匯出至外部 SIEM 系統:

  1. 提供權杖,將記錄堆疊連結至 SIEM 系統。如要執行這項操作,您必須在專案命名空間中建立密鑰,以便儲存權杖 (適用於 Splunk) 和密碼 (適用於 Elastic SIEM):

    cat <<EOF | kubectl --kubeconfig=${KUBECONFIG} apply -f -
    apiVersion: v1
    kind: Secret
    metadata:
      name: SECRET_NAME
      namespace: ${PROJECT_NAMESPACE}
    type: Opaque
    stringData:
      SECRET_FIELD: FIELD_VALUE
    EOF
    

    更改下列內容:

    • SECRET_NAME:Secret 的名稱。
    • SECRET_FIELD:要儲存密鑰的欄位名稱。如果是 Elastic,請使用與自訂資源中 HTTP_USER_NAME 相同的值。
    • FIELD_VALUE::FIELD_VALUE 是 Splunk 的權杖和 Elastic 的密碼。
    • TOKEN:您的權杖。
  2. 在專案命名空間中部署 SIEMOrgForwarder 自訂資源。您必須選擇稽核記錄或作業記錄,指定記錄類型。如要為這兩種記錄類型設定記錄匯出功能,您必須為每種類型部署 SIEMOrgForwarder 資源。

    以下範例說明如何將設定套用至 Splunk 的 SIEMOrgForwarder 自訂資源:

      cat <<EOF | kubectl --kubeconfig=${KUBECONFIG} apply -f -
      apiVersion: logging.gdc.goog/v1
      kind: SIEMOrgForwarder
      metadata:
        name: SIEM_ORG_FORWARDER
        namespace: ${PROJECT_NAMESPACE}
      spec:
        source: LOG_TYPE
        destinations:
          splunkOutputs:
            - host: SIEM_HOST
              token:
                name: SECRET_NAME
                field: SECRET_FIELD
              tls: "TLS"
              netConnectTimeout: NET_CONNECT_TIMEOUT
      EOF
    

    更改下列內容:

    • SIEM_ORG_FORWARDER:SIEMOrgForwarder 定義檔案的名稱。
    • LOG_TYPE:要匯出的記錄類型。可接受的值為 audit 和 operational。
    • SIEM_HOST:SIEM 主機名稱。
    • SECRET_NAME:Secret 的名稱。
    • SECRET_FIELD:儲存 Secret 的欄位名稱。
    • TLS:傳輸層安全標準 (TLS) 的狀態。可接受的值為 "On" 和 "Off"。
    • NET_CONNECT_TIMEOUT:等待連線建立的時間上限,以秒為單位。例如,180 值表示等待 180 秒。

    以下範例說明如何將設定套用至 Elastic 的 SIEMOrgForwarder 自訂資源:

      cat <<EOF | kubectl --kubeconfig=${KUBECONFIG} apply -f -
      apiVersion: logging.gdc.goog/v1
      kind: SIEMOrgForwarder
      metadata:
        name: SIEM_ORG_FORWARDER
        namespace: ${PROJECT_NAMESPACE}
      spec:
        source: LOG_TYPE
        destinations:
          elasticOutputs:
            - host: SIEM_HOST
              port: SIEM_PORT
              http_credential:
                http_user: HTTP_USER_NAME
                http_passwd: SECRET_NAME
              tls: "TLS"
              netConnectTimeout: NET_CONNECT_TIMEOUT
              index: INDEX
      EOF
    

    更改下列內容:

    • SIEM_ORG_FORWARDER:SIEMOrgForwarder 定義檔案的名稱。
    • LOG_TYPE:要匯出的記錄類型。可接受的值為 audit 和 operational。
    • SIEM_HOST:SIEM 主機名稱。
    • SIEM_PORT:SIEM 執行個體的通訊埠。
    • HTTP_USER_NAME:SIEM 執行個體的使用者名稱。這個值也必須是儲存密碼的 Secret 中的 SECRET_FIELD 鍵。
    • SECRET_NAME:Secret 的名稱。
    • TLS:傳輸層安全標準 (TLS) 的狀態。可接受的值為 "On" 和 "Off"。
    • NET_CONNECT_TIMEOUT:等待連線建立的時間上限,以秒為單位。例如,180 值表示等待 180 秒。
    • INDEX:Elastic 執行個體的索引。如未指定,系統會使用記錄類型 (audit 或 operational)。這是選填欄位。
  3. 驗證已部署的 SIEMOrgForwarder 自訂資源狀態:

      kubectl --kubeconfig=${KUBECONFIG} describe siemorgforwarder/SIEM_ORG_FORWARDER \
          -n ${PROJECT_NAMESPACE}
    

    根據記錄類型,檢查下列狀態:

    • 稽核記錄:查看 AuditLoggingReady 狀態。
    • 作業記錄:查看 OperationalLoggingReady 狀態。