列レベルのセキュリティを強化: BigQuery で IAM データ ガバナンス タグを使用する
Vignesh Rajamani
Product Manager
Pramod Busam
Software Engineer
※この投稿は米国時間 2026 年 7 月 18 日に、Google Cloud blog に投稿されたものの抄訳です。
BigQuery のお客様の多くは、機密情報を保護するためにポリシータグを利用しています。ポリシータグは、列レベルのアクセス制御を適用するための主要なソリューションであり、適切な権限を持つユーザーのみが個人情報(PII)などの機密性の高い列を表示できるようにするものです。当時の環境においては、堅牢で効果的なシステムでした。
しかし、データ エコシステムは複雑化しており、そのセキュリティを確保するために使用するツールも、それに応じて進化する必要があります。新たな課題としては、複数のリージョンとロケーションにわたって複数のタグをサポートする分類の作成と管理、障害復旧の実現、広範な一元化されたガバナンス戦略との統合などが挙げられます。
今日のデータ エコシステムのニーズに対応するため、BigQuery でデータ ガバナンス タグのプレビューが導入されました。Google Cloud の Identity and Access Manager(IAM)の Resource Manager インフラストラクチャ上に構築されたデータ ガバナンス タグは、スケーラブルで堅牢な方法を提供することで、アクセス制御の管理と BigQuery 列データの保護を支援します。
IAM データ ガバナンス タグとは
データ ガバナンス タグは、特殊なタイプの Resource Manager タグです。このタグは、IAM でタグキーを作成するときに、目的フィールドを DATA_GOVERNANCE に設定することで作成し、BigQuery の列レベルのセキュリティで使用するように指定します。列データのガバナンスを目的としたデータ ガバナンス タグの階層ツリーを作成し、BigQuery 列に直接適用できます。
列レベルのセキュリティにデータ ガバナンス タグを使用する理由
-
グローバル スコープ、リージョンごとの適用: ポリシータグ(リージョンのみ)とは異なり、データ ガバナンス タグはグローバルに適用されます。組織レベルで 1 つのタグキーと値のペア(「data_sensitivity:high」など)を定義し、組織内のあらゆるプロジェクトやリージョンで使用できます。
-
マネージド障害復旧: セキュリティ ポリシーはフェイルオーバー中も維持する必要があります。データ ガバナンス タグとそれに関連するデータポリシーは、セカンダリ リージョンに自動的に複製されます。必要に応じてリージョンを切り替えても、セキュリティ ポスチャーは自動的に移行されます。
-
階層型セキュリティ: タグのツリーを最大 5 階層まで構築できるようになりました。これにより、継承とより詳細な分類(PII > Financial > CreditCardNumber など)が可能になります。
-
ガバナンスの分離: セキュリティを適用する前に、データをタグ付けして整理、分類できます。アクセス制御は、そのタグのデータポリシーを定義した後にのみ適用されるため、データのオンボーディング時に柔軟に対応できます。
列レベルのセキュリティを実装する 3 つのステップ
ステップ 1: タグキーと値を作成する
1. データ ガバナンス タグキーを作成する: まず、コンソール、gcloud CLI、または API で IAM タグキーを作成します。このタグキーの目的フィールドを --purpose=DATA_GOVERNANCE と指定するだけで、データ ガバナンス タグキーになります。このキーの変更により、このタグが BigQuery の列レベルのセキュリティに使用されることが Google Cloud に通知されます。
2. タグ値を作成する
データ ガバナンス タグキーを作成したら、そのキーの下に、列データの分類に使用するタグ値を設定する必要があります。データ ガバナンス タグの便利な機能の一つが、タグ値の階層ツリーを構築できることです。タグ値のツリーでは、まず大まかなカテゴリを作成し、そこからデータタイプに基づいてより詳細なカテゴリにドリルダウンしていくことができます。最大 5 階層の深さまでのツリーを構築できるため、きめ細かいアクセス制御が可能になります。
ステップ 2: JSON スキーマを使用して列にタグを付加する
1. 既存のスキーマをエクスポートする
既存のテーブルの場合、タグを管理する最も効率的な方法は、JSON ファイルを使用して API または bq CLI でテーブル スキーマを更新することです。これにより、複数の列に一度にタグを付けることができます。
2. dataGovernanceTags を JSON ファイルに追加する
schema.json を開き、機密性の高い列へのタグマッピングを追加します。名前空間付きのキーと値の略称が使用されていることに注意してください。
3. テーブルを更新する
スキーマを BigQuery テーブルに適用します。
また、SQL を使用してデータ ガバナンス タグを BigQuery テーブルの列にバインドすることもできます。
また、列タグを削除するには、次のように [] に設定します。
information_schema COLUMNS ビューを使用して、列タグを確認できます。
次のような結果になります。
ステップ 3: データポリシーを作成する
最後に、BigQuery のデータポリシーを定義して、タグ付けされた列へのアクセスを管理します。これらのポリシーは、以前に付加したタグ値を明示的に参照します。データ ガバナンス タグはグローバルですが、データポリシーはリージョンに適用される点に注意してください。
データを保護するため、ポリシーは BigQuery テーブルと同じリージョンで作成する必要があります。ポリシーが定義されると、指定されたユーザーのみにアクセス権が付与され、それ以外のすべてのユーザーは機密性の高い列データへのアクセスが拒否されます。
また、BigQuery のセキュリティは階層化されていることに留意してください。データポリシーを有効にするには、ユーザー(被付与者)がまずテーブル自体への基本レベルのアクセス権を持っている必要があります(通常は roles/bigquery.dataViewer などのロールを介して付与される)。これによりデータポリシーは 2 つ目のセキュリティ レイヤとして機能し、ユーザーに応じて機密性の高い列の未加工のデータを表示するか、マスクにより難読化されたバージョンを表示するかを決定します。
「pii」タグ付き列データのマスキング ポリシー(SHA256 マスキング)
「pii」タグ付き列データに対する未加工データアクセス ポリシー
「private」タグ付き列データのマスキング ポリシー(NULL マスキング)
以上の 3 つのステップで、列データの保護は完了です。次回プリンシパルが BigQuery テーブルをクエリすると、Google の認可エンジンが自動的にプリンシパルの ID をデータポリシーと照合して評価します。プリンシパルがポリシーに含まれている場合、ポリシーに従ってマスクされたデータまたは未加工のデータのいずれかが表示されます。プリンシパルがポリシーに含まれていない場合は、アクセスが拒否されます。
使ってみる
データ ガバナンス タグは、BigQuery のデータ セキュリティとガバナンス戦略を強化する強力な新しいツールです。Google は、BigQuery のデータ ガバナンス機能を強化するために継続的に取り組んでいます。今後のアップデートでは、SQL を使用してタグとタグベースのポリシーを作成する機能、1 つの列に複数のタグを付加する機能、タグの組み合わせに基づいてポリシーを定義する機能、Knowledge Catalog などのサービスとのより深い統合が予定されています。
まずは列へのタグ付けと、きめ細かいアクセス制御を大規模に定義することから始めましょう。詳しくは、データ ガバナンス タグのドキュメントをご覧ください。
- プロダクト マネージャー、Vignesh Rajamani
- ソフトウェア エンジニア、Pramod Busam

