BigQuery上の機密情報の守り方
こんにちは。
クラウドエース 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で暗号鍵を管理したとき、ユーザーのアクセス権は以下の表のようになります。
テーブルに対する権限あり | テーブルに対する権限なし | |
---|---|---|
鍵に対する権限あり | ・ 暗号化されたデータの読み取り ・ 復号 |
アクセス不可 |
鍵に対する権限なし | ・ 暗号化されたデータの読み取り | アクセス不可 |
ポイント
列単位でデータを秘匿化したいときに使えます。
公式ドキュメント
Data Loss Prevention (DLP)を使用した匿名化
概要
Data Loss Prevention(DLP) とは、データの中から機密データを検出して、匿名化(削除、マスキング、暗号化など)されたデータを作成する機能です。
元のテーブルを匿名化データへ変更するのではなく、匿名化されたテーブルを新たに作ることに注意する必要があります。
ポイント
秘匿化したいデータがテーブルの中に点在する場合に使用すると良いです。
例) メモ列の一部レコードに機密情報が存在する場合
秘匿化前のデータ
名前 | 居住地 | メモ |
---|---|---|
井上 | 神奈川県 | 電話番号は070-9862-8599です |
鈴木 | 北海道 | 男性 |
高橋 | 新潟 | メールアドレスはhoge@gmail.comです |
※ 電話番号はダミーです。
機密データを検出して秘匿化した後のデータ
名前 | 居住地 | メモ |
---|---|---|
井上 | 神奈川県 | 電話番号は***-****-****です |
鈴木 | 北海道 | 男性 |
高橋 | 新潟 | メールアドレスは***@****.comです |
公式ドキュメント
承認済みビューを設定する
概要
データセットやテーブルへのアクセス権がないユーザーもクエリ結果を共有できる機能です。
クエリを実行できる列を制限することもできます。
テーブルそのものを秘匿する機能ではないことに注意が必要です。
ポイント
元のデータソースへのアクセスを許可する必要がないため、データを持ち出しされるリスクが下がります。
公式ドキュメント
Data Catalogによる動的マスキング
概要
Data Catalogの機能の一つであるポリシータグを使って、テーブルの列レベルのアクセス制御ができます。
また、ポリシータグにマスキングルールを追加することで、列レベルのデータのマスキングができます。
ポイント
列レベルのアクセス制御とマスキングを組み合わせて秘匿化ができます。
ただ、タグの管理が煩雑になる場合があるので、注意が必要です。
公式ドキュメント
各秘匿化方法まとめ
それぞれの秘匿化の特徴と、データアクセスに必要な権限をまとめました。
秘匿化方法 | 元データの秘匿化 | 権限(元データ参照) | 権限(秘匿化データ参照) |
---|---|---|---|
BigQuery関数を使った暗号化 | される | 暗号化に使用する鍵へのアクセス権 データに対する読み取り権限 |
データに対する読み取り権限 |
DataLossPrevention(DLP)を使用した匿名化 | されない | データに対する読み取り権限 | データに対する読み取り権限 |
承認済みビューを設定する | されない | データに対する読み取り権限 | ビューを含むデータセットに対する読み取り権限 |
DataCatalogによる動的マスキング | される | ポリシータグに対するきめ細かい読み取りのロール | ポリシータグに対するマスクされた読み取りのロール(β版) |
まとめ
BigQuery上にあるデータを秘匿化する方法をまとめました。
みなさんのお役に立てれば幸いです!
Discussion