整合 BigQuery 與 Google SecOps

本文說明如何將 BigQuery 與 Google Security Operations 整合。

用途

BigQuery 整合功能會使用 Google SecOps 功能,支援下列用途:

  • 威脅情報擴充:自動使用儲存在 BigQuery 資料儲存庫的威脅情報資料擴充安全性警示,評估潛在威脅的嚴重性和可信度。

  • 使用者行為分析:分析儲存在 BigQuery 的歷來記錄,找出異常的使用者活動,偵測內部威脅和遭盜用的帳戶。

  • 安全性資料湖泊分析:使用 BigQuery 查詢功能,分析從各種來源匯總的大量安全性資料,提升威脅偵查能力。

  • 進階機器學習/AI 分析:使用歷來安全性資料和 BigQuery ML,建構自訂模型,進行預測性防禦和自動風險評分。

  • 長期資料保留:將已解決的事件資料封存至 BigQuery,以符合成本效益的方式長期儲存,支援法規遵循和鑑識稽核。

事前準備

在 Google SecOps 中設定 BigQuery 整合前,請先完成下列必要步驟:

  1. 將必要的 Identity and Access Management 角色授予服務帳戶。

  2. 建立服務帳戶。

  3. 選擇並設定下列其中一種驗證方式:

    • 方法 1:Workload Identity (建議):這個方法會使用服務帳戶模擬功能,產生短期臨時存取權杖。

    • 方法 2:服務帳戶 JSON 金鑰:這個方法會使用靜態、長期有效的密鑰檔案。

授予 IAM 角色

將必要權限授予服務帳戶,整合功能就能執行工作及存取資料。下列標準角色由 Google Cloud 管理,並會在 API 需求變更時自動更新。如要將這些角色指派給服務帳戶,請完成下列步驟:

  1. 前往 Google Cloud 控制台的「IAM」頁面。

    前往「IAM」(身分與存取權管理) 頁面

  2. 在主體清單中找到您的服務帳戶,然後按一下「Edit principal」(編輯主體) (編輯)。

  3. 按一下「Add another role」(新增其他角色),然後選取下列項目:

    • BigQuery 使用者 (roles/bigquery.user):允許整合在專案中執行工作,包括查詢。

    • BigQuery 資料檢視者 (roles/bigquery.dataViewer):可讓整合作業讀取資料集和資料表中的資料和中繼資料。

    • 服務使用情形消費者 (roles/serviceusage.serviceUsageConsumer):如果您在整合設定中設定 Quota Project ID,則必須具備這個角色。

  4. 按一下 [儲存]。

建立服務帳戶

  1. 在 Google Cloud 控制台,依序前往 「IAM & Admin」(IAM 與管理) >「Service Accounts」(服務帳戶)。

    前往「Service Accounts」(服務帳戶)

  2. 按一下「add」「Create service account」(建立服務帳戶)。

  3. 輸入名稱和說明,然後按一下「Create and continue」(建立並繼續)。

  4. 在「Grant this service account access to project」(將專案存取權授予這個服務帳戶) 步驟中,新增上一個步驟中確定的角色。

  5. 點按「Done」(完成)。記下服務帳戶的電子郵件地址。

設定 Workload Identity 憑證

建議使用 Workload Identity,因為這種方法會透過服務帳戶模擬功能,使用短期存取權杖。

找出專屬執行個體身分

建立連線時,必須授予 Google SecOps 執行個體權限,才能模擬服務帳戶。

  1. 在 Google SecOps 中,依序前往 「Content Hub」 >「Response Integrations」。

  2. 選取「BigQuery」BigQuery整合,然後在 Workload Identity Email 欄位中輸入服務帳戶電子郵件地址。

  3. 依序點選「儲存」 > 「測試」。測試預計會失敗。

  4. 按一下「Test」(測試) 旁的 close_small 按鈕,然後找出開頭為 gke-init-python@... 或 soar-python@... 的身分電子郵件。

  5. 複製這個專屬電子郵件地址。

在 Google Cloud中授權執行個體身分

  1. 在 Google Cloud 控制台,依序前往 「IAM & Admin」(IAM 與管理) >「Service Accounts」(服務帳戶)。

    前往「Service Accounts」(服務帳戶)

  2. 選取目標服務帳戶,然後依序前往 「Permissions」(權限) >「Grant Access」(授予存取權)。

  3. 將不重複的電子郵件地址貼到「New principals」(新增主體) 欄位,並指派「Service Account Token Creator」(服務帳戶權杖建立者) 角色 (roles/iam.serviceAccountTokenCreator)。

設定 JSON 金鑰

靜態、長期有效的密鑰檔案需要手動輪替。只有在無法使用 Workload Identity 驗證時,才應採用這個方法。

  1. 在 Google Cloud 控制台中,依序前往 「IAM & Admin」(IAM 與管理) >「Service Accounts」(服務帳戶),然後選取 服務帳戶。

    前往「Service Accounts」(服務帳戶)

  2. 前往「金鑰」分頁,依序點選「新增金鑰」 > 「建立新的金鑰」。

  3. 選取「JSON」,然後點選「建立」。檔案會自動下載到電腦。

手動設定個別參數

如果您選擇手動輸入憑證,請在文字編輯器中開啟下載的 JSON 金鑰檔案,複製整合設定所需的個別值。

整合參數

如要建立 Google SecOps 與 BigQuery 之間的連線,您必須設定下列參數。這項整合支援三種不同的驗證路徑。請選擇下列其中一種方法提供憑證。

  • Workload Identity:使用 Workload Identity Email 和 Quota Project ID。

  • 服務帳戶 JSON 檔案:使用 Service Account Json File Content 一次提供完整金鑰。

  • 手動個別參數:使用從 JSON 金鑰手動複製的個別欄位。

參數 說明
API Root

選填。

BigQuery 執行個體的 API 根目錄 (例如 https://bigquery.googleapis.com)。

Workload Identity Email

選填。

服務帳戶的用戶端電子郵件地址。請使用這個帳戶進行 Workload Identity 驗證。

Service Account Json File Content

選填。

服務帳戶金鑰 JSON 檔案的完整內容。

如果設定這項參數,整合功能會忽略個別憑證參數。

Quota Project ID

選填。

用於 API 使用和計費的專案 ID。使用 Workload Identity 驗證時,必須提供這個參數。

Project ID

選填。

BigQuery 中的目標專案 ID。

Verify SSL

這是必填欄位。

驗證連線的 SSL 憑證。(預設為啟用)。

個人憑證參數

只有在手動輸入憑證,而非使用完整 JSON 檔案內容或 Workload Identity 時,才使用下列參數。

參數 說明
Account Type

選填。

JSON 金鑰 type 欄位中的值 (通常為 service_account)。

Private Key ID

選填。

JSON 金鑰 private_key_id 欄位中的值。

Private Key

選填。

JSON 金鑰 private_key 欄位中的值。

Client Email

選填。

JSON 金鑰 client_email 欄位中的值。

Client ID

選填。

JSON 金鑰 client_id 欄位中的值。

Auth URI

選填。

JSON 金鑰 auth_uri 欄位中的值。

預設值為 https://accounts.google.com/o/oauth2/auth。

Token URI

選填。

JSON 金鑰 token_uri 欄位中的值。

預設值為 https://oauth2.googleapis.com/token。

Auth Provider X509 URL

選填。

JSON 金鑰 auth_provider_x509_cert_url 欄位中的值。

Client X509 URL

選填。

JSON 金鑰 client_x509_cert_url 欄位中的值。

如要瞭解如何在 Google SecOps 中設定整合功能,請參閱「設定整合功能」。

如有需要,您可以在後續階段進行變更。設定整合執行個體後,即可在應對手冊中使用。如要進一步瞭解如何設定及支援多個執行個體,請參閱「支援多個執行個體」。

動作

如要進一步瞭解動作,請參閱「 在工作區回應待處理動作」和「在案件中執行手動動作」。

乒乓

使用 Ping 動作測試與 BigQuery 的連線能力。

這項動作不會在 Google SecOps 實體上執行。

動作輸入內容

無

動作輸出內容

Ping 動作會提供下列輸出內容:

動作輸出類型 可用性
案件總覽附件 無法使用
案件總覽連結 無法使用
案件總覽表格 無法使用
補充資訊表格 無法使用
JSON 結果 無法使用
輸出訊息 可用
指令碼執行結果 可用
輸出訊息

Ping 動作可能會傳回下列輸出訊息:

輸出訊息 訊息說明
Successfully connected to the Google BigQuery server with the provided connection parameters! 動作成功。
Failed to connect to the Google BigQuery server! Error is ERROR_REASON

動作失敗。

請檢查伺服器連線、輸入參數或憑證。

指令碼執行結果

下表列出使用 Ping 動作時,指令碼結果輸出的值:

指令碼結果名稱 值
is_success True或False

執行自訂查詢

使用「Run Custom Query」(執行自訂查詢) 動作,在 BigQuery 中執行自訂查詢。

這項動作不會在 Google SecOps 實體上執行。

動作輸入內容

「Run Custom Query」(執行自訂查詢) 動作需要下列參數:

參數 說明
Query

這是必填欄位。

要執行的 SQL 查詢。

Max Results To Return

選填。

每個回應要傳回的結果數量。

預設值為 50。

動作輸出內容

「執行自訂查詢」動作會提供下列輸出內容:

動作輸出類型 可用性
案件總覽附件 無法使用
案件總覽連結 無法使用
案件總覽表格 無法使用
補充資訊表格 無法使用
JSON 結果 可用
輸出訊息 可用
指令碼執行結果 可用
JSON 結果

以下範例顯示使用「Run Custom Query」(執行自訂查詢) 動作時,收到的 JSON 結果輸出內容:

{
    "Airport_Code": "CODE",
    "Airport_Name": "NAME",
    "Time_Label": "2015/05",
    "Time_Month": 5,
    "Time_Month_Name": "May",
    "Time_Year": 2015,
    "Statistics___of_Delays_Carrier": 351,
    "Statistics___of_Delays_Late_Aircraft": 546,
    "Statistics___of_Delays_National_Aviation_System": 292,
    "Statistics___of_Delays_Security": 2,
    "Statistics___of_Delays_Weather": 100,
    "Statistics_Carriers_Names": "Example Air Lines Inc., Example Airlines Co.",
    "Statistics_Carriers_Total": 3,
    "Statistics_Flights_Cancelled": 88,
    "Statistics_Flights_Delayed": 1289,
    "Statistics_Flights_Diverted": 32,
    "Statistics_Flights_On_Time": 6182,
    "Statistics_Flights_Total": 7591,
    "Statistics_Minutes_Delayed_Carrier": 19332,
    "Statistics_Minutes_Delayed_Late_Aircraft": 34376,
    "Statistics_Minutes_Delayed_National_Aviation_System": 12346,
    "Statistics_Minutes_Delayed_Security": 48,
    "Statistics_Minutes_Delayed_Total": 76163,
    "Statistics_Minutes_Delayed_Weather": 100061
}
輸出訊息

「Run Custom Query」動作可傳回下列輸出訊息:

輸出訊息 訊息說明
Successfully executed query in Google BigQuery! 動作成功。
Error executing action "Run Custom Query". Reason: ERROR_REASON

動作失敗。

請檢查伺服器連線、輸入參數或憑證。

指令碼執行結果

下表列出使用「Run Custom Query」(執行自訂查詢) 動作時,指令碼結果輸出的值:

指令碼結果名稱 值
is_success True或False

執行 SQL 查詢

使用「執行 SQL 查詢」動作,在 BigQuery 中執行查詢。

這項動作不會在 Google SecOps 實體上執行。

動作輸入內容

「Run SQL Query」(執行 SQL 查詢) 動作需要下列參數:

參數 說明
Dataset Name

這是必填欄位。

執行查詢時要使用的資料集名稱。

Query

這是必填欄位。

要執行的 SQL 查詢。

Max Results To Return

選填。

每個回應要傳回的結果數量。

預設值為 50。

動作輸出內容

「執行 SQL 查詢」動作會提供下列輸出內容:

動作輸出類型 可用性
案件總覽附件 無法使用
案件總覽連結 無法使用
案件總覽表格 無法使用
補充資訊表格 無法使用
JSON 結果 無法使用
輸出訊息 可用
指令碼執行結果 可用
JSON 結果

以下範例說明使用「Run SQL Query」動作時,收到的 JSON 結果輸出內容:

{
    "Airport_Code": "CODE",
    "Airport_Name": "NAME",
    "Time_Label": "2015/05",
    "Time_Month": 5,
    "Time_Month_Name": "May",
    "Time_Year": 2015,
    "Statistics___of_Delays_Carrier": 351,
    "Statistics___of_Delays_Late_Aircraft": 546,
    "Statistics___of_Delays_National_Aviation_System": 292,
    "Statistics___of_Delays_Security": 2,
    "Statistics___of_Delays_Weather": 100,
    "Statistics_Carriers_Names": "Example Airlines Inc.,Example Airlines Co.",
    "Statistics_Carriers_Total": 3,
    "Statistics_Flights_Cancelled": 88,
    "Statistics_Flights_Delayed": 1289,
    "Statistics_Flights_Diverted": 32,
    "Statistics_Flights_On_Time": 6182,
    "Statistics_Flights_Total": 7591,
    "Statistics_Minutes_Delayed_Carrier": 19332,
    "Statistics_Minutes_Delayed_Late_Aircraft": 34376,
    "Statistics_Minutes_Delayed_National_Aviation_System": 12346,
    "Statistics_Minutes_Delayed_Security": 48,
    "Statistics_Minutes_Delayed_Total": 76163,
    "Statistics_Minutes_Delayed_Weather": 100061
}
輸出訊息

「執行 SQL 查詢」動作可傳回下列輸出訊息:

輸出訊息 訊息說明
Successfully executed query in the BigQuery dataset DATASET_NAME. 動作成功。
Error executing action "Run SQL Query". Reason: ERROR_REASON

動作失敗。

請檢查伺服器連線、輸入參數或憑證。

指令碼執行結果

下表列出使用「Run SQL Query」(執行 SQL 查詢) 動作時,指令碼結果輸出的值:

指令碼結果名稱 值
is_success True或False

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