Upgrade to Pro — share decks privately, control downloads, hide ads and more …

zozo-bigquery-policy-tag-usage

case-k-git
December 12, 2022

 zozo-bigquery-policy-tag-usage

case-k-git

December 12, 2022
Tweet

More Decks by case-k-git

Other Decks in Technology

Transcript

  1. © ZOZO, Inc. 2 株式会社ZOZO
 技術本部 MA部 MA開発2ブロック
 谷口 恵輔


    • データ基盤や配信基盤の開発と運用をしています
 • 以前は位置情報の分析をしていました
 • 沖縄に住んでいます
 
 2
  2. © ZOZO, Inc. https://zozo.jp/
 • ファッションEC
 • 1,500以上のショップ、8,400以上のブランドの取り扱い
 • 常時90万点以上の商品アイテム数と毎日平均2,600点以上の新着

    商品 を掲載(2022年9月末時点)
 • ブランド古着のファッションゾーン「ZOZOUSED」や
 コスメ専門モール「ZOZOCOSME」、靴の専門モール
 「ZOZOSHOES」、ラグジュアリー&デザイナーズゾーン
 「ZOZOVILLA」を展開
 • 即日配送サービス
 • ギフトラッピングサービス
 • ツケ払い など
 3
  3. © ZOZO, Inc. https://wear.jp/
 4 • ファッションコーディネートアプリ
 • 1,600万ダウンロード突破、コーディネート投稿総数は1,300万件以上 (2022年9月末時点)


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

  4. © ZOZO, Inc. 6 https://zozo.jp/zozoglass/
 • 自宅で簡単・高精度にご自身の顔の肌の色を計測できる フェイスカラー計測ツール
 • ECにおけるコスメ購入時の課題であった「色選び」に関する

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

  5. © ZOZO, Inc. データ基盤の紹介
 9 
 • オンプレのSQL ServerからBigQueryへデータを連携
 


    Dataflow Pub/Sub BigQuery リアルタイム差分 SQL Server Fluentd on GKE (Change Tracking) BigQuery 日次全量 Dataflow BigQuery リアルタイム全量
  6. © ZOZO, Inc. 秘密情報管理で抱えていた課題
 10 
 • 秘密情報はマスクしてBigQueryへ連携
 ◦ マスク処理を変更した場合は過去データを捨てるしかなかった


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

  7. © ZOZO, Inc. ポリシータグとは
 • ポリシータグとは
 ◦ BigQueryでカラム単位のアクセス制御が可能なリソース
 ◦ 性別や年齢など秘密情報を掛け合わせると個人の特定に繋がる


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

  8. © ZOZO, Inc. ポリシータグを採用した理由①
 • 匿名化による機密性の高さ
 ◦ ポリシータグはカラム単位で参照権限を付与できる
 ▪ 承認済みビューでは秘密情報が複数ある場合、必要以上の権限を与えてしまう


    ▪ カラム単位でのアクセス制御では個人の特定はできない
 ▪ プロジェクトのオーナーでも権限がなければ見られないため、
 誤って参照することを防止できる
 
 
 13 Authorized views
 https://cloud.google.com/bigquery/docs/authorized-views

  9. © ZOZO, Inc. ポリシータグを採用した理由②
 • 機密性と利便性の両立
 ◦ 承認済みビューは利用者が使いにくい
 ▪ プレビューでデータを確認できない


    ▪ 秘密情報が含まれていないカラムも、データを確認するには全てのカラムをSELECTする必要がある
 
 ◦ ポリシータグは利用者が使いやすい
 ▪ スキーマからどのカラムが秘密情報か確認できる
 ▪ プレビューでデータの中身を確認できる
 
 14
  10. © ZOZO, Inc. ポリシータグを採用した理由③
 • データ基盤の保守運用
 ◦ 既存のテーブルに秘密情報を追加しやすい
 ▪ 秘密情報のなかったテーブルを承認済みビューにするのは大変


    ▪ 利用状況を調べ利用者にクエリを書き換えてもらう必要がある
 
 ◦ 秘密情報の権限管理がしやすい
 ▪ GCPプロジェクトを横断して共通のポリシータグを付与できる
 ▪ どのアカウントに権限を付与しているかTerraformで管理できる
 
 15
  11. © ZOZO, Inc. データ連携後に利用者が参照するテーブル
 17 分類に基づいてマスクされたカラム
 
 (例) メールアドレスの@以降を抽出
 


    命名規則:カラム名_マスキングアルゴリズム_masked
 どの分類のポリシータグが付与されているか
 何件のカラムがアクセス制御されているか

  12. © ZOZO, Inc. ポリシータグを活用したデータ連携
 
 18 Dataflow Pub/Sub BigQuery リアルタイム差分

    SQL Server Fluentd on GKE (Change Tracking) BigQuery 日次全量 Dataflow BigQuery リアルタイム全量
  13. © ZOZO, Inc. 秘密情報の分類マスタの作成と運用整備
 19 • 秘密情報の分類マスタを作成
 ◦ 秘密情報管理シートで分類を管理
 ◦

    分類に応じてポリシータグやマスクカラムを追加
 ▪ (例) 分類がメールなら@以降のドメイン抽出、誕生日なら誕生月で丸めたマスクカラムを追加する
 
 
 

  14. © ZOZO, Inc. ポリシータグを用いた日次バッチ連携
 21 
 
 
 Dataflow Pub/Sub

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

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

  16. © ZOZO, Inc. ポリシータグを用いた日次バッチ連携
 24 
 
 
 BigQuery /

    公開 SQL Server Dataflow BigQuery / 非公開 bq query • 非公開環境から公開環境 ◦ 公開環境へ連携する際に、秘密情報の分 類に基づき、マスクカラムとポリシータグを 追加 ◦ ポリシータグの付与にはポリシータグのリ ソースIDを含むスキーマが必要
  17. © ZOZO, Inc. ポリシータグを用いたリアルタイムデータ連携
 25 
 
 
 Dataflow Pub/Sub

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

    BigQuery リアルタイム差分 SQL Server Fluentd on GKE (Change Tracking) Dataflow Pub/Sub Kinesis
  19. © 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 属性に秘密情報カラムを追加
 マスクカラム追加
  20. © 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を参照してもらう

  21. © ZOZO, Inc. ポリシータグを用いたリアルタイムデータ連携
 29 
 
 
 Dataflow Pub/Sub

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

  22. © ZOZO, Inc. ポリシータグを用いたリアルタイムデータ連携
 30 BigQuery リアルタイム差分 BigQuery 日次全量 BigQuery

    リアルタイム全量 • 共通のポリシータグを利用
 ◦ リアルタイム全量 = リアルタイム差分 + 日次全量
 ◦ 異なるGCPプロジェクトで共通のポリシータグを利用
 Project A Project A Project B
  23. © 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) リアルタイム全量
  24. © 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
 

  25. © ZOZO, Inc. ポリシータグ運用注意③
 34 • ジョブに失敗した際ポリシータグが外れないよう注意
 ◦ bq query実行時にスキーマが壊れていた


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

  26. © ZOZO, Inc. ポリシータグ運用注意④
 35 
 
 • 秘密情報分類マスタ整備
 ◦

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

  27. © ZOZO, Inc. まとめ
 37 
 • オンプレのSQL ServerからBigQueryへデータを連携している
 •

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

  28. © ZOZO, Inc. テックブログ の紹介①
 38 BigQueryにおけるポリシータグを 用 いた 秘

    密 情 報 管 理 とデータ 連 携 の 仕 組 み https://techblog.zozo.com/entry/policy-tag-usage-to-protect-bigquery-sensitive-data
 本日話したことの詳細について記事を書い ています。執筆時とインフラ構成多少変わっ ています

  29. © ZOZO, Inc. テックブログ の紹介②
 39 全 社 共 通

    データ 基 盤 を 廃 止 して 新 しいデータ 基 盤 に 引 越 した 話 https://techblog.zozo.com/entry/data-infrastructure-replacement
 現在のデータ基盤のインフラ構成を書いてい ます。リプレイスの経緯やデータ
 基盤構築の際は参考にしてみてください

  30. © ZOZO, Inc. テックブログ の紹介③
 40 ZOZOTOWNを 支 えるリアルタイムデータ 連

    携 基 盤 https://techblog.zozo.com/entry/real-time-data-linkage-infrastructure
 
 本日話したリアルタイムデータ基盤の詳細 を書いています。現在はGKEで運用してい ますが、基本構成は同じです