この記事はBigQueryのポリシータグについての概要と、実際の使い方についてまとめた記事です。
BigQueryのポリシータグとは
BigQueryのポリシータグとは、特にBigQueryのデータセット内のテーブルのセキュリティー管理に使用されます。
具体的なユースケースとして、テーブル構造やパイプラインは変更したくないが、テーブル内の特定のカラムはユーザの権限によって見える/見えない制御したい、といった場合に有効にです。
データを見せたくないユーザに対してハッシュ値等で表示させる方法をマスキングといいます。
マスキングの種類には以下のものがあります。
NULLマスキング
- 概要: データがNULLに置き換えられます。
- 使用例: 特定のカラムにアクセスする権限がないユーザーがクエリを実行すると、そのカラムの値がすべてNULLになります。
- ユースケース: 特定の機密情報を完全に隠したい場合に使用します。
デフォルト値マスキング
- 概要: カラムのデータがデフォルト値に置き換えられます。
- 使用例: 数値カラムの場合は0、文字列カラムの場合は空文字列など、設定されたデフォルト値が表示されます。
- ユースケース: データが欠損していることを示すために使用します。
部分マスキング
- 概要: データの一部がマスクされます。
- 使用例: クレジットカード番号の一部(例えば、先頭12桁)を「XXXX-XXXX-XXXX-1234」のようにマスクします。
- ユースケース: データの一部を隠して表示することで、特定のパターンや傾向を維持しながら機密情報を保護する場合に使用します。
ランダマイズマスキング
- 概要: 元のデータがランダムな値に置き換えられます。
- 使用例: 年齢カラムの値が、アクセス権のないユーザーには実際の年齢とは異なるランダムな値として表示されます。
- ユースケース: 元のデータを特定できないようにしつつ、データ分析のための一貫性をある程度維持する場合に使用します。
ハッシュマスキング
- 概要: データがハッシュ値に変換されます。
- 使用例: ユーザーIDやメールアドレスなどのデータがハッシュ化され、元の値が特定できないようになります。
- ユースケース: 機密性の高いデータを特定できないようにし、データ間の一意性を維持する場合に使用します。
トークン化マスキング
- 概要: データがトークン化され、トークン化サービスを使用して元のデータに戻せるようになります。
- 使用例: 顧客情報や個人識別情報(PII)をトークン化し、必要に応じて元のデータに戻せるようにします。
- ユースケース: 機密情報のセキュリティを確保しながら、必要に応じて元のデータにアクセスできる場合に使用します。
BigQueryのポリシータグの使い方
ポリシータグを利用するには、まずそれを含む分類を作成します。
その次に、ポリシータグに対して最大3つまでのデータポリシーを作成します。
分類の作成
分類を作成します。まずBigQuery管理画面左サイドバーの[ポリシータグ]を選択します。

次に、遷移した画面上部の[分類を作成]をクリックします。

新しい分類という詳細設定画面が開いたら以下の項目入力して[作成]ボタンをクリックします。
- 分類名
- 説明(任意)
- ロケーション
- ポリシータグの名前
- ポリシータグの説明(任意)

次に[アクセス制御の適用]を有効します。
これを有効にすると,ポリシータグが紐づけられたBigQueryテーブルの列のへのアクセスは[きめ細かい読み取り]と[マスクされた読み取り]のロールを持つユーザのみに限定されます。
次に作成したポリシータグの内一つをチェックして、画面右側の[プリンシパルを追加]をクリックします。

[プリンパルの追加]の画面が開いたらプリンシパルにユーザアカウントまたはサービスアカウントを選択して、データカタログのきめ細かい読み取りロールを選択します。
このロールを持ったユーザは、そのポリシータグが割り当てられてマスキングされている列の中身を確認することができます。
よってこのロールを割り当てるのはデータを見せても良いユーザが想定されます。

データポリシーの作成
次にデータポリシーを作成します。
まず、データポリシーを割り当てたいポリシータグを選択して[データポリシーを管理]をクリックします。
ここではpersonal-infoを選択します。

マスキングルールを設定する画面が表示されたら以下の項目を入力して[送信]をクリックします。
ここで選択されたプリンシパルには[マスクされた読み取り]ロールが付与されるため、personal-infoタグが割り当てられた列のデータが全てハッシュ値で見えます。

データポリシーが作成されたら以下のようにデータマスキングルール列に作成したマスキングルールが表示されます。

BigQueryテーブルの列にポリシータグを適用
次に実際にテーブルの特定の列にポリシータグを割り当てて、マスキングルールを適用させます。
マスキングを設定したいBigQueryテーブルを選択して、[スキーマの編集]をクリックします。

現在のスキーマが表示されたら、ポリシータグを割り当てたい列を選択して[ADD POLICY TAG]をクリックします。

作成した分類からポリシータグをチェックして[選択]をクリック。
ここではpersonal-infoを選択します。

テーブルの画面に戻り、以下のようにポリシータグを割り当てた列のポリシータグ列に設定が反映されていたら完了です。

参考

備考
Hakky では社内のデータ活用やサービスとしてデータ提供を行うためのソリューションを展開しております。
「社内のデータを一元管理し、よりデータドリブンな組織を構築したい」など具体的な相談はもちろんのこと、「どんなことをお願いできるのか知りたい」や「こんなことをやりたい」など、ご検討段階でも構いませんので、ぜひお気軽にフォームよりお問い合わせくださいませ。