🔒

BigQuery上の機密情報の守り方

2022/11/21に公開

こんにちは。
クラウドエース SREエンジニアのアイルトンと申します。
Google Cloudのセキュリティについて勉強中なので、学んだことを定期的に記事にまとめていこうと思います。
この記事では、BigQueryに機密情報を保持する場合に、情報を安全に保護する方法についてまとめます。

BigQuery上にあるデータを秘匿化するには、以下の方法があります。

  • BigQuery関数を使った暗号化
  • Data Loss Prevention (DLP)を使用した匿名化
  • 承認済みビューを設定する
  • Data Catalogによる動的マスキング

テーブルやデータセットへのアクセス制御に加えて、以上の保護方法をとることで個人情報などの機密情報を守ることができます。
それぞれの方法について解説していきます。

BigQuery関数を使った列レベルの暗号化

概要

BigQuery関数を使って、テーブル内の特定の列のデータを暗号化できます。
暗号化関数の種類は以下の2通りです。

種類 関数名 特徴
非決定性関数 AEAD.ENCRYPT
AEAD.DECRYPT_STRING
AEAD.DECRYPT_BYTE
同じ平文に対して同じ暗号文とはならない
暗号化された状態でのテーブルの結合はできない
確定的な関数 DETERMINISTIC_ENCRYPT
DETERMINISTIC_DECRYPT_STRING
DETERMINISTIC_DECRYPT_BYTES
同じ平文に対して同じ暗号文となる
暗号化された状態でのテーブルの結合が可能

また、Cloud Key Management Service(Cloud KMS)で暗号鍵を管理できます。

kms
※電話番号はダミーです。

KMSで暗号鍵を管理したとき、ユーザーのアクセス権は以下の表のようになります。

テーブルに対する権限あり テーブルに対する権限なし
鍵に対する権限あり ・ 暗号化されたデータの読み取り
・ 復号
アクセス不可
鍵に対する権限なし ・ 暗号化されたデータの読み取り アクセス不可

ポイント

列単位でデータを秘匿化したいときに使えます。

公式ドキュメント

Data Loss Prevention (DLP)を使用した匿名化

概要

Data Loss Prevention(DLP) とは、データの中から機密データを検出して、匿名化(削除、マスキング、暗号化など)されたデータを作成する機能です。
元のテーブルを匿名化データへ変更するのではなく、匿名化されたテーブルを新たに作ることに注意する必要があります。

dlp1

ポイント

秘匿化したいデータがテーブルの中に点在する場合に使用すると良いです。

例) メモ列の一部レコードに機密情報が存在する場合
秘匿化前のデータ

名前 居住地 メモ
井上 神奈川県 電話番号は070-9862-8599です
鈴木 北海道 男性
高橋 新潟 メールアドレスはhoge@gmail.comです

※ 電話番号はダミーです。

機密データを検出して秘匿化した後のデータ

名前 居住地 メモ
井上 神奈川県 電話番号は***-****-****です
鈴木 北海道 男性
高橋 新潟 メールアドレスは***@****.comです

公式ドキュメント

承認済みビューを設定する

概要

データセットやテーブルへのアクセス権がないユーザーもクエリ結果を共有できる機能です。
クエリを実行できる列を制限することもできます。
テーブルそのものを秘匿する機能ではないことに注意が必要です。

view

ポイント

元のデータソースへのアクセスを許可する必要がないため、データを持ち出しされるリスクが下がります。

公式ドキュメント

Data Catalogによる動的マスキング

概要

Data Catalogの機能の一つであるポリシータグを使って、テーブルの列レベルのアクセス制御ができます。
また、ポリシータグにマスキングルールを追加することで、列レベルのデータのマスキングができます。

catalog

ポイント

列レベルのアクセス制御とマスキングを組み合わせて秘匿化ができます。
ただ、タグの管理が煩雑になる場合があるので、注意が必要です。

公式ドキュメント

各秘匿化方法まとめ

それぞれの秘匿化の特徴と、データアクセスに必要な権限をまとめました。

秘匿化方法 元データの秘匿化 権限(元データ参照) 権限(秘匿化データ参照)
BigQuery関数を使った暗号化 される 暗号化に使用する鍵へのアクセス権
データに対する読み取り権限
データに対する読み取り権限
DataLossPrevention(DLP)を使用した匿名化 されない データに対する読み取り権限 データに対する読み取り権限
承認済みビューを設定する されない データに対する読み取り権限 ビューを含むデータセットに対する読み取り権限
DataCatalogによる動的マスキング される ポリシータグに対するきめ細かい読み取りのロール ポリシータグに対するマスクされた読み取りのロール(β版)

まとめ

BigQuery上にあるデータを秘匿化する方法をまとめました。
みなさんのお役に立てれば幸いです!

Discussion