收集自訂安全資料分析記錄

剖析器版本:6.0

支援:

本文說明如何使用多種擷取方法,將自訂安全分析資料擷取至 Google Security Operations。本指南適用於沒有預建剖析器或記錄類型的自訂安全性資料來源。

自訂安全性資料分析涵蓋專屬安全性遙測資料、自訂應用程式記錄、內部安全性工具,或來自沒有原生 Google SecOps 整合的來源的任何安全性相關資料。您可以將這類資料擷取為非結構化記錄,並視需要使用自訂剖析器進行正規化。

事前準備

請確認您符合下列必要條件:

  • Google SecOps 執行個體
  • 可匯出 JSON、CSV、SYSLOG 或其他結構化格式記錄的自訂安全性資料來源
  • 可存取下列其中一項:
    • Google Cloud 控制台 (用於建立 API 金鑰和 GCS)
    • AWS 控制台 (適用於 S3 或 Firehose)
    • Azure 入口網站 (適用於 Azure Blob 儲存體)
    • 能夠傳送 Webhook 要求的 HTTP 用戶端或應用程式
  • 在 Google SecOps 建立及管理動態饋給的權限

選擇擷取方法

Google SecOps 支援多種自訂安全性資料擷取方法。請根據資料來源功能選取最合適的方法:

擷取方法 用途 延遲時間 設定複雜度
Webhook 從應用程式即時推送 秒 低
Amazon S3 V2 批次匯出至 S3 bucket 分鐘至小時 中
Google Cloud Storage V2 批次匯出至 GCS bucket 分鐘至小時 中
Azure Blob 儲存體 V2 批次匯出至 Azure 儲存體 分鐘至小時 中
Amazon Data Firehose 從 AWS 即時串流 秒 高

方法 1:Webhook 擷取 (即時推送)

如果自訂安全性應用程式可以將 HTTP POST 要求傳送至外部端點,請使用這個方法。

在 Google SecOps 中建立 Webhook 動態饋給

建立動態饋給

  1. 依序前往「SIEM 設定」>「動態饋給」。
  2. 按一下「新增動態消息」。
  3. 在下一個頁面中,按一下「設定單一動態饋給」。
  4. 在「Feed name」(動態饋給名稱) 欄位中,輸入動態饋給名稱 (例如 custom-security-analytics-webhook)。
  5. 「Source type」(來源類型) 請選取「Webhook」。
  6. 「Log type」(記錄類型) 請選取「Custom Security Data Analytics」(自訂安全性資料分析)。
  7. 點選「下一步」。
  8. 指定下列輸入參數的值:
    • 分割分隔符號:(選用) 輸入分隔符號,分割多行事件。常見值:
      • \n - 換行分隔符號 (最常用於 NDJSON)
      • 如果每個要求都包含單一事件,請留空
    • 資產命名空間:資產命名空間
    • 擷取標籤:要套用至這個動態饋給事件的標籤
  9. 點選「下一步」。
  10. 在「Finalize」(完成) 畫面中檢查新的新聞動態消息設定,然後按一下「Submit」(提交)。

產生並儲存密鑰

建立動態饋給後,您必須產生用於驗證的密鑰:

  1. 在動態饋給詳細資料頁面中,按一下「產生密鑰」。
  2. 對話方塊會顯示密鑰。
  3. 複製並妥善儲存密鑰。

取得動態饋給端點網址

  1. 前往動態饋給的「詳細資料」分頁。
  2. 在「Endpoint Information」部分,複製「Feed endpoint URL」。
  3. 網址格式為:

    https://{region}-chronicle.googleapis.com/v1/{parent}/logs:import
    

    其中 {region} 是 Google SecOps 執行個體的區域 (例如 us、europe 或 asia-southeast1),{parent} 是資源路徑,格式為 projects/<PROJECT_ID>/locations/<LOCATION>/instances/<INSTANCE_ID>/logTypes/<LOG_TYPE>。

  4. 請儲存這個網址,以利進行後續步驟。

  5. 按一下「完成」。

建立 Google Cloud API 金鑰

Google SecOps 需要 API 金鑰才能進行驗證。在 Google Cloud 控制台中建立受限制的 API 金鑰。

建立 API 金鑰

  1. 前往 Google Cloud 控制台憑證頁面。
  2. 選取專案 (與 Chronicle 執行個體相關聯的專案)。
  3. 依序點選「建立憑證」 > 「API 金鑰」。
  4. 系統會建立 API 金鑰,並在對話方塊中顯示。
  5. 按一下「編輯 API 金鑰」,即可限制金鑰。

限制 API 金鑰

  1. 在「API 金鑰」設定頁面中:
    • 名稱:輸入描述性名稱 (例如 Chronicle Webhook API Key)。
  2. 在「API 限制」下方:
    1. 選取「Restrict key」(限制金鑰)。
    2. 在「選取 API」下拉式選單中,搜尋並選取「Google SecOps API」 (或「Chronicle API」)。
  3. 按一下 [儲存]。
  4. 複製頁面頂端「API 金鑰」欄位中的 API 金鑰值。
  5. 安全儲存 API 金鑰。

設定自訂應用程式來傳送資料

設定自訂安全性應用程式或指令碼,將 HTTP POST 要求傳送至 Chronicle Webhook 端點。

建構 Webhook 網址:

  • 合併 Chronicle 端點網址和 API 金鑰:

    <ENDPOINT_URL>?key=<API_KEY>
    

    範例:

    https://{region}-chronicle.googleapis.com/v1/{parent}/logs:import?key=AIzaSyD...
    

HTTP 要求格式:

  • 方法:POST

  • 網址:

    <ENDPOINT_URL>?key=<API_KEY>
    
  • 標頭:

    Content-Type: application/json
    x-chronicle-auth: <SECRET_KEY>
    
  • 內文 (單一事件):

    {
        "timestamp": "2025-01-15T10:30:00Z",
        "event_type": "authentication",
        "user": "john.doe@example.com",
        "action": "login",
        "result": "success",
        "source_ip": "203.0.113.45",
        "custom_field_1": "value1",
        "custom_field_2": "value2"
    }
    
  • 內文 (以換行符號分隔的多個事件):

    {"timestamp": "2025-01-15T10:30:00Z", "event_type": "authentication", "action": "login"}
    {"timestamp": "2025-01-15T10:30:05Z", "event_type": "file_access", "action": "read"}
    {"timestamp": "2025-01-15T10:30:10Z", "event_type": "authentication", "action": "logout"}
    

範例:

  • 範例:Python 指令碼:

    import requests
    import json
    from datetime import datetime
    
    # Configuration
    ENDPOINT_URL = "https://{region}-chronicle.googleapis.com/v1/{parent}/logs:import"
    API_KEY = "your-api-key-here"
    SECRET_KEY = "your-secret-key-here"
    
    # Construct full URL
    url = f"{ENDPOINT_URL}?key={API_KEY}"
    
    # Headers
    headers = {
        "Content-Type": "application/json",
        "x-chronicle-auth": SECRET_KEY
    }
    
    # Sample event
    event = {
        "timestamp": datetime.utcnow().isoformat() + "Z",
        "event_type": "custom_security_event",
        "severity": "high",
        "source": "custom_security_tool",
        "message": "Suspicious activity detected",
        "user": "admin@example.com",
        "ip_address": "192.168.1.100"
    }
    
    # Send request
    response = requests.post(url, headers=headers, data=json.dumps(event))
    
    if response.status_code == 200:
        print("Event sent successfully")
    else:
        print(f"Error: {response.status_code} - {response.text}")
    
  • 範例:cURL 指令:

    curl -X POST \
        "https://{region}-chronicle.googleapis.com/v1/{parent}/logs:import?key=YOUR_API_KEY" \
        -H "Content-Type: application/json" \
        -H "x-chronicle-auth: YOUR_SECRET_KEY" \
        -d '{
            "timestamp": "2025-01-15T10:30:00Z",
            "event_type": "security_alert",
            "severity": "critical",
            "source": "custom_tool",
            "message": "Threat detected"
        }'
    

驗證方式參考資料

Google SecOps Webhook 摘要支援多種驗證方式。選擇應用程式支援的方法。

如果應用程式支援自訂 HTTP 標頭,請使用這個方法,提高安全性。

  • 要求格式:

    POST <ENDPOINT_URL> HTTP/1.1
    Content-Type: application/json
    x-goog-chronicle-auth: <API_KEY>
    x-chronicle-auth: <SECRET_KEY>
    
    {
      "event": "data",
      "timestamp": "2025-01-15T10:30:00Z"
    }
    
  • 優點:

    • 網址不會顯示 API 金鑰和密鑰。
    • 更安全,因為標頭不會記錄在網路伺服器存取記錄中。
    • 如果應用程式支援,建議使用這個方法。

方法 2:查詢參數

如果應用程式不支援自訂標頭,請將憑證附加至網址。

  • 網址格式:

    <ENDPOINT_URL>?key=<API_KEY>&secret=<SECRET_KEY>
    

    範例:

    https://{region}-chronicle.googleapis.com/v1/{parent}/logs:import?key=AIzaSyD...&secret=abcd1234...
    
  • 要求格式:

    POST <ENDPOINT_URL>?key=<API_KEY>&secret=<SECRET_KEY> HTTP/1.1
    Content-Type: application/json
    
    {
      "event": "data",
      "timestamp": "2025-01-15T10:30:00Z"
    }
    
  • 缺點:

    • 網址中會顯示憑證。
    • 憑證可能會記錄在網路伺服器存取記錄中。
    • 安全性不如標頭。

方法 3:混合式 (網址 + 標頭)

部分設定會在網址中使用 API 金鑰,並在標頭中使用 Secret 金鑰。

  • 要求格式:

    POST <ENDPOINT_URL>?key=<API_KEY> HTTP/1.1
    Content-Type: application/json
    x-chronicle-auth: <SECRET_KEY>
    
    {
        "event": "data",
        "timestamp": "2025-01-15T10:30:00Z"
    }
    

Webhook 限制和最佳做法

要求限制

限制 值
要求大小上限 4 MB
QPS (每秒查詢次數) 上限 15,000
要求逾時 30 秒
重試行為 自動 (指數輪詢)

最佳做法

  • 批次處理事件:使用以換行符號分隔的 JSON (NDJSON) 格式,在單一要求中傳送多個事件,減少負擔。
  • 加入時間戳記:請務必加入 ISO 8601 格式的時間戳記欄位,確保事件順序正確。
  • 使用結構化資料:以 JSON 格式傳送資料,方便剖析及擷取欄位。
  • 導入重試邏輯:以指數輪詢方式處理暫時性失敗。
  • 監控回應代碼:記錄並警告非 200 的回應。

選項 2:Amazon S3 V2 擷取 (批次匯出)

如果自訂安全性應用程式可將記錄匯出至 Amazon S3 bucket,請使用這個方法。

建立 Amazon S3 儲存貯體

  1. 開啟 Amazon S3 控制台。
  2. 點選「建立 bucket」。
  3. 提供下列設定詳細資料:
    • Bucket Name:輸入有意義的 bucket 名稱 (例如 custom-security-analytics-logs)。
    • 區域:選取偏好的 AWS 區域 (例如 us-east-1)。
  4. 點選「建立」。

建立具備 S3 存取權的 IAM 使用者

  1. 開啟 IAM console。
  2. 依序按一下「使用者」 > 「新增使用者」。
  3. 輸入使用者名稱 (例如 chronicle-s3-reader)。
  4. 選取「程式輔助存取權」。
  5. 點選 [Next: Permissions] (下一步:權限)。
  6. 選擇「直接附加現有政策」。
  7. 搜尋並選取「AmazonS3FullAccess」AmazonS3FullAccess。
  8. 按一下「下一步:代碼」。
  9. 按一下 [下一步:檢閱]。
  10. 點選「Create user」。
  11. 按一下「Download .csv file」,儲存「Access Key ID」和「Secret Access Key」。
  12. 按一下 [關閉]。

設定應用程式,將資料匯出至 S3

設定自訂安全應用程式,將記錄檔寫入 S3 值區。應用程式應符合以下條件:

  • 以結構化格式 (JSON、CSV 或純文字) 寫入記錄。
  • 使用一致的檔案命名慣例。
  • 選用:依日期整理檔案 (例如 logs/2025/01/15/events.json)。
  • 寫入完整檔案 (避免部分寫入)。

  • 檔案結構範例:

    s3://custom-security-analytics-logs/
    ├── security-events/
    │   ├── 2025/01/15/
    │   │   ├── events-10-00.json
    │   │   ├── events-11-00.json
    │   │   └── events-12-00.json
    
  • 記錄檔檔案格式範例 (NDJSON):

    {"timestamp": "2025-01-15T10:00:00Z", "event_type": "login", "user": "alice@example.com", "result": "success"}
    {"timestamp": "2025-01-15T10:05:00Z", "event_type": "file_access", "user": "bob@example.com", "file": "/data/sensitive.txt"}
    {"timestamp": "2025-01-15T10:10:00Z", "event_type": "logout", "user": "alice@example.com"}
    

設定 S3 的 Google SecOps 動態饋給

  1. 依序前往「SIEM 設定」>「動態饋給」。
  2. 按一下「新增動態饋給」。
  3. 在下一個頁面中,按一下「設定單一動態饋給」。
  4. 在「Feed name」(動態饋給名稱) 欄位中,輸入動態饋給名稱 (例如 custom-security-analytics-s3)。
  5. 在「來源類型」部分,選取「Amazon S3 V2」。
  6. 「Log type」(記錄類型) 請選取「Custom Security Data Analytics」(自訂安全性資料分析)。
  7. 點選「下一步」。
  8. 指定下列輸入參數的值:

    • S3 URI:bucket URI,格式為 s3://custom-security-analytics-logs/security-events/

    • 來源刪除選項:根據偏好設定選取刪除選項:

      • Never:轉移後一律不刪除任何檔案 (建議用於測試)。
      • 刪除已轉移的檔案:成功轉移檔案後刪除檔案。
      • 刪除已轉移的檔案和空目錄:成功轉移後,刪除檔案和空目錄。
    • 檔案存在時間上限:納入過去幾天內修改過的檔案 (預設為 180 天)。

    • 存取金鑰 ID:輸入 IAM 使用者的存取金鑰。

    • 私密存取金鑰:輸入 IAM 使用者的私密金鑰。

    • 資產命名空間:資產命名空間。

    • 擷取標籤:要套用至這個動態饋給事件的標籤。

  9. 點選「下一步」。

  10. 在「Finalize」(完成) 畫面中檢查新的新聞動態消息設定,然後按一下「Submit」(提交)。

選項 3:Google Cloud Storage V2 擷取 (批次匯出)

如果自訂安全性應用程式可將記錄匯出至 Google Cloud Storage bucket,請使用這個方法。

建立 GCS bucket

  1. 前往 Google Cloud 控制台。
  2. 選取專案或建立新專案。
  3. 在導覽選單中,依序前往「Cloud Storage」>「Bucket」。
  4. 按一下「建立值區」。
  5. 提供下列設定詳細資料:

    設定 值
    為 bucket 命名 輸入全域不重複的名稱 (例如 custom-security-analytics-logs)
    位置類型 請根據需求選擇 (區域、雙區域、多區域)
    位置 選取位置 (例如 us-central1)
    儲存空間級別 標準 (建議用於經常存取的記錄)
    存取控管 統一 (建議)
    保護工具 選用:啟用物件版本管理或資料保留政策
  6. 點選「建立」。

設定應用程式,將資料匯出至 GCS

使用下列其中一種方法,設定自訂安全性應用程式,將記錄檔寫入 GCS bucket:

  • Google Cloud SDK:使用 gsutil 或用戶端程式庫
  • 服務帳戶:建立具備「Storage 物件建立者」角色的服務帳戶
  • 經簽署的網址:產生經簽署的網址,用於暫時寫入存取權

  • 使用 gsutil 的範例:

    gsutil cp /path/to/logs/events.json gs://custom-security-analytics-logs/security-events/
    
  • 使用 Python 用戶端程式庫的範例:

    from google.cloud import storage
    import json
    
    # Initialize client
    client = storage.Client()
    bucket = client.bucket('custom-security-analytics-logs')
    
    # Upload log file
    blob = bucket.blob('security-events/2025/01/15/events.json')
    
    # Write NDJSON data
    events = [
        {"timestamp": "2025-01-15T10:00:00Z", "event_type": "login"},
        {"timestamp": "2025-01-15T10:05:00Z", "event_type": "logout"}
    ]
    
    ndjson_data = '\n'.join([json.dumps(event) for event in events]) + '\n'
    blob.upload_from_string(ndjson_data, content_type='application/x-ndjson')
    

取得 Google SecOps 服務帳戶

  1. 依序前往 「SIEM 設定」 > 「動態饋給」。
  2. 按一下「新增動態消息」。
  3. 按一下「設定單一動態饋給」。
  4. 在「Feed name」(動態饋給名稱) 欄位中,輸入動態饋給名稱 (例如 custom-security-analytics-gcs)。
  5. 選取「Google Cloud Storage V2」做為「來源類型」。
  6. 「Log type」(記錄類型) 請選取「Custom Security Data Analytics」(自訂安全性資料分析)。
  7. 按一下「Get Service Account」。
  8. 系統會顯示專屬服務帳戶電子郵件地址,例如:

    chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com
    
  9. 複製這個電子郵件地址,下一個步驟將會用到。

授予 IAM 權限

  1. 依序前往「Cloud Storage」 > 「Bucket」。
  2. 點按 bucket 名稱。
  3. 前往「權限」分頁。
  4. 按一下「授予存取權」。
  5. 提供下列設定詳細資料:
    • 新增主體:貼上 Google SecOps 服務帳戶電子郵件地址。
    • 指派角色:選取「Storage 物件檢視者」。
  6. 按一下 [儲存]。

為 GCS 設定 Google SecOps 資訊提供

  1. 在動態消息建立頁面繼續操作 (或依序前往 「SIEM 設定」 > 「動態消息」 > 「新增動態消息」)。
  2. 點選「下一步」。
  3. 指定下列輸入參數的值:

    • Storage bucket URL:輸入 GCS bucket URI,並加上前置字元路徑:

      gs://custom-security-analytics-logs/security-events/
      
    • 來源刪除選項:根據偏好選取刪除選項:

      • Never:轉移後一律不刪除任何檔案 (建議用於測試)。
      • 刪除已轉移的檔案:成功轉移檔案後刪除檔案。
      • 刪除已轉移的檔案和空目錄:成功轉移後,刪除檔案和空目錄。
    • 檔案存在時間上限:納入過去幾天內修改過的檔案 (預設為 180 天)。

    • Asset namespace:資產命名空間。

    • 擷取標籤:要套用至這個動態饋給事件的標籤。

  4. 點選「下一步」。

  5. 在「Finalize」(完成) 畫面中檢查新的新聞動態消息設定,然後按一下「Submit」(提交)。

選項 4:Azure Blob Storage V2 擷取 (批次匯出)

如果自訂安全性應用程式可將記錄匯出至 Azure Blob 儲存體,請使用這個方法。

建立 Azure 儲存體帳戶

  1. 在 Azure 入口網站中,搜尋「儲存體帳戶」。
  2. 點選「+ 建立」。
  3. 提供下列設定詳細資料:

    設定 值
    訂閱項目 選取 Azure 訂閱方案
    資源群組 選取現有項目或建立新項目
    儲存空間帳戶名稱 輸入不重複的名稱 (例如 customsecuritylogs)
    區域 選取區域 (例如 East US)
    效能 標準 (建議)
    備援 GRS (異地備援儲存體) 或 LRS (本地備援儲存體)
  4. 按一下「Review + create」。

  5. 查看帳戶總覽,然後按一下「建立」。

  6. 等待部署作業完成。

取得儲存空間帳戶憑證

  1. 前往您剛建立的「儲存空間帳戶」。
  2. 在左側導覽列中,選取「Security + networking」下方的「Access keys」。
  3. 按一下「顯示金鑰」。
  4. 複製並儲存下列項目,以供日後使用:
    • 儲存空間帳戶名稱:customsecuritylogs
    • 金鑰 1 或金鑰 2:共用存取金鑰

建立 Blob 容器

  1. 在同一個儲存體帳戶中,選取左側導覽列的「容器」。
  2. 按一下「+ 容器」。
  3. 請提供下列設定詳細資料:
    • 名稱:輸入容器名稱 (例如 security-events)
    • 公開存取層級:選取「私人 (不允許匿名存取)」
  4. 點選「建立」。

設定應用程式,將資料匯出至 Azure Blob

使用下列其中一種方法,設定自訂安全性應用程式,將記錄檔寫入 Azure Blob 容器:

  • Azure CLI:使用 az storage blob upload
  • Azure SDK:使用您程式設計語言適用的用戶端程式庫
  • AzCopy:使用 AzCopy 指令列工具

示例:

  • 使用 Azure CLI 的範例:

    az storage blob upload \
        --account-name customsecuritylogs \
        --container-name security-events \
        --name logs/2025/01/15/events.json \
        --file /path/to/events.json \
        --account-key <YOUR_ACCESS_KEY>
    
  • 使用 Python SDK 的範例:

    from azure.storage.blob import BlobServiceClient
    import json
    
    # Initialize client
    connection_string = "DefaultEndpointsProtocol=https;AccountName=customsecuritylogs;AccountKey=<YOUR_KEY>;EndpointSuffix=core.windows.net"
    blob_service_client = BlobServiceClient.from_connection_string(connection_string)
    
    # Get container client
    container_client = blob_service_client.get_container_client("security-events")
    
    # Upload log file
    blob_client = container_client.get_blob_client("logs/2025/01/15/events.json")
    
    # Write NDJSON data
    events = [
        {"timestamp": "2025-01-15T10:00:00Z", "event_type": "login"},
        {"timestamp": "2025-01-15T10:05:00Z", "event_type": "logout"}
    ]
    
    ndjson_data = '\n'.join([json.dumps(event) for event in events]) + '\n'
    blob_client.upload_blob(ndjson_data, overwrite=True)
    

設定 Azure Blob 的 Google SecOps 資訊提供

  1. 依序前往「SIEM 設定」>「動態饋給」。
  2. 按一下「新增動態饋給」。
  3. 在下一個頁面中,按一下「設定單一動態饋給」。
  4. 在「Feed name」(動態饋給名稱) 欄位中,輸入動態饋給名稱 (例如 custom-security-analytics-azure)。
  5. 選取「Microsoft Azure Blob Storage V2」做為「來源類型」。
  6. 選取「自訂安全性資料分析」做為「記錄類型」。
  7. 點選「下一步」。
  8. 指定下列輸入參數的值:

    • Azure URI:輸入 Blob 服務端點網址和容器路徑:

      https://customsecuritylogs.blob.core.windows.net/security-events/
      
    • 來源刪除選項:根據偏好設定選取刪除選項:

      • 永不:轉移後一律不刪除任何檔案。
      • 刪除已轉移的檔案:在成功轉移後刪除檔案。
      • 刪除已轉移的檔案和空目錄:成功轉移後,刪除檔案和空目錄。
    • 檔案存在時間上限:納入過去幾天內修改過的檔案 (預設為 180 天)。

    • 共用金鑰:輸入儲存空間帳戶的共用金鑰值 (存取金鑰)。

    • Asset namespace:資產命名空間。

    • 擷取標籤:要套用至這個動態饋給事件的標籤。

  9. 點選「下一步」。

  10. 在「Finalize」(完成) 畫面中檢查新的新聞動態消息設定,然後按一下「Submit」(提交)。

選項 5:Amazon Data Firehose 擷取 (即時串流)

如果自訂安全性應用程式會將記錄寫入 Amazon CloudWatch Logs,且您需要即時串流至 Google SecOps,請使用這個方法。

建立 Google SecOps Firehose 動態饋給

  1. 依序前往「SIEM 設定」>「動態饋給」。
  2. 按一下「新增動態饋給」。
  3. 在「動態饋給名稱」欄位中輸入動態饋給名稱 (例如 custom-security-analytics-firehose)。
  4. 「Source type」(來源類型) 請選取「Amazon Data Firehose」。
  5. 選取「自訂安全性資料分析」做為「記錄類型」。
  6. 點選「下一步」。
  7. 指定下列輸入參數的值:
    • 分割分隔符號:選用:輸入 \n,即可分割以換行符號分隔的記錄。
    • Asset namespace:資產命名空間。
    • 擷取標籤:要套用至這個動態饋給事件的標籤。
  8. 點選「下一步」。
  9. 檢查動態饋給設定,然後按一下「提交」。
  10. 按一下「產生密鑰」,產生用於驗證這個動態饋給的密鑰。
  11. 複製並儲存密鑰,因為您無法再次查看。
  12. 前往「詳細資料」分頁。
  13. 複製「端點資訊」欄位中的動態饋給端點網址。
  14. 按一下「完成」。

建立 Google Cloud API 金鑰

  1. 前往 Google Cloud 控制台的「憑證」頁面:https://console.cloud.google.com/apis/credentials
  2. 按一下 [Create credentials] (建立憑證),然後選取 [API key] (API 金鑰)。
  3. 按一下「編輯 API 金鑰」,即可限制金鑰。
  4. 在「API 限制」下方,選取「限制金鑰」。
  5. 搜尋並選取「Google SecOps API」。
  6. 按一下 [儲存]。
  7. 複製並儲存 API 金鑰。

建構端點網址

  1. 以以下格式將 API 金鑰附加至動態饋給端點網址:

    <FEED_ENDPOINT_URL>?key=<API_KEY>
    

    範例:

    https://{region}-chronicle.googleapis.com/v1/{parent}/logs:import?key=AIzaSyD...
    
  2. 請儲存這個完整網址,以便在下一個步驟使用。

為 Firehose 建立 IAM 政策

  1. 在 AWS 控制台中,依序前往「IAM」>「Policies」>「Create policy」>「JSON」分頁標籤。
  2. 貼上以下政策 JSON:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "firehose:PutRecord",
                    "firehose:PutRecordBatch"
                ],
                "Resource": "arn:aws:firehose:<REGION>:<ACCOUNT_ID>:deliverystream/CustomSecurityToChronicle"
            }
        ]
    }
    
  3. 更改下列內容:

    • <REGION>:您的 AWS 區域 (例如 us-east-1)。
    • <ACCOUNT_ID>:您的 AWS 帳戶 ID (12 位數)。
  4. 將政策命名為 CloudWatchLogsToFirehosePolicy。

  5. 點選「建立政策」。

為 CloudWatch Logs 建立 IAM 角色

  1. 依序前往「IAM」>「角色」>「建立角色」。
  2. 選取「Custom trust policy」,然後貼上以下內容:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": {
                    "Service": "logs.<REGION>.amazonaws.com"
                },
                "Action": "sts:AssumeRole"
            }
        ]
    }
    
  3. 將 <REGION> 替換為您的 AWS 區域。

  4. 點選「下一步」。

  5. 搜尋並選取您在上一個步驟中建立的政策 CloudWatchLogsToFirehosePolicy。

  6. 點選「下一步」。

  7. 將角色命名為 CloudWatchLogsToFirehoseRole。

  8. 按一下「建立角色」。

建立 Kinesis Data Firehose 交付串流

  1. 在 AWS 控制台中,依序前往「Kinesis」>「Data Firehose」>「Create delivery stream」。
  2. 提供下列設定詳細資料:

    • 來源和目的地:

      • 來源:選取「直接 PUT 或其他來源」
      • 目的地:選取「HTTP 端點」
    • Delivery stream name:

      • Delivery stream name:輸入 CustomSecurityToChronicle
    • HTTP 端點目的地:

      • HTTP 端點網址:輸入先前建立的完整端點網址 (動態饋給端點 + API 金鑰)
      • 內容編碼:選取「GZIP」 (建議選用,可節省頻寬)
    • 自訂 HTTP 標頭:

      • 按一下「新增自訂 HTTP 標頭」
      • 標頭名稱:輸入 X-Goog-Chronicle-Auth
      • 標頭值:輸入您在先前步驟中儲存的 Secret 金鑰
    • 備份設定:

      • Source record backup in Amazon S3:選取「Failed data only」 (建議)
      • S3 bucket:選取現有 bucket 或建立新 bucket,用於存放失敗記錄
    • 緩衝區提示:

      • 緩衝區大小:輸入 1 MiB (HTTP 端點的最小值)
      • 緩衝間隔:輸入 60 秒
    • 重試時間長度:

      • 重試時間長度:輸入 300 秒 (5 分鐘)
  3. 按一下「建立放送串流」。

  4. 等待推送串流狀態變更為「Active」(1 至 2 分鐘)。

將 CloudWatch 日誌群組訂閱至 Firehose

  1. 在 AWS 控制台中,依序前往「CloudWatch」>「Logs」>「Log groups」。
  2. 選取包含自訂安全分析記錄的目標記錄群組。
  3. 按一下「訂閱項目篩選器」分頁標籤。
  4. 依序點選「Create」 > 「Create Amazon Kinesis Data Firehose subscription filter」。
  5. 提供下列設定詳細資料:
    • 目的地:選取放送串流 CustomSecurityToChronicle。
    • 授予權限:選取角色 CloudWatchLogsToFirehoseRole。
    • 訂閱項目篩選器名稱:輸入 CustomSecurityToChronicle。
    • 記錄格式:選取「其他」 (Google SecOps 會處理剖析作業)。
    • 訂閱篩選器模式:如要傳送所有事件,請留空;如要只傳送特定事件,請輸入篩選器模式。
  6. 按一下「開始串流播放」。
  7. 記錄現在會透過 Firehose 即時串流至 Google SecOps。

建立自訂剖析器 (選用)

將自訂安全性資料擷取為非結構化記錄後,您可以建立自訂剖析器,將資料正規化為 UDM 格式,以便搜尋及偵測。

建立自訂剖析器的時機

在下列情況下,請建立自訂剖析器:

  • 您需要從自訂記錄格式中擷取特定欄位
  • 您想對自訂資料啟用 UDM 搜尋功能
  • 您必須將自訂欄位對應至標準 UDM 欄位,才能用於偵測規則
  • 您想為特定欄位建立索引,提升搜尋成效

建立自訂記錄類型

  1. 依序前往「SIEM 設定」>「可用記錄類型」。
  2. 按一下「要求記錄類型」。
  3. 在「Create a custom log type or request a prebuilt log type」(建立自訂記錄類型或要求預先建構的記錄類型) 區段下方,選取「Create a custom log type」(建立自訂記錄類型)。
  4. 請提供下列資訊:
    • 記錄類型名稱:輸入描述性名稱 (例如 CUSTOM_SECURITY_ANALYTICS)。
    • 說明:輸入記錄檔類型的說明。
    • 記錄檔範例:貼上 5 到 10 個原始格式的記錄項目範例。
  5. 按一下「提交」。
  6. 自訂記錄類型約 10 分鐘後即可使用。

建立自訂剖析器

  1. 依序前往 「SIEM Settings」 > 「Parsers」。
  2. 按一下「建立剖析器」。
  3. 選取「Custom Parser」(自訂剖析器)。
  4. 請提供下列資訊:
    • 剖析器名稱:輸入描述性名稱
    • 記錄類型:選取自訂記錄類型 (例如 CUSTOM_SECURITY_ANALYTICS)
    • 剖析器程式碼:使用 Google SecOps 的剖析器設定語言輸入剖析器設定
  5. 使用範例記錄測試剖析器。
  6. 按一下「Submit」(提交),啟用剖析器。

剖析器設定範例

  • 自訂 JSON 記錄格式:

    {
        "timestamp": "2025-01-15T10:30:00Z",
        "event_type": "authentication",
        "user": "john.doe@example.com",
        "action": "login",
        "result": "success",
        "source_ip": "203.0.113.45"
    }
    

    剖析器設定範例:

    filter {
        json {
            fields {
                timestamp: timestamp
                event_type: event_type
                user: user
                action: action
                result: result
                source_ip: source_ip
            }
        }
    }
    
    event {
        $e.metadata.event_timestamp.seconds = parseTimestamp(timestamp, "yyyy-MM-dd'T'HH:mm:ss'Z'")
        $e.metadata.event_type = "USER_LOGIN"
        $e.principal.user.email_addresses = user
        $e.target.ip = source_ip
        $e.security_result.action = if(result == "success", "ALLOW", "BLOCK")
    }
    

    如要進一步瞭解如何建立自訂剖析器,請參閱「管理預先建構和自訂剖析器」。

驗證資料擷取作業

設定動態饋給後,請確認資料是否成功擷取。

查看動態消息狀態

  1. 依序前往「SIEM 設定」>「動態饋給」。
  2. 在清單中找出動態消息。
  3. 查看「狀態」欄:
    • 有效:動態饋給正在執行並擷取資料
    • 錯誤:動態饋給發生錯誤 (按一下即可查看詳細資料)
    • 已暫停:動態饋給已暫停

搜尋擷取的記錄

  1. 依序前往 「Search」 > 「Raw Log Scan」。
  2. 輸入搜尋查詢,找出自訂記錄:

    metadata.log_type = "CUSTOM_SECURITY_DATA_ANALYTICS"
    
  3. 視需要調整日期範圍。

  4. 按一下 [搜尋]。

  5. 確認記錄顯示在結果中。

監控動態饋給指標

  1. 依序前往 「SIEM 設定」 > 「動態饋給」。
  2. 按一下動態饋給名稱。
  3. 前往「指標」分頁。
  4. 查看下列指標:
    • 擷取的事件數量:擷取的事件總數
    • 擷取的位元組:擷取的資料總量
    • 擷取率:每秒事件數
    • 錯誤:擷取錯誤數量

疑難排解

Webhook 擷取問題

  • 問題:HTTP 401 未經授權

    • 原因:API 金鑰或密鑰無效
    • 解決方法:確認 API 金鑰和密鑰正確無誤且未過期
  • 問題:HTTP 403 禁止存取

    • 原因:API 金鑰沒有 Chronicle API 權限
    • 解決方案:編輯 API 金鑰,並確認已在「API 限制」下方選取「Chronicle API」
  • 問題:HTTP 400 錯誤的要求

    • 原因:要求格式或酬載無效
    • 解決方案:確認 Content-Type 標頭設為 application/json,且酬載為有效的 JSON

S3/GCS/Azure Blob 擷取問題

  • 問題:未擷取任何資料

    • 原因:bucket URI 不正確或缺少權限
    • 解決方案:確認 bucket URI 包含結尾斜線,且服務帳戶具備 Storage 物件檢視者角色
  • 問題:檔案在擷取後未刪除

    • 原因:服務帳戶沒有刪除權限
    • 解決方案:授予「Storage 物件管理員」角色,而非「Storage 物件檢視者」
  • 問題:舊檔案未擷取

    • 原因:檔案最長效期設定會排除舊檔案
    • 解決方法:在動態饋給設定中提高「檔案最長效期」值

Firehose 擷取問題

  • 問題:傳送串流顯示錯誤

    • 原因:端點網址或驗證無效
    • 解決方法:確認端點網址包含 API 金鑰參數,且 X-Goog-Chronicle-Auth 標頭包含正確的密鑰
  • 問題:資料更新間隔指標過高

    • 原因:Firehose 受到節流或發生傳送失敗
    • 解決方案:查看 CloudWatch 指標,瞭解 ThrottledRecords 和 DeliveryToHTTP.Success 速率
  • 問題:CloudWatch 沒有串流記錄

    • 原因:未設定訂閱項目篩選器,或 IAM 角色缺少權限
    • 解決方案:確認訂閱篩選器已啟用,且 IAM 角色具備 firehose:PutRecord 權限

UDM 對應表

自訂安全資料分析記錄會以非結構化資料的形式擷取。如要啟用 UDM 欄位對應功能,請按照上方「建立自訂剖析器」一節的說明,建立自訂剖析器。

建立自訂剖析器後,系統會根據剖析器設定填入 UDM 欄位。安全性分析資料的常見 UDM 欄位包括:

UDM 欄位 說明
metadata.event_timestamp 事件時間戳記
metadata.event_type 事件類型 (例如 USER_LOGIN、FILE_ACCESS)
principal.user.email_addresses 使用者電子郵件地址
principal.ip 來源 IP 位址
target.resource.name 目標資源名稱
security_result.action 安全性動作 (允許、封鎖等)
security_result.severity 事件嚴重程度

如需完整的 UDM 欄位清單,請參閱「UDM 欄位參考資料」。

變更記錄

查看這個剖析器的變更記錄

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