Slide 1

Slide 1 text

BigQueryにおけるポリシータグ
 を用いた秘密情報管理とデータ連携
 株式会社ZOZO
 技術本部 MA部 MA開発2ブロック 谷口恵輔(@csk_pos) Copyright © ZOZO, Inc. 1

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

© ZOZO, Inc. https://zozo.jp/
 ● ファッションEC
 ● 1,500以上のショップ、8,400以上のブランドの取り扱い
 ● 常時90万点以上の商品アイテム数と毎日平均2,600点以上の新着 商品 を掲載(2022年9月末時点)
 ● ブランド古着のファッションゾーン「ZOZOUSED」や
 コスメ専門モール「ZOZOCOSME」、靴の専門モール
 「ZOZOSHOES」、ラグジュアリー&デザイナーズゾーン
 「ZOZOVILLA」を展開
 ● 即日配送サービス
 ● ギフトラッピングサービス
 ● ツケ払い など
 3

Slide 4

Slide 4 text

© ZOZO, Inc. https://wear.jp/
 4 ● ファッションコーディネートアプリ
 ● 1,600万ダウンロード突破、コーディネート投稿総数は1,300万件以上 (2022年9月末時点)
 ● ピックアップタグから最新のトレンドをチェック
 ● コーディネート着用アイテムを公式サイトで購入可能
 ● WEAR公認の人気ユーザーをWEARISTAと認定。モデル・タレント・デザ イナー・インフルエンサーといった各界著名人も参加


Slide 5

Slide 5 text

© ZOZO, Inc. 5 https://zozo.jp/zozomat/
 
 ● 自宅にいながら簡単に高精度な足の3D計測ができる計測マット
 ● 計測したデータをもとに、自分の足型と靴の“相性度” を表示
 ● NIKEやCONVERSEなど4,976型以上のアイテムに対応
 (2022年9月末時点)
 


Slide 6

Slide 6 text

© ZOZO, Inc. 6 https://zozo.jp/zozoglass/
 ● 自宅で簡単・高精度にご自身の顔の肌の色を計測できる フェイスカラー計測ツール
 ● ECにおけるコスメ購入時の課題であった「色選び」に関する 不安や悩みを解消
 ● 肌の色を構成する成分、ヘモグロビン量とメラニン量を画像 から推定
 ● コスメ専門モール「ZOZOCOSME」で取り扱うベースメイクの 一部に対応
 ● 計測者数125万人を突破(2022年9月末時点)


Slide 7

Slide 7 text

© ZOZO, Inc. 目次
 1. データ基盤の紹介
 2. ポリシータグの選定理由
 3. ポリシータグを活用したデータ連携
 4. ポリシータグ運用時に考慮すること
 5. まとめ
 7

Slide 8

Slide 8 text

© ZOZO, Inc. 目次
 1. データ基盤の紹介
 2. ポリシータグの選定理由
 3. ポリシータグを活用したデータ連携
 4. ポリシータグ運用時に考慮すること
 5. まとめ
 8

Slide 9

Slide 9 text

© ZOZO, Inc. データ基盤の紹介
 9 
 ● オンプレのSQL ServerからBigQueryへデータを連携
 
 Dataflow Pub/Sub BigQuery リアルタイム差分 SQL Server Fluentd on GKE (Change Tracking) BigQuery 日次全量 Dataflow BigQuery リアルタイム全量

Slide 10

Slide 10 text

© ZOZO, Inc. 秘密情報管理で抱えていた課題
 10 
 ● 秘密情報はマスクしてBigQueryへ連携
 ○ マスク処理を変更した場合は過去データを捨てるしかなかった
 ○ 秘密情報の元データがないため、分析者がマスク処理を作りにくい
 ○ メルマガ配信など秘密情報が必要なシステムで利用できない
 
 ● セキュリティ面での課題
 ○ BigQueryへ連携する際に秘密情報の有無を利用者が申請する運用をとっていた
 ○ 秘密情報ではないのにマスク化されて使えないデータがあった
 
 
 


Slide 11

Slide 11 text

© ZOZO, Inc. 目次
 1. データ基盤の紹介
 2. ポリシータグの選定理由
 3. ポリシータグを活用したデータ連携
 4. ポリシータグ運用時に考慮すること
 5. まとめ
 11

Slide 12

Slide 12 text

© ZOZO, Inc. ポリシータグとは
 ● ポリシータグとは
 ○ BigQueryでカラム単位のアクセス制御が可能なリソース
 ○ 性別や年齢など秘密情報を掛け合わせると個人の特定に繋がる
 ○ テーブル全体ではなくカラム単位でアクセス制御することで、個人の特定を防ぐ
 
 12 引用:https://cloud.google.com/bigquery/docs/best-practices-policy-tags


Slide 13

Slide 13 text

© ZOZO, Inc. ポリシータグを採用した理由①
 ● 匿名化による機密性の高さ
 ○ ポリシータグはカラム単位で参照権限を付与できる
 ■ 承認済みビューでは秘密情報が複数ある場合、必要以上の権限を与えてしまう
 ■ カラム単位でのアクセス制御では個人の特定はできない
 ■ プロジェクトのオーナーでも権限がなければ見られないため、
 誤って参照することを防止できる
 
 
 13 Authorized views
 https://cloud.google.com/bigquery/docs/authorized-views


Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

© ZOZO, Inc. ポリシータグを採用した理由③
 ● データ基盤の保守運用
 ○ 既存のテーブルに秘密情報を追加しやすい
 ■ 秘密情報のなかったテーブルを承認済みビューにするのは大変
 ■ 利用状況を調べ利用者にクエリを書き換えてもらう必要がある
 
 ○ 秘密情報の権限管理がしやすい
 ■ GCPプロジェクトを横断して共通のポリシータグを付与できる
 ■ どのアカウントに権限を付与しているかTerraformで管理できる
 
 15

Slide 16

Slide 16 text

© ZOZO, Inc. 目次
 1. データ基盤の紹介
 2. ポリシータグの選定理由
 3. ポリシータグを活用したデータ連携
 4. ポリシータグ運用時に考慮すること
 5. まとめ
 16

Slide 17

Slide 17 text

© ZOZO, Inc. データ連携後に利用者が参照するテーブル
 17 分類に基づいてマスクされたカラム
 
 (例) メールアドレスの@以降を抽出
 
 命名規則:カラム名_マスキングアルゴリズム_masked
 どの分類のポリシータグが付与されているか
 何件のカラムがアクセス制御されているか


Slide 18

Slide 18 text

© ZOZO, Inc. ポリシータグを活用したデータ連携
 
 18 Dataflow Pub/Sub BigQuery リアルタイム差分 SQL Server Fluentd on GKE (Change Tracking) BigQuery 日次全量 Dataflow BigQuery リアルタイム全量

Slide 19

Slide 19 text

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


Slide 20

Slide 20 text

© ZOZO, Inc. 分類マスタに対応したポリシータグ
 20 ● 分類マスタに対応したポリシータグを準備
 ○ 秘密情報の分類マスタに対応するようポリシータグを作成
 ○ ポリシータグはTerraformで管理
 
 


Slide 21

Slide 21 text

© ZOZO, Inc. ポリシータグを用いた日次バッチ連携
 21 
 
 
 Dataflow Pub/Sub BigQuery リアルタイム差分 SQL Server Fluentd on GKE (Change Tracking) BigQuery 日次全量 Dataflow BigQuery リアルタイム全量

Slide 22

Slide 22 text

© ZOZO, Inc. ポリシータグを用いた日次バッチ連携
 22 
 
 
 BigQuery / 公開 SQL Server Dataflow BigQuery / 非公開 bq query

Slide 23

Slide 23 text

© ZOZO, Inc. ポリシータグを用いた日次バッチ連携
 23 
 
 
 BigQuery / 公開 SQL Server Dataflow BigQuery / 非公開 bq query ● SQL Serverから非公開環境
 ○ Dataflowを用いてSQL Serverから非公 開環境へロード
 ○ ポリシータグは付与されていないため 非公開にしている
 


Slide 24

Slide 24 text

© ZOZO, Inc. ポリシータグを用いた日次バッチ連携
 24 
 
 
 BigQuery / 公開 SQL Server Dataflow BigQuery / 非公開 bq query ● 非公開環境から公開環境 ○ 公開環境へ連携する際に、秘密情報の分 類に基づき、マスクカラムとポリシータグを 追加 ○ ポリシータグの付与にはポリシータグのリ ソースIDを含むスキーマが必要

Slide 25

Slide 25 text

© ZOZO, Inc. ポリシータグを用いたリアルタイムデータ連携
 25 
 
 
 Dataflow Pub/Sub BigQuery リアルタイム差分 SQL Server Fluentd on GKE (Change Tracking) BigQuery 日次全量 Dataflow BigQuery リアルタイム全量

Slide 26

Slide 26 text

© ZOZO, Inc. ポリシータグを用いたリアルタイムデータ連携
 26 
 
 
 Dataflow Pub/Sub BigQuery リアルタイム差分 SQL Server Fluentd on GKE (Change Tracking) Dataflow Pub/Sub Kinesis

Slide 27

Slide 27 text

© ZOZO, Inc. ポリシータグを用いたリアルタイムデータ連携
 27 
 
 
 Dataflow Pub/Sub BigQuery リアルタイム差分 SQL Server Fluentd on GKE (Change Tracking) Dataflow Pub/Sub Kinesis ● Fluentdでマスクカラムを追加 ○ 秘密情報の分類マスタに基づいてFluentd でマスクカラムを追加 ○ Cloud Pub/SubへPublishする際にattribute 属性に秘密情報カラムを追加
 マスクカラム追加

Slide 28

Slide 28 text

© ZOZO, Inc. ポリシータグを用いたリアルタイムデータ連携
 28 
 
 
 Dataflow Pub/Sub BigQuery リアルタイム差分 SQL Server Fluentd on GKE (Change Tracking) Dataflow Pub/Sub Kinesis ● 秘密情報をDROPしたCloud Pub/Sub ○ Dataflowを用いてattribute属性に含まれる秘 密情報をDROPする
 ○ 秘密情報を必要としない場合は秘密情報が含 まれていないTopicを参照してもらう


Slide 29

Slide 29 text

© ZOZO, Inc. ポリシータグを用いたリアルタイムデータ連携
 29 
 
 
 Dataflow Pub/Sub BigQuery リアルタイム差分 SQL Server Fluentd on GKE (Change Tracking) Dataflow Pub/Sub Kinesis ● BigQueryにストリーミングインサート ○ Terraformで事前にポリシータグを付与した テーブルを作成
 ○ BigQueryからはマスクカラムと秘密情報を 参照できる


Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

© ZOZO, Inc. 目次
 1. データ基盤の紹介
 2. ポリシータグの選定理由
 3. ポリシータグを活用したデータ連携
 4. ポリシータグ運用時に考慮すること
 5. まとめ
 31

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

© ZOZO, Inc. ポリシータグ運用注意②
 33 引用:https://cloud.google.com/bigquery/docs/column-level-security-intro#views
 ● テーブルにマスクカラムが必要
 ○ 承認済みビューとポリシータグを組み合わせたマスクカラムの生成はできない
 ○ ポリシータグを使う場合はマスクしたカラムも必要
 ○ 今だと動的マスキングを使う方法もある
 ■ ただし、利用者が秘密情報だと思い意図せず利用する場合もあるのでトレードオフ
 dynamic data masking
 https://cloud.google.com/bigquery/docs/column-data-ma sking-intro
 


Slide 34

Slide 34 text

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


Slide 35

Slide 35 text

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


Slide 36

Slide 36 text

© ZOZO, Inc. 目次
 1. データ基盤の紹介
 2. ポリシータグの選定理由
 3. ポリシータグを活用したデータ連携
 4. ポリシータグ運用時に考慮すること
 5. まとめ
 36

Slide 37

Slide 37 text

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


Slide 38

Slide 38 text

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


Slide 39

Slide 39 text

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


Slide 40

Slide 40 text

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


Slide 41

Slide 41 text

No content