BigQuery 威脅模型報表

上次更新日期:2026 年 4 月 16 日

本文將說明 BigQuery 資料機密性、完整性和可用性的潛在攻擊途徑,以及因應策略。這份報表的範圍僅限於您的觀點,著重於您可以在 BigQuery 環境中管理的風險。

這些威脅模型是根據目前已知的攻擊向量、架構假設,以及發布時系統的指定範圍,進行機率評估。這些模型並非詳盡無遺,僅做為 Google Cloud 客戶安全和風險評估的基準,並引導他們做出降低風險的決策。

這項服務發現下列威脅:

威脅詳細資料

以下各節將說明每種威脅、威脅的表現方式,以及建議的緩解措施。

透過結構定義竄改來銷毀資料

如果攻擊者有權修改資料表結構定義,可能會導致資料遺失,或使下游應用程式無法使用資料表。這類竄改行為會針對資料的中繼資料和結構,破壞力與修改資料本身不相上下。

STRIDE 類別

遭破壞

MITRE ATT&CK 策略

影響

裝飾玻璃貼紙

惡意更新結構定義:具有 bigquery.tables.update 權限的主體可以對 BigQuery 資料表呼叫 tables.patch API 方法,藉此變更資料表的結構定義。變更資料欄資料類型可能會導致資料損毀或資訊遺失,進而中斷用戶端應用程式或商業智慧工具的查詢,導致下游報表失去可信度。

因應措施

嚴格限制 bigquery.tables.update 權限,這是 roles/bigquery.dataOwner 等角色中有的權限。請只將這項權限授予少數幾位負責管理結構定義遷移作業的系統管理員或自動化 CI/CD 服務帳戶。啟用 BigQuery 資料表備份功能,或使用資料表快照,從意外或惡意的結構定義變更中復原。監控 Cloud 稽核記錄中的 tables.patch API 呼叫,並在計畫維護期間以外進行任何變更時發出快訊。

透過竄改 IAM 允許政策提權

如果攻擊者入侵有權修改 BigQuery IAM 允許政策的主體,就能提升權限,完全掌控資料資源。攻擊者可藉此威脅授予讀取、修改或刪除機密資料的權限,繞過現有的存取控管機制。

STRIDE 類別

權限提升

MITRE ATT&CK 策略

提權

裝飾玻璃貼紙
  • 修改資料集政策:具有 bigquery.datasets.update 權限的主體可以對 BigQuery 資料集呼叫 datasets.patch API 方法,將自己的身分新增至擁有者角色,授予該主體對資料集中所有資源的完整控制權。

  • 服務帳戶模擬:如果身分在服務帳戶上具有 iam.serviceAccounts.actAs 權限,即可將服務帳戶附加至其他資源 (例如 Compute Engine 執行個體),以附加服務帳戶的身分執行程式碼。或者,具有 iam.serviceAccounts.getAccessToken 權限的身分也可以為該服務帳戶產生存取權杖。如果目標服務帳戶在 BigQuery 資源中擁有較高的權限,攻擊者就能有效繼承這些權限。

因應措施

嚴格限制允許修改 IAM 允許政策的權限 (例如 bigquery.datasets.update,這是 roles/bigquery.dataOwner 等角色的一部分)。只將這些角色指派給最少數量的可信管理員。同樣地,請嚴格控管有權以服務帳戶身分執行動作或模擬服務帳戶的 IAM 角色,並將這些角色限定在需要此權限的特定主體。監控 Cloud 稽核記錄中的 SetIamPolicydatasets.patch API 呼叫,偵測未經授權的政策變更。

使用 BigQuery 觸發的下游服務濫用混淆副手

攻擊者擁有有限的 BigQuery 權限,但建立的工作或查詢會觸發下游服務 (例如 Cloud Function、Dataflow 工作或 Cloud Composer DAG),並以較高的權限執行。下游服務會以為自己代表 BigQuery 執行正當動作,但實際上卻是受到欺騙,對不同資源或使用不同資料執行動作,與系統設計人員的意圖不符。

STRIDE 類別

權限提升

MITRE ATT&CK 策略

提權

裝飾玻璃貼紙
  • 惡意觸發函式:BigQuery 變更會觸發具有廣泛權限的 Cloud Function,攻擊者會操控 BigQuery 資料,藉此控制函式的動作。

  • 濫用 Dataflow 管道:BigQuery 查詢結果會做為 Dataflow 工作的輸入內容,攻擊者會寫入查詢結果,導致 Dataflow 工作擷取遭竄改的資料。

因應措施

對 BigQuery 觸發的下游服務所用服務帳戶,套用最低權限原則。請確保這些服務會驗證並清除從 BigQuery 工作收到的任何輸入內容或參數。使用 VPC Service Controls 限制網路路徑和服務互動。設計下游服務時,請勿在未驗證的情況下,就信任 BigQuery 的輸入內容。

使用不受限制的網路輸出量竊取資料

如果沒有網路層級的安全控管措施,遭入侵的內部主體就能存取 BigQuery,並將機密資料外洩至網際網路上的任意位置。即使有強大的 IAM 控制項,如果沒有網路邊界,攻擊者只要取得有效憑證,就能繞過以位置為準的防禦措施,將資料傳輸到信任環境以外的地方。

STRIDE 類別

資訊揭露

MITRE ATT&CK 策略

資料竊取

裝飾玻璃貼紙
  • 從不受信任的網路存取 API:攻擊者使用遭盜用的憑證,從外部機器連線至公開的 BigQuery API 或 BigQuery Storage Read API,藉此略過為地端部署主機或使用者裝置設定的網路控制項。

  • 匯出至外部 Google Cloud 服務:遭入侵的服務帳戶具有 bigquery.jobs.create 和 Cloud Storage 權限,因此可執行查詢,將結果匯出至組織控管範圍外的公開 Cloud Storage bucket。

因應措施

實作網路輸出控管功能,降低資料竊取至任意外部服務的風險。在包含 BigQuery 資源的專案周圍,實作 VPC Service Controls 範圍。這個範圍有助於限制資料竊取行為,避免資料外洩至範圍外的 Google Cloud 服務。為安全範圍設定存取層級,只允許來自信任 IP 範圍或特定 VPC 網路的 API 要求,有效防止資料在定義的安全邊界外遭到存取或移動。

使用遭汙染的參照或查閱表,導致資料完整性發生變化

如果攻擊者有權寫入參照或對照表 (例如維度表),就能以細微的方式修改內容。如果查詢會與這些遭汙染的資料表聯結,就會產生錯誤或誤導性結果,進而影響下游的分析和業務決策,而且可能不會出現任何明顯錯誤。

STRIDE 類別

遭破壞

MITRE ATT&CK 策略

影響

裝飾玻璃貼紙
  • 維度表操作:變更產品維度表中的鍵值或屬性。

  • 查閱資料損毀:變更查閱對照表中的對應資料。

因應措施

嚴格限制參考或查閱資料表的寫入存取權 (bigquery.tables.updateData),只允許信任的資料擷取程序。導入資料品質檢查和驗證管道。使用表格快照或版本管理功能追蹤變更,並啟用復原功能。監控稽核記錄,瞭解這些重要表格的變更。

使用惡意載入工作竄改資料

如果攻擊者具備足夠的權限,就能執行惡意載入工作,蓄意毀損或覆寫 BigQuery 資料表中的重要資料。這項威脅會損害資料完整性,導致業務分析結果不正確、應用程式故障,以及失去顧客信任。

STRIDE 類別

遭破壞

MITRE ATT&CK 策略

影響

裝飾玻璃貼紙
  • 覆寫資料表:具有 bigquery.jobs.createbigquery.tables.updateData 的主體會啟動載入工作,並將寫入處置設為 WRITE_TRUNCATE,藉此清除所有現有資料,並以來自外部來源的惡意資料取而代之。

  • 附加惡意資料:攻擊者使用載入工作和 WRITE_APPEND,將垃圾或惡意資料插入現有資料表,導致分析結果失真,但不會刪除原始記錄。

因應措施

請遵循最小權限原則。嚴格控管 bigquery.jobs.createbigquery.tables.updateData 等權限 (位於 roles/bigquery.dataEditor 等角色中),只授予信任的主體,並將權限範圍限定在特定資料集或資料表。監控 Cloud 稽核記錄 中完成的載入工作,特別是具有 WRITE_TRUNCATE 處置的工作,並針對來自非預期使用者或從不受信任來源載入資料的工作建立警告。

身分與存取權管理權限過多,導致資訊揭露

過於寬鬆的 IAM 角色可能會允許過度存取 BigQuery 表格中儲存的敏感資料。如果攻擊者入侵具有廣泛資料存取權的主體,可能會外洩大量資料,導致重大資料侵害。如果授予 bigquery.tables.getDatabigquery.jobs.create 等權限時範圍過廣 (例如專案層級),而非僅限於業務職責所需的特定資料集或資料表,就會發生這種威脅。

STRIDE 類別

資訊揭露

MITRE ATT&CK 策略

資料竊取

裝飾玻璃貼紙
  • 直接讀取資料:具有 bigquery.tables.getData 權限的主體可以使用 tabledata.list API 方法或高輸送量的 BigQuery Storage Read API,直接從資料表讀取資料。

  • 以查詢為基礎的資料外洩:具有 bigquery.jobs.create 權限的主體可以使用 jobs.insertjobs.query 執行查詢作業,從可存取的任何資料表讀取資料,然後使用 jobs.getQueryResults 擷取結果。

  • 公開存取權:您可以設定 BigQuery 資料集或 BigQuery 資料表的 IAM 允許政策,將角色授予 allUsersallAuthenticatedUsers 等特殊主體,允許公開存取,將資料公開在網路上。

因應措施

針對所有 IAM 允許政策實施最小權限原則。請在最精細的必要層級 (例如特定 BigQuery 資料表或資料集) 授予權限,而非專案層級。使用僅含特定工作必要權限的最低權限 IAM 角色 (例如 bigquery.tables.getDatabigquery.jobs.create)。定期稽核 IAM 允許政策,找出資源階層中較高層級套用的過度寬鬆角色,例如 roles/bigquery.dataViewerroles/bigquery.user

使用轉移功能將資料外洩至攻擊者控制的雲端專案或帳戶

攻擊者會使用 BigQuery 的資料移轉功能 (例如匯出至 Cloud Storage 的工作、跨專案查詢、BigQuery 資料移轉服務),將受保護專案中的機密資料移至他們控管的 Google Cloud 專案或其他雲端帳戶。

STRIDE 類別

資訊揭露

MITRE ATT&CK 策略

資料竊取

裝飾玻璃貼紙
  • 匯出至外部 bucket:使用匯出工作將資料表資料儲存至攻擊者專案中的 Cloud Storage bucket。

  • 跨專案查詢目的地:執行查詢,並將目的地資料表設為攻擊者控管專案中的資料集。

因應措施

導入 VPC Service Controls,在專案周圍建立 perimeter,防止資料輸出到 perimeter 外的專案。嚴密控管 bigquery.tables.exportbigquery.jobs.create 等權限。使用機構政策限制,限制專案共用和建立。監控 Cloud 稽核記錄,找出目的地超出預期專案界線的匯出工作或查詢。

使用設定錯誤的授權檢視區塊或資料列層級安全性邏輯揭露資訊

授權檢視或資料列層級安全防護政策的 SQL 邏輯有瑕疵,導致資料存取權範圍超出預期。查詢檢視表或資料表的使用者可能會不慎存取不應看到的資料列或資料欄,規避預期的區隔。

STRIDE 類別

資訊揭露

MITRE ATT&CK 策略

集合

裝飾玻璃貼紙
  • 檢視邏輯有誤:授權檢視的查詢省略了基本資料表資料列層級安全性政策中必要的 WHERE 子句。

  • 略過資料列層級安全性:複雜的資料列層級安全性政策含有邏輯錯誤,允許的存取範圍超出預期。

因應措施

針對授權檢視區和資料列層級安全政策中使用的 SQL 邏輯,實施嚴格的程式碼審查程序。徹底測試安全邏輯。限制建立或更新檢視區塊和資料列層級安全政策的權限 (例如 bigquery.tables.createbigquery.tables.updatebigquery.rowAccessPolicies.create)。定期稽核現有檢視畫面和列層級安全性設定。遵循資料列層級安全性的最佳做法。

透過公開或跨專案資料集曝光揭露資訊

BigQuery 資料集遭到無意或惡意公開 (例如使用 allUsers 或 allAuthenticatedUsers),或是與預期信任邊界以外的其他 Google Cloud 專案共用,導致機密資料外洩。攻擊者可直接存取或複製資料,不必經過驗證,或使用任何已驗證的 Google 帳戶。

STRIDE 類別

資訊揭露

MITRE ATT&CK 策略

資料竊取

裝飾玻璃貼紙
  • 公開資料集:資料集的 IAM 允許政策會將檢視者權限授予 allUsers

  • 跨專案過度共用:資料集與外部機構或不受信任專案中的服務帳戶共用。

因應措施

針對資料集 IAM 允許政策實施最小權限原則。使用組織政策 (例如 constraints/iam.allowedPolicyMemberDomains) 限制只能與特定網域共用檔案。使用 Security Command Center 定期稽核資料集 IAM 允許政策,偵測公開或過於寬鬆的權限。使用 VPC Service Controls 為含有機密資料的專案建立範圍,防止未經授權的輸出作業。

內部人員濫用 BigQuery 授權存取權 (使用正當查詢收集惡意資料)

惡意內部人員擁有 BigQuery 的合法存取權,並利用授權權限執行查詢,以及收集機密資料以用於未經授權的用途 (例如個人利益或間諜活動)。雖然存取權已獲授權,但資料的意圖和用途卻是惡意。

STRIDE 類別

資訊揭露

MITRE ATT&CK 策略

集合

裝飾玻璃貼紙
  • 資料囤積:定期查詢及下載超出工作需求的顧客資料。

  • 敏感分析:執行分析,擷取商業機密或個人識別資訊以進行外洩。

因應措施

啟用並監控資料存取稽核記錄,追蹤資料存取模式。使用 Sensitive Data Protection 等工具掃描查詢結果,找出敏感資訊。導入使用者行為分析 (UBA),偵測異常的查詢模式或資料存取量。強制執行明確的資料處理政策,並提供安全意識訓練。使用資料列層級安全防護機制和資料欄層級安全防護機制,即使是授權使用者,也能限制資料暴露。

透過資料集、授權 view 或排程查詢的隱形 BigQuery IAM 繫結,實現持續性

攻擊者取得初始存取權後,會在 BigQuery 中建立難以偵測的存取機制,以長期潛伏。這類威脅包括將 IAM 繫結新增至資料集、建立查詢私密資料的授權檢視區塊,或設定以具備權限的服務帳戶執行的排程查詢,藉此外洩資料或維持存取權。

STRIDE 類別

權限提升

MITRE ATT&CK 策略

持續性

裝飾玻璃貼紙
  • 隱藏資料集 IAM:在特定、較少監控的資料集上授予個人帳戶檢視者權限。

  • 授權檢視後門:建立授權存取受限資料表的檢視,並授予該檢視的存取權。

  • 惡意排程查詢:設定排程查詢,定期將資料複製到外部位置。

因應措施

定期稽核所有 IAM 允許政策,包括使用 Security Command Center 等工具的資料集層級權限。嚴格控管建立或更新資料集 (bigquery.datasets.update)、日常安排 (bigquery.routines.create/update) 和資料轉移 (bigquery.transfers.update) 的權限。

使用遭盜用的服務帳戶憑證或 OAuth 權杖 (用於存取 BigQuery) 進行詐欺

攻擊者取得服務帳戶憑證 (例如匯出的 JSON 金鑰),並使用這些憑證以遭入侵的服務帳戶身分向 BigQuery 進行驗證,進而取得該帳戶的所有權限。攻擊者可藉此威脅,執行服務帳戶授權的任何動作,例如讀取資料、執行工作或修改資源。

STRIDE 類別

假冒郵件

MITRE ATT&CK 策略

初始存取

裝飾玻璃貼紙
  • 服務帳戶金鑰外洩:JSON 金鑰檔案在程式碼存放區、公開儲存空間或執行個體中繼資料中曝光。

  • 遭入侵的應用程式:使用服務帳戶的應用程式遭到入侵,攻擊者可擷取並使用其憑證。

  • 遭竊的 OAuth 權杖:攻擊者攔截或洩漏用戶端應用程式或瀏覽器工作階段的 OAuth 權杖。

  • 範圍過大的權杖:應用程式要求並儲存範圍過大的權杖 (例如,只需要讀取權限,卻要求完整的 BigQuery 存取權)。

因應措施

請避免匯出服務帳戶金鑰。請盡可能改用附加的服務帳戶或 Workload Identity 聯盟。如果必須使用金鑰,請定期輪替金鑰,並只授予服務帳戶最低必要權限。監控 Cloud 稽核記錄和 Security Command Center,找出異常的服務帳戶活動或金鑰曝光情形。使用 constraints/iam.disableServiceAccountKeyCreation 機構政策限制,禁止建立服務帳戶金鑰。安全地儲存及傳輸 OAuth 權杖。遵循 OAuth 2.0 最佳做法。只要求必要的範圍。安全地使用短期權杖和更新權杖。實作偵測及撤銷遭盜用權杖的機制。監控權杖用量模式是否異常。完成標準服務帳戶金鑰保護措施。設定 Google Cloud 服務的工作階段長度,強制使用短期有效權杖,降低權杖外洩的風險。

使用高成本查詢發動服務阻斷攻擊

經過驗證的主體執行查詢,目的是要耗用過多的 BigQuery 資源 (例如運算單元和掃描的位元組)。這項威脅可能導致隨選專案的成本大幅超出預算,或預訂型專案的其他使用者無法使用配額,進而阻礙業務營運。

STRIDE 類別

阻斷服務

MITRE ATT&CK 策略

影響

裝飾玻璃貼紙
  • 未經過最佳化的查詢:在大型資料表上執行含有交叉聯結的查詢,且未套用篩選條件。

  • 重複執行:指令碼頻繁執行耗費資源的查詢。

因應措施

使用 BigQuery 自訂配額,設定使用者層級和專案層級的查詢用量限制 (例如每日掃描的位元組數)。在查詢工作中,使用 maximumBytesBilled 參數。使用 BigQuery 預留項目隔離工作負載,並確保容量。在 Cloud Billing 中設定帳單快訊,並在 Cloud Monitoring 中監控時段用量,以便偵測及因應異常情況。