zozo-bigquery-policy-tag-usage (original) (raw)

を用いた秘密情報管理とデータ連携
株式会社ZOZO
...")
Inc. 1

2
株式会社ZOZO
技術本部 MA部 MA開発2ブロック
谷口...")
• データ基盤や配信基盤の開発と運用をしています • 以前は位置情報の分析をしていました • 沖縄に住んでいます 2

https://zozo.jp/
● ファッションEC
● 1,...")
商品 を掲載(2022年9月末時点) • ブランド古着のファッションゾーン「ZOZOUSED」や コスメ専門モール「ZOZOCOSME」、靴の専門モール 「ZOZOSHOES」、ラグジュアリー&デザイナーズゾーン 「ZOZOVILLA」を展開 • 即日配送サービス • ギフトラッピングサービス • ツケ払い など 3

https://wear.jp/
4
● ファッションコーディネー...")
• ピックアップタグから最新のトレンドをチェック • コーディネート着用アイテムを公式サイトで購入可能 • WEAR公認の人気ユーザーをWEARISTAと認定。モデル・タレント・デザ イナー・インフルエンサーといった各界著名人も参加

5
https://zozo.jp/zozomat/

● 自宅...")
を表示 • NIKEやCONVERSEなど4,976型以上のアイテムに対応 (2022年9月末時点)

6
https://zozo.jp/zozoglass/
● 自宅...")
不安や悩みを解消 • 肌の色を構成する成分、ヘモグロビン量とメラニン量を画像 から推定 • コスメ専門モール「ZOZOCOSME」で取り扱うベースメイクの 一部に対応 • 計測者数125万人を突破(2022年9月末時点)

目次

  1. データ基盤の紹介
  2. ポリシータグの選定理由
    3...")
    4. ポリシータグ運用時に考慮すること 5. まとめ 7

目次

  1. データ基盤の紹介
  2. ポリシータグの選定理由
    3...")
    4. ポリシータグ運用時に考慮すること 5. まとめ 8

データ基盤の紹介
9

● オンプレのSQL ServerからB...")
Dataflow Pub/Sub BigQuery リアルタイム差分 SQL Server Fluentd on GKE (Change Tracking) BigQuery 日次全量 Dataflow BigQuery リアルタイム全量

秘密情報管理で抱えていた課題
10

● 秘密情報はマスクしてB...")
◦ 秘密情報の元データがないため、分析者がマスク処理を作りにくい ◦ メルマガ配信など秘密情報が必要なシステムで利用できない • セキュリティ面での課題 ◦ BigQueryへ連携する際に秘密情報の有無を利用者が申請する運用をとっていた ◦ 秘密情報ではないのにマスク化されて使えないデータがあった

目次

  1. データ基盤の紹介
  2. ポリシータグの選定理由
    3...")
    4. ポリシータグ運用時に考慮すること 5. まとめ 11

ポリシータグとは
● ポリシータグとは
○ BigQueryでカ...")
◦ テーブル全体ではなくカラム単位でアクセス制御することで、個人の特定を防ぐ 12 引用:https://cloud.google.com/bigquery/docs/best-practices-policy-tags

ポリシータグを採用した理由①
● 匿名化による機密性の高さ
○ ...")
▪ カラム単位でのアクセス制御では個人の特定はできない ▪ プロジェクトのオーナーでも権限がなければ見られないため、 誤って参照することを防止できる 13 Authorized views https://cloud.google.com/bigquery/docs/authorized-views

ポリシータグを採用した理由②
● 機密性と利便性の両立
○ 承認...")
▪ 秘密情報が含まれていないカラムも、データを確認するには全てのカラムをSELECTする必要がある ◦ ポリシータグは利用者が使いやすい ▪ スキーマからどのカラムが秘密情報か確認できる ▪ プレビューでデータの中身を確認できる 14

ポリシータグを採用した理由③
● データ基盤の保守運用
○ 既存...")
▪ 利用状況を調べ利用者にクエリを書き換えてもらう必要がある ◦ 秘密情報の権限管理がしやすい ▪ GCPプロジェクトを横断して共通のポリシータグを付与できる ▪ どのアカウントに権限を付与しているかTerraformで管理できる 15

目次

  1. データ基盤の紹介
  2. ポリシータグの選定理由
    3...")
    4. ポリシータグ運用時に考慮すること 5. まとめ 16

データ連携後に利用者が参照するテーブル
17
分類に基づいてマスク...")
命名規則:カラム名_マスキングアルゴリズム_masked どの分類のポリシータグが付与されているか 何件のカラムがアクセス制御されているか

ポリシータグを活用したデータ連携

18
Dataflow
Pu...")
SQL Server Fluentd on GKE (Change Tracking) BigQuery 日次全量 Dataflow BigQuery リアルタイム全量

秘密情報の分類マスタの作成と運用整備
19
● 秘密情報の分類マス...")
分類に応じてポリシータグやマスクカラムを追加 ▪ (例) 分類がメールなら@以降のドメイン抽出、誕生日なら誕生月で丸めたマスクカラムを追加する

分類マスタに対応したポリシータグ
20
● 分類マスタに対応したポ...")
ポリシータグはTerraformで管理

ポリシータグを用いた日次バッチ連携
21


Datafl...")
BigQuery リアルタイム差分 SQL Server Fluentd on GKE (Change Tracking) BigQuery 日次全量 Dataflow BigQuery リアルタイム全量

ポリシータグを用いた日次バッチ連携
22


BigQue...")
公開 SQL Server Dataflow BigQuery / 非公開 bq query

ポリシータグを用いた日次バッチ連携
23


BigQue...")
公開 SQL Server Dataflow BigQuery / 非公開 bq query • SQL Serverから非公開環境 ◦ Dataflowを用いてSQL Serverから非公 開環境へロード ◦ ポリシータグは付与されていないため 非公開にしている

ポリシータグを用いた日次バッチ連携
24


BigQue...")
公開 SQL Server Dataflow BigQuery / 非公開 bq query • 非公開環境から公開環境 ◦ 公開環境へ連携する際に、秘密情報の分 類に基づき、マスクカラムとポリシータグを 追加 ◦ ポリシータグの付与にはポリシータグのリ ソースIDを含むスキーマが必要

ポリシータグを用いたリアルタイムデータ連携
25


Da...")
BigQuery リアルタイム差分 SQL Server Fluentd on GKE (Change Tracking) BigQuery 日次全量 Dataflow BigQuery リアルタイム全量

ポリシータグを用いたリアルタイムデータ連携
26


Da...")
BigQuery リアルタイム差分 SQL Server Fluentd on GKE (Change Tracking) Dataflow Pub/Sub Kinesis

ポリシータグを用いたリアルタイムデータ連携
27


Da...")
BigQuery リアルタイム差分 SQL Server Fluentd on GKE (Change Tracking) Dataflow Pub/Sub Kinesis • Fluentdでマスクカラムを追加 ◦ 秘密情報の分類マスタに基づいてFluentd でマスクカラムを追加 ◦ Cloud Pub/SubへPublishする際にattribute 属性に秘密情報カラムを追加 マスクカラム追加

ポリシータグを用いたリアルタイムデータ連携
28


Da...")
BigQuery リアルタイム差分 SQL Server Fluentd on GKE (Change Tracking) Dataflow Pub/Sub Kinesis • 秘密情報をDROPしたCloud Pub/Sub ◦ Dataflowを用いてattribute属性に含まれる秘 密情報をDROPする ◦ 秘密情報を必要としない場合は秘密情報が含 まれていないTopicを参照してもらう

ポリシータグを用いたリアルタイムデータ連携
29


Da...")
BigQuery リアルタイム差分 SQL Server Fluentd on GKE (Change Tracking) Dataflow Pub/Sub Kinesis • BigQueryにストリーミングインサート ◦ Terraformで事前にポリシータグを付与した テーブルを作成 ◦ BigQueryからはマスクカラムと秘密情報を 参照できる

ポリシータグを用いたリアルタイムデータ連携
30
BigQuery...")
リアルタイム全量 • 共通のポリシータグを利用 ◦ リアルタイム全量 = リアルタイム差分 + 日次全量 ◦ 異なるGCPプロジェクトで共通のポリシータグを利用 Project A Project A Project B

目次

  1. データ基盤の紹介
  2. ポリシータグの選定理由
    3...")
    4. ポリシータグ運用時に考慮すること 5. まとめ 31

ポリシータグ運用注意①
32
● スキーマの変更や削除が大変
○...")
リアルタイム連携はスキーマの変更、削除が大変です ▪ ポリシータグを付与したテーブルは カラムの削除に「ALTER TABLE」が使えない テーブル連携を止め、クエリを用いた上書きが必要 ▪ デプロイ時の運用負荷が高い Alpha category references are no longer a supported type, please use policy tags instead: '' BigQuery(Table) リアルタイム差分 BigQuery(table) 日次全量 BigQuery(view) リアルタイム全量

ポリシータグ運用注意②
33
引用:https://cloud.g...")
◦ ポリシータグを使う場合はマスクしたカラムも必要 ◦ 今だと動的マスキングを使う方法もある ▪ ただし、利用者が秘密情報だと思い意図せず利用する場合もあるのでトレードオフ dynamic data masking https://cloud.google.com/bigquery/docs/column-data-ma sking-intro

ポリシータグ運用注意③
34
● ジョブに失敗した際ポリシータグが...")
◦ ワークフロージョブの失敗は検知できるが、BigQueryのクエリジョブは実行され ポリシータグが付与されていないテーブルが作られてしまった bqコマンドに渡しているスキーマのJSONが間違っていても クエリが実行されてしまう問題 https://qiita.com/shiozaki/items/689610ca4cdf7954b3ea

ポリシータグ運用注意④
35


● 秘密情報分類マスタ整備
...")
過去に分類マスタのカラムとSQL Serverのカラムで表記ズレがあり、秘密情報なのにポリシー タグが付与されなかった ◦ バリデーションを導入し、秘密情報分類マスタの品質を担保する必要がある

目次

  1. データ基盤の紹介
  2. ポリシータグの選定理由
    3...")
    4. ポリシータグ運用時に考慮すること 5. まとめ 36

まとめ
37

● オンプレのSQL ServerからBigQu...")
ポリシータグを選定したのはセキュリティ、利用者の利便性、データ基盤の保守運 用の点で優れていたから • 日次とリアルタイムデータ連携でポリシータグを用いた連携方法が異なる • ポリシータグ導入の際は運用の注意点を考慮する必要がある • 導入するには秘密情報の分類マスタや運用整備も必要

テックブログ の紹介①
38
BigQueryにおけるポリシータグ...")
密 情 報 管 理 とデータ 連 携 の 仕 組 み https://techblog.zozo.com/entry/policy-tag-usage-to-protect-bigquery-sensitive-data 本日話したことの詳細について記事を書い ています。執筆時とインフラ構成多少変わっ ています

テックブログ の紹介②
39
全 社 共 通 データ 基 盤 を ...")
データ 基 盤 を 廃 止 して 新 しいデータ 基 盤 に 引 越 した 話 https://techblog.zozo.com/entry/data-infrastructure-replacement 現在のデータ基盤のインフラ構成を書いてい ます。リプレイスの経緯やデータ 基盤構築の際は参考にしてみてください

テックブログ の紹介③
40
ZOZOTOWNを 支 えるリアルタ...")
携 基 盤 https://techblog.zozo.com/entry/real-time-data-linkage-infrastructure 本日話したリアルタイムデータ基盤の詳細 を書いています。現在はGKEで運用してい ますが、基本構成は同じです