BigQuery の脅威モデル レポート

最終更新日: 2026 年 4 月 16 日

このドキュメントでは、BigQuery のデータの機密性、完全性、可用性に対する潜在的な攻撃ベクトルと緩和策について説明します。このレポートの範囲は、BigQuery 環境内で管理できるリスクに焦点を当てた、ユーザーの視点に限定されます。

これらの脅威モデルは、現在判明している攻撃ベクトル、アーキテクチャの前提、公開時のシステムの指定されたスコープに基づく確率的評価です。これらのモデルは網羅的なものではなく、Google Cloud のお客様のセキュリティとリスクの評価のベースラインとして、またリスク軽減の意思決定を導くことを目的としています。

このサービスに対して、次の脅威が特定されました。

脅威の詳細

以降のセクションでは、各脅威、その兆候、推奨される緩和策について説明します。

スキーマの改ざんによるデータ破壊

テーブルのスキーマを変更する権限を持つ攻撃者は、データ損失を引き起こしたり、ダウンストリーム アプリケーションでテーブルを使用できなくしたりする可能性があります。この形式の改ざんは、データのメタデータと構造を対象としており、データ自体を変更するのと同じくらい破壊的です。

STRIDE カテゴリ

改ざん

MITRE ATT&CK の戦術

影響

マニフェステーション

悪意のあるスキーマ更新: bigquery.tables.update 権限を持つプリンシパルは、BigQuery テーブルで tables.patch API メソッドを呼び出して、スキーマを変更できます。列のデータ型を変更すると、データが破損したり、情報が失われたりする可能性があります。これにより、クライアント アプリケーションやビジネス インテリジェンス ツールからのクエリが中断され、ダウンストリーム レポートの信頼性が低下する可能性があります。

緩和策

roles/bigquery.dataOwner などのロールに含まれる bigquery.tables.update 権限を厳密に制限します。この権限は、マネージド スキーマの移行を担当する少数の管理者または自動化された CI/CD サービス アカウントにのみ付与してください。BigQuery テーブルのバックアップを有効にするか、テーブル スナップショットを使用して、誤ったスキーマ変更や悪意のあるスキーマ変更から復元します。Cloud Audit Logs で tables.patch API 呼び出しをモニタリングし、計画されたメンテナンスの時間枠外で行われた変更についてアラートを発行します。

IAM 許可ポリシーの改ざんによる権限昇格

BigQuery IAM 許可ポリシーを変更する権限を持つプリンシパルを侵害した攻撃者は、権限を昇格させてデータリソースを完全に制御できます。この脅威により、攻撃者は既存のアクセス制御をバイパスして、センシティブ データの読み取り、変更、削除のアクセス権を付与できます。

STRIDE カテゴリ

権限昇格

MITRE ATT&CK の戦術

権限昇格

マニフェステーション
  • データセット ポリシーの変更: bigquery.datasets.update 権限を持つプリンシパルは、BigQuery データセットで datasets.patch API メソッドを呼び出して、所有者ロールに独自の ID を追加し、そのデータセット内のすべてのリソースに対する完全な制御権限を付与できます。

  • サービス アカウントの権限借用: サービス アカウントに対する iam.serviceAccounts.actAs 権限を持つ ID は、サービス アカウントを Compute Engine インスタンスなどの他のリソースに関連付けて、関連付けられたサービス アカウントの ID でコードを実行できます。または、iam.serviceAccounts.getAccessToken 権限を持つ ID が、そのサービス アカウントのアクセス トークンを生成することもできます。ターゲット サービス アカウントに BigQuery リソースに対する昇格された権限がある場合、攻撃者は実質的にその権限を継承します。

緩和策

IAM 許可ポリシーの変更を許可する権限(roles/bigquery.dataOwner などのロールの一部である bigquery.datasets.update など)を厳しく制限します。これらのロールは、最小限の信頼できる管理者にのみ割り当てます。同様に、サービス アカウントとして動作したり、サービス アカウントの権限を借用したりする権限を持つ IAM ロールを厳密に制御し、これらのロールを、それを必要とする特定のプリンシパルに限定します。Cloud Audit Logs で SetIamPolicydatasets.patch の API 呼び出しをモニタリングして、承認されていないポリシーの変更を検出します。

BigQuery によってトリガーされるダウンストリーム サービスを使用した権限借用

BigQuery の権限が制限されている攻撃者が、下流のサービス(Cloud Functions、Dataflow ジョブ、Cloud Composer DAG など)をトリガーするジョブまたはクエリを作成します。このサービスは、より高い権限で実行されます。下流サービスは、BigQuery に代わって正当なアクションを実行していると考えていますが、システム設計者が意図したリソースやデータとは異なるリソースやデータに対してアクションを実行するように騙されます。

STRIDE カテゴリ

権限昇格

MITRE ATT&CK の戦術

権限昇格

マニフェステーション
  • 悪意のある関数トリガー: BigQuery の変更によって、広範な権限を持つ Cloud Functions の関数がトリガーされ、攻撃者が 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 の公開バケットに結果をエクスポートするクエリを実行します。

緩和策

ネットワークの下り(外向き)制御を実装して、任意の外部サービスへのデータの引き出しを軽減します。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 Audit Logs をモニタリングして、特に WRITE_TRUNCATE 処分で完了した読み込みジョブを検出し、予期しないユーザーから発生したジョブや、信頼できないソースからデータを読み込むジョブのアラートを作成します。

過剰な IAM 権限による情報漏洩

権限が過剰な 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.insert または jobs.query を使用してクエリジョブを実行し、アクセス権のある任意のテーブルからデータを読み取って、jobs.getQueryResults を使用して結果を取得できます。

  • 一般公開: BigQuery データセットまたは BigQuery テーブルの IAM 許可ポリシーは、allUsersallAuthenticatedUsers などの特別なプリンシパルにロールを付与して一般公開を許可するように構成できます。これにより、データがインターネットに公開されます。

緩和策

すべての IAM 許可ポリシーに最小権限の原則を実装します。プロジェクト レベルではなく、必要な最も詳細なレベル(特定の BigQuery テーブルやデータセットなど)で権限を付与します。特定のタスクに必要な権限(bigquery.tables.getDatabigquery.jobs.create など)のみを含む最小権限の IAM ロールを使用します。リソース階層の上位レベルで適用されている roles/bigquery.dataViewerroles/bigquery.user などの権限が過剰なロールについて、IAM 許可ポリシーを定期的に監査します。

攻撃者が管理するクラウド プロジェクトまたはアカウントへの転送を使用したデータ引き出し

攻撃者は、BigQuery のデータ移動機能(Cloud Storage へのエクスポート ジョブ、クロス プロジェクト クエリ、BigQuery Data Transfer Service など)を使用して、保護されたプロジェクトから、攻撃者が制御する Google Cloud プロジェクトまたは他のクラウド アカウントにセンシティブ データを移動します。

STRIDE カテゴリ

情報開示

MITRE ATT&CK の戦術

データの引き出し

マニフェステーション
  • 外部バケットへのエクスポート: エクスポート ジョブを使用して、攻撃者のプロジェクトの Cloud Storage バケットにテーブルデータを保存します。

  • プロジェクト間のクエリの宛先: クエリを実行し、宛先テーブルを攻撃者が制御するプロジェクトのデータセットに設定します。

緩和策

VPC Service Controls を実装してプロジェクトの周囲に境界を作成し、境界外のプロジェクトへのデータ下り(外向き)を防ぎます。bigquery.tables.exportbigquery.jobs.create などの権限を厳格に制御します。組織のポリシーの制約を使用して、プロジェクトの共有と作成を制限します。予期されるプロジェクト境界外の宛先を持つエクスポート ジョブまたはクエリについて、Cloud Audit Logs をモニタリングします。

構成が誤っている承認済みビューまたは行レベルのセキュリティ ロジックを使用した情報開示

承認済みビューまたは行レベルのセキュリティ ポリシーの 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 の戦術

コレクション

マニフェステーション
  • データの蓄積: ジョブの要件を超えて顧客データを定期的にクエリしてダウンロードすること。

  • 機密情報の分析: 企業秘密や個人情報(PII)を抽出して漏洩させるための分析を実行します。

緩和策

データアクセス監査ログを有効にしてモニタリングし、データアクセス パターンを追跡します。Sensitive Data Protection などのツールを使用して、クエリ結果に機密情報が含まれていないかスキャンします。ユーザー行動分析(UBA)を実装して、異常なクエリ パターンやデータアクセス量を検出します。明確なデータ処理ポリシーを適用し、セキュリティ意識向上トレーニングを実施します。行レベルのセキュリティと列レベルのセキュリティを使用して、承認済みユーザーに対してもデータ漏洩を制限します。

データセット、承認済みビュー、スケジュール設定されたクエリでのステルス BigQuery IAM バインディングを使用した永続性

攻撃者は、初期アクセス権を取得した後、BigQuery 内に検出が困難なアクセス メカニズムを作成して、長期的な存在を確立します。この脅威には、データセットへの IAM バインディングの追加、センシティブ データにクエリを実行する承認済みビューの作成、特権サービス アカウントで実行されるスケジュール設定されたクエリの設定によるデータの漏洩やアクセスの維持などが含まれます。

STRIDE カテゴリ

権限昇格

MITRE ATT&CK の戦術

永続性

マニフェステーション
  • 非表示のデータセット IAM: 特定の監視頻度の低いデータセットに対する閲覧権限を個人アカウントに付与します。

  • 承認済みビューのバックドア: 制限付きテーブルへのアクセスが承認されたビューを作成し、そのビューへのアクセス権を付与します。

  • 悪意のあるスケジュールされたクエリ: データを外部ロケーションに定期的にコピーするようにスケジュールされたクエリを構成する。

緩和策

Security Command Center などのツールを使用して、データセット レベルの権限を含むすべての IAM 許可ポリシーを定期的に監査します。データセット(bigquery.datasets.update)、ルーティン(bigquery.routines.create/update)、データ転送(bigquery.transfers.update)の作成または更新の権限を厳密に制御します。

BigQuery へのアクセスに使用されるサービス アカウントの認証情報または OAuth トークンが不正使用されたスプーフィング

攻撃者がサービス アカウントの認証情報(エクスポートされた JSON キーなど)を取得し、それを使用して侵害されたサービス アカウントとして BigQuery に対する認証を行い、すべての権限を継承します。この脅威により、攻撃者はサービス アカウントに権限が付与されているアクション(データの読み取り、ジョブの実行、リソースの変更など)を実行できます。

STRIDE カテゴリ

なりすまし

MITRE ATT&CK の戦術

初期アクセス

マニフェステーション
  • サービス アカウント キーの漏洩: JSON キーファイルがコード リポジトリ、公開ストレージ、インスタンス メタデータで公開されています。

  • 侵害されたアプリケーション: サービス アカウントを使用するアプリケーションが侵害され、攻撃者が認証情報を抽出して使用できるようになります。

  • 盗まれた OAuth トークン: 攻撃者がクライアント アプリケーションまたはブラウザ セッションから OAuth トークンを傍受または漏洩します。

  • スコープが広すぎるトークン: アプリケーションが過剰なスコープ(読み取りのみが必要な場合に BigQuery への完全なアクセスなど)を持つトークンをリクエストして保存します。

緩和策

サービス アカウント キーのエクスポートを避けます。代わりに、可能な場合は、関連付けられたサービス アカウントまたは Workload Identity 連携を使用します。鍵が必要な場合は、鍵を定期的にローテーションし、サービス アカウントに最小限の権限のみを付与します。Cloud Audit Logs と Security Command Center をモニタリングして、サービス アカウントの異常なアクティビティや鍵の漏洩がないか確認します。constraints/iam.disableServiceAccountKeyCreation 組織のポリシーの制約を使用して、サービス アカウント キーの作成を無効にします。OAuth トークンを安全に保存して送信します。OAuth 2.0 のベスト プラクティスに従います。必要なスコープのみをリクエストします。有効期間の短いトークンと更新トークンを安全に使用します。不正使用されたトークンを検出して取り消すメカニズムを実装します。トークンの使用パターンに異常がないかモニタリングします。標準のサービス アカウント キー保護対策を完了します。Google Cloud サービスのセッション継続時間を構成して、有効期間の短いトークンを適用し、トークンの漏洩リスクを軽減します。

高コストのクエリを使用したサービス拒否攻撃

認証されたプリンシパルが、過剰な BigQuery リソース(スロットやスキャンされたバイト数など)を消費するように設計されたクエリを実行します。この脅威により、オンデマンド プロジェクトでコストが大幅に超過したり、予約ベースのプロジェクトで他のユーザーがスロット不足になったりして、ビジネス オペレーションが妨げられる可能性があります。

STRIDE カテゴリ

サービス拒否攻撃

MITRE ATT&CK の戦術

影響

マニフェステーション
  • 最適化されていないクエリ: フィルタなしで大きなテーブルに対してクロス結合を含むクエリを実行します。

  • 繰り返し実行: 費用のかかるクエリを頻繁に実行するスクリプト。

緩和策

BigQuery カスタム割り当てを使用して、クエリ使用量(1 日にスキャンされるバイト数など)に対するユーザーレベルとプロジェクト レベルの上限を設定します。クエリジョブで maximumBytesBilled パラメータを使用します。BigQuery 予約を使用して、ワークロードを分離し、容量を保証します。Cloud Billing で課金アラートを構成し、Cloud Monitoring でスロット使用率をモニタリングして、異常を検出して対応します。