整合 BigQuery 與 Google SecOps
本文說明如何將 BigQuery 與 Google Security Operations 整合。
用途
BigQuery 整合功能會使用 Google SecOps 功能,支援下列用途:
威脅情報擴充:自動使用儲存在 BigQuery 資料儲存庫的威脅情報資料擴充安全性警示,評估潛在威脅的嚴重性和可信度。
使用者行為分析:分析儲存在 BigQuery 的歷來記錄,找出異常的使用者活動,偵測內部威脅和遭盜用的帳戶。
安全性資料湖泊分析:使用 BigQuery 查詢功能,分析從各種來源匯總的大量安全性資料,提升威脅偵查能力。
進階機器學習/AI 分析:使用歷來安全性資料和 BigQuery ML,建構自訂模型,進行預測性防禦和自動風險評分。
長期資料保留:將已解決的事件資料封存至 BigQuery,以符合成本效益的方式長期儲存,支援法規遵循和鑑識稽核。
事前準備
在 Google SecOps 中設定 BigQuery 整合前,請先完成下列必要步驟:
選擇並設定下列其中一種驗證方式:
方法 1:Workload Identity (建議):這個方法會使用服務帳戶模擬功能,產生短期臨時存取權杖。
方法 2:服務帳戶 JSON 金鑰:這個方法會使用靜態、長期有效的密鑰檔案。
授予 IAM 角色
將必要權限授予服務帳戶,整合功能就能執行工作及存取資料。下列標準角色由 Google Cloud 管理,並會在 API 需求變更時自動更新。如要將這些角色指派給服務帳戶,請完成下列步驟:
前往 Google Cloud 控制台的「IAM」頁面。
在主體清單中找到您的服務帳戶,然後按一下「Edit principal」(編輯主體) (編輯)。
按一下「Add another role」(新增其他角色),然後選取下列項目:
BigQuery 使用者 (
roles/bigquery.user):允許整合在專案中執行工作,包括查詢。BigQuery 資料檢視者 (
roles/bigquery.dataViewer):可讓整合作業讀取資料集和資料表中的資料和中繼資料。服務使用情形消費者 (
roles/serviceusage.serviceUsageConsumer):如果您在整合設定中設定Quota Project ID,則必須具備這個角色。
按一下 [儲存]。
建立服務帳戶
在 Google Cloud 控制台,依序前往 「IAM & Admin」(IAM 與管理) >「Service Accounts」(服務帳戶)。
按一下「add」「Create service account」(建立服務帳戶)。
輸入名稱和說明,然後按一下「Create and continue」(建立並繼續)。
在「Grant this service account access to project」(將專案存取權授予這個服務帳戶) 步驟中,新增上一個步驟中確定的角色。
點按「Done」(完成)。記下服務帳戶的電子郵件地址。
設定 Workload Identity 憑證
建議使用 Workload Identity,因為這種方法會透過服務帳戶模擬功能,使用短期存取權杖。
找出專屬執行個體身分
建立連線時,必須授予 Google SecOps 執行個體權限,才能模擬服務帳戶。
在 Google SecOps 中,依序前往 「Content Hub」 >「Response Integrations」。
選取「BigQuery」BigQuery整合,然後在
Workload Identity Email欄位中輸入服務帳戶電子郵件地址。依序點選「儲存」 > 「測試」。測試預計會失敗。
按一下「Test」(測試) 旁的 close_small 按鈕,然後找出開頭為
gke-init-python@...或soar-python@...的身分電子郵件。複製這個專屬電子郵件地址。
在 Google Cloud中授權執行個體身分
在 Google Cloud 控制台,依序前往 「IAM & Admin」(IAM 與管理) >「Service Accounts」(服務帳戶)。
選取目標服務帳戶,然後依序前往 「Permissions」(權限) >「Grant Access」(授予存取權)。
將不重複的電子郵件地址貼到「New principals」(新增主體) 欄位,並指派「Service Account Token Creator」(服務帳戶權杖建立者) 角色 (
roles/iam.serviceAccountTokenCreator)。
設定 JSON 金鑰
靜態、長期有效的密鑰檔案需要手動輪替。只有在無法使用 Workload Identity 驗證時,才應採用這個方法。
在 Google Cloud 控制台中,依序前往 「IAM & Admin」(IAM 與管理) >「Service Accounts」(服務帳戶),然後選取 服務帳戶。
前往「金鑰」分頁,依序點選「新增金鑰」 > 「建立新的金鑰」。
選取「JSON」,然後點選「建立」。檔案會自動下載到電腦。
手動設定個別參數
如果您選擇手動輸入憑證,請在文字編輯器中開啟下載的 JSON 金鑰檔案,複製整合設定所需的個別值。
整合參數
如要建立 Google SecOps 與 BigQuery 之間的連線,您必須設定下列參數。這項整合支援三種不同的驗證路徑。請選擇下列其中一種方法提供憑證。
Workload Identity:使用
Workload Identity Email和Quota Project ID。服務帳戶 JSON 檔案:使用
Service Account Json File Content一次提供完整金鑰。手動個別參數:使用從 JSON 金鑰手動複製的個別欄位。
| 參數 | 說明 |
|---|---|
API Root |
選填。 BigQuery 執行個體的 API 根目錄 (例如 |
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 金鑰 |
Private Key ID |
選填。 JSON 金鑰 |
Private Key |
選填。 JSON 金鑰 |
Client Email |
選填。 JSON 金鑰 |
Client ID |
選填。 JSON 金鑰 |
Auth URI |
選填。 JSON 金鑰 預設值為 |
Token URI |
選填。 JSON 金鑰 預設值為 |
Auth Provider X509 URL |
選填。 JSON 金鑰 |
Client X509 URL |
選填。 JSON 金鑰 |
如要瞭解如何在 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 |
選填。 每個回應要傳回的結果數量。 預設值為 |
動作輸出內容
「執行自訂查詢」動作會提供下列輸出內容:
| 動作輸出類型 | 可用性 |
|---|---|
| 案件總覽附件 | 無法使用 |
| 案件總覽連結 | 無法使用 |
| 案件總覽表格 | 無法使用 |
| 補充資訊表格 | 無法使用 |
| 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 |
選填。 每個回應要傳回的結果數量。 預設值為 |
動作輸出內容
「執行 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 專業人員尋求解答。