Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
zozo-bigquery-policy-tag-usage
Search
case-k-git
December 12, 2022
Technology
3.2k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
zozo-bigquery-policy-tag-usage
https://datatech-jp.connpass.com/event/264640
case-k-git
December 12, 2022
More Decks by case-k-git
See All by case-k-git
oracle-to-databricks-migration-with-llm-and-dbt
casek
1
610
oracle-to-databricks-migration-with-llm-and-dbt-en
casek
0
57
Enhancing AXA Data Platform with Terraform
casek
1
1.5k
zozotown-real-time-linkage-infrastructure
casek
0
1.6k
Other Decks in Technology
See All in Technology
2026TECHFRESH畢業分享會 - 葬送的通靈師:化系統與用戶雜訊成行動訊號
line_developers_tw
PRO
0
1k
あなたの知らないPDFのアクセシビリティ
lycorptech_jp
PRO
0
190
やさしいA2A入門
minorun365
PRO
12
1.9k
200個のGitHubリポジトリを横断調査したかった
icck
0
130
SONiCの統計情報を取得したい
sonic
0
160
Chainlitで作るお手軽チャットUI
ynt0485
0
240
スキルと MCP ツール、責務をどう分けるか? AI が迷わないインターフェース設計の戦略
cdataj
1
1.1k
MUSUBI 田中裕一『AIと共に行う「しごとのリデザイン」- スモールバックオフィス編』AI Ops Lab #4
musubi
0
180
AI駆動開発を通して感じた、 AI時代のデザイナーの役割変化
whisaiyo
3
2.1k
Claude Codeをどのように キャッチアップしているか
oikon48
12
8k
気軽に使える"情報のハブ"としてのNotion活用 〜フロー情報の集積点 と、 Claude Code × Notion AI〜
syucream
1
100
RAG を使わないという選択肢
tatsutaka
1
230
Featured
See All Featured
Facilitating Awesome Meetings
lara
57
7k
エンジニアに許された特別な時間の終わり
watany
107
250k
Utilizing Notion as your number one productivity tool
mfonobong
4
320
sira's awesome portfolio website redesign presentation
elsirapls
0
280
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.5k
How Software Deployment tools have changed in the past 20 years
geshan
0
34k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
730
Measuring & Analyzing Core Web Vitals
bluesmoon
9
860
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
65
56k
Scaling GitHub
holman
464
140k
Transcript
BigQueryにおけるポリシータグ を用いた秘密情報管理とデータ連携 株式会社ZOZO 技術本部 MA部 MA開発2ブロック 谷口恵輔(@csk_pos) Copyright © ZOZO,
Inc. 1
© ZOZO, Inc. 2 株式会社ZOZO 技術本部 MA部 MA開発2ブロック 谷口 恵輔
• データ基盤や配信基盤の開発と運用をしています • 以前は位置情報の分析をしていました • 沖縄に住んでいます 2
© ZOZO, Inc. https://zozo.jp/ • ファッションEC • 1,500以上のショップ、8,400以上のブランドの取り扱い • 常時90万点以上の商品アイテム数と毎日平均2,600点以上の新着
商品 を掲載(2022年9月末時点) • ブランド古着のファッションゾーン「ZOZOUSED」や コスメ専門モール「ZOZOCOSME」、靴の専門モール 「ZOZOSHOES」、ラグジュアリー&デザイナーズゾーン 「ZOZOVILLA」を展開 • 即日配送サービス • ギフトラッピングサービス • ツケ払い など 3
© ZOZO, Inc. https://wear.jp/ 4 • ファッションコーディネートアプリ • 1,600万ダウンロード突破、コーディネート投稿総数は1,300万件以上 (2022年9月末時点)
• ピックアップタグから最新のトレンドをチェック • コーディネート着用アイテムを公式サイトで購入可能 • WEAR公認の人気ユーザーをWEARISTAと認定。モデル・タレント・デザ イナー・インフルエンサーといった各界著名人も参加
© ZOZO, Inc. 5 https://zozo.jp/zozomat/ • 自宅にいながら簡単に高精度な足の3D計測ができる計測マット • 計測したデータをもとに、自分の足型と靴の“相性度”
を表示 • NIKEやCONVERSEなど4,976型以上のアイテムに対応 (2022年9月末時点)
© ZOZO, Inc. 6 https://zozo.jp/zozoglass/ • 自宅で簡単・高精度にご自身の顔の肌の色を計測できる フェイスカラー計測ツール • ECにおけるコスメ購入時の課題であった「色選び」に関する
不安や悩みを解消 • 肌の色を構成する成分、ヘモグロビン量とメラニン量を画像 から推定 • コスメ専門モール「ZOZOCOSME」で取り扱うベースメイクの 一部に対応 • 計測者数125万人を突破(2022年9月末時点)
© ZOZO, Inc. 目次 1. データ基盤の紹介 2. ポリシータグの選定理由 3. ポリシータグを活用したデータ連携
4. ポリシータグ運用時に考慮すること 5. まとめ 7
© ZOZO, Inc. 目次 1. データ基盤の紹介 2. ポリシータグの選定理由 3. ポリシータグを活用したデータ連携
4. ポリシータグ運用時に考慮すること 5. まとめ 8
© ZOZO, Inc. データ基盤の紹介 9 • オンプレのSQL ServerからBigQueryへデータを連携
Dataflow Pub/Sub BigQuery リアルタイム差分 SQL Server Fluentd on GKE (Change Tracking) BigQuery 日次全量 Dataflow BigQuery リアルタイム全量
© ZOZO, Inc. 秘密情報管理で抱えていた課題 10 • 秘密情報はマスクしてBigQueryへ連携 ◦ マスク処理を変更した場合は過去データを捨てるしかなかった
◦ 秘密情報の元データがないため、分析者がマスク処理を作りにくい ◦ メルマガ配信など秘密情報が必要なシステムで利用できない • セキュリティ面での課題 ◦ BigQueryへ連携する際に秘密情報の有無を利用者が申請する運用をとっていた ◦ 秘密情報ではないのにマスク化されて使えないデータがあった
© ZOZO, Inc. 目次 1. データ基盤の紹介 2. ポリシータグの選定理由 3. ポリシータグを活用したデータ連携
4. ポリシータグ運用時に考慮すること 5. まとめ 11
© ZOZO, Inc. ポリシータグとは • ポリシータグとは ◦ BigQueryでカラム単位のアクセス制御が可能なリソース ◦ 性別や年齢など秘密情報を掛け合わせると個人の特定に繋がる
◦ テーブル全体ではなくカラム単位でアクセス制御することで、個人の特定を防ぐ 12 引用:https://cloud.google.com/bigquery/docs/best-practices-policy-tags
© ZOZO, Inc. ポリシータグを採用した理由① • 匿名化による機密性の高さ ◦ ポリシータグはカラム単位で参照権限を付与できる ▪ 承認済みビューでは秘密情報が複数ある場合、必要以上の権限を与えてしまう
▪ カラム単位でのアクセス制御では個人の特定はできない ▪ プロジェクトのオーナーでも権限がなければ見られないため、 誤って参照することを防止できる 13 Authorized views https://cloud.google.com/bigquery/docs/authorized-views
© ZOZO, Inc. ポリシータグを採用した理由② • 機密性と利便性の両立 ◦ 承認済みビューは利用者が使いにくい ▪ プレビューでデータを確認できない
▪ 秘密情報が含まれていないカラムも、データを確認するには全てのカラムをSELECTする必要がある ◦ ポリシータグは利用者が使いやすい ▪ スキーマからどのカラムが秘密情報か確認できる ▪ プレビューでデータの中身を確認できる 14
© ZOZO, Inc. ポリシータグを採用した理由③ • データ基盤の保守運用 ◦ 既存のテーブルに秘密情報を追加しやすい ▪ 秘密情報のなかったテーブルを承認済みビューにするのは大変
▪ 利用状況を調べ利用者にクエリを書き換えてもらう必要がある ◦ 秘密情報の権限管理がしやすい ▪ GCPプロジェクトを横断して共通のポリシータグを付与できる ▪ どのアカウントに権限を付与しているかTerraformで管理できる 15
© ZOZO, Inc. 目次 1. データ基盤の紹介 2. ポリシータグの選定理由 3. ポリシータグを活用したデータ連携
4. ポリシータグ運用時に考慮すること 5. まとめ 16
© ZOZO, Inc. データ連携後に利用者が参照するテーブル 17 分類に基づいてマスクされたカラム (例) メールアドレスの@以降を抽出
命名規則:カラム名_マスキングアルゴリズム_masked どの分類のポリシータグが付与されているか 何件のカラムがアクセス制御されているか
© ZOZO, Inc. ポリシータグを活用したデータ連携 18 Dataflow Pub/Sub BigQuery リアルタイム差分
SQL Server Fluentd on GKE (Change Tracking) BigQuery 日次全量 Dataflow BigQuery リアルタイム全量
© ZOZO, Inc. 秘密情報の分類マスタの作成と運用整備 19 • 秘密情報の分類マスタを作成 ◦ 秘密情報管理シートで分類を管理 ◦
分類に応じてポリシータグやマスクカラムを追加 ▪ (例) 分類がメールなら@以降のドメイン抽出、誕生日なら誕生月で丸めたマスクカラムを追加する
© ZOZO, Inc. 分類マスタに対応したポリシータグ 20 • 分類マスタに対応したポリシータグを準備 ◦ 秘密情報の分類マスタに対応するようポリシータグを作成 ◦
ポリシータグはTerraformで管理
© ZOZO, Inc. ポリシータグを用いた日次バッチ連携 21 Dataflow Pub/Sub
BigQuery リアルタイム差分 SQL Server Fluentd on GKE (Change Tracking) BigQuery 日次全量 Dataflow BigQuery リアルタイム全量
© ZOZO, Inc. ポリシータグを用いた日次バッチ連携 22 BigQuery /
公開 SQL Server Dataflow BigQuery / 非公開 bq query
© ZOZO, Inc. ポリシータグを用いた日次バッチ連携 23 BigQuery /
公開 SQL Server Dataflow BigQuery / 非公開 bq query • SQL Serverから非公開環境 ◦ Dataflowを用いてSQL Serverから非公 開環境へロード ◦ ポリシータグは付与されていないため 非公開にしている
© ZOZO, Inc. ポリシータグを用いた日次バッチ連携 24 BigQuery /
公開 SQL Server Dataflow BigQuery / 非公開 bq query • 非公開環境から公開環境 ◦ 公開環境へ連携する際に、秘密情報の分 類に基づき、マスクカラムとポリシータグを 追加 ◦ ポリシータグの付与にはポリシータグのリ ソースIDを含むスキーマが必要
© ZOZO, Inc. ポリシータグを用いたリアルタイムデータ連携 25 Dataflow Pub/Sub
BigQuery リアルタイム差分 SQL Server Fluentd on GKE (Change Tracking) BigQuery 日次全量 Dataflow BigQuery リアルタイム全量
© ZOZO, Inc. ポリシータグを用いたリアルタイムデータ連携 26 Dataflow Pub/Sub
BigQuery リアルタイム差分 SQL Server Fluentd on GKE (Change Tracking) Dataflow Pub/Sub Kinesis
© 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 属性に秘密情報カラムを追加 マスクカラム追加
© 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を参照してもらう
© ZOZO, Inc. ポリシータグを用いたリアルタイムデータ連携 29 Dataflow Pub/Sub
BigQuery リアルタイム差分 SQL Server Fluentd on GKE (Change Tracking) Dataflow Pub/Sub Kinesis • BigQueryにストリーミングインサート ◦ Terraformで事前にポリシータグを付与した テーブルを作成 ◦ BigQueryからはマスクカラムと秘密情報を 参照できる
© ZOZO, Inc. ポリシータグを用いたリアルタイムデータ連携 30 BigQuery リアルタイム差分 BigQuery 日次全量 BigQuery
リアルタイム全量 • 共通のポリシータグを利用 ◦ リアルタイム全量 = リアルタイム差分 + 日次全量 ◦ 異なるGCPプロジェクトで共通のポリシータグを利用 Project A Project A Project B
© ZOZO, Inc. 目次 1. データ基盤の紹介 2. ポリシータグの選定理由 3. ポリシータグを活用したデータ連携
4. ポリシータグ運用時に考慮すること 5. まとめ 31
© 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) リアルタイム全量
© 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
© ZOZO, Inc. ポリシータグ運用注意③ 34 • ジョブに失敗した際ポリシータグが外れないよう注意 ◦ bq query実行時にスキーマが壊れていた
◦ ワークフロージョブの失敗は検知できるが、BigQueryのクエリジョブは実行され ポリシータグが付与されていないテーブルが作られてしまった bqコマンドに渡しているスキーマのJSONが間違っていても クエリが実行されてしまう問題 https://qiita.com/shiozaki/items/689610ca4cdf7954b3ea
© ZOZO, Inc. ポリシータグ運用注意④ 35 • 秘密情報分類マスタ整備 ◦
過去に分類マスタのカラムとSQL Serverのカラムで表記ズレがあり、秘密情報なのにポリシー タグが付与されなかった ◦ バリデーションを導入し、秘密情報分類マスタの品質を担保する必要がある
© ZOZO, Inc. 目次 1. データ基盤の紹介 2. ポリシータグの選定理由 3. ポリシータグを活用したデータ連携
4. ポリシータグ運用時に考慮すること 5. まとめ 36
© ZOZO, Inc. まとめ 37 • オンプレのSQL ServerからBigQueryへデータを連携している •
ポリシータグを選定したのはセキュリティ、利用者の利便性、データ基盤の保守運 用の点で優れていたから • 日次とリアルタイムデータ連携でポリシータグを用いた連携方法が異なる • ポリシータグ導入の際は運用の注意点を考慮する必要がある • 導入するには秘密情報の分類マスタや運用整備も必要
© ZOZO, Inc. テックブログ の紹介① 38 BigQueryにおけるポリシータグを 用 いた 秘
密 情 報 管 理 とデータ 連 携 の 仕 組 み https://techblog.zozo.com/entry/policy-tag-usage-to-protect-bigquery-sensitive-data 本日話したことの詳細について記事を書い ています。執筆時とインフラ構成多少変わっ ています
© ZOZO, Inc. テックブログ の紹介② 39 全 社 共 通
データ 基 盤 を 廃 止 して 新 しいデータ 基 盤 に 引 越 した 話 https://techblog.zozo.com/entry/data-infrastructure-replacement 現在のデータ基盤のインフラ構成を書いてい ます。リプレイスの経緯やデータ 基盤構築の際は参考にしてみてください
© ZOZO, Inc. テックブログ の紹介③ 40 ZOZOTOWNを 支 えるリアルタイムデータ 連
携 基 盤 https://techblog.zozo.com/entry/real-time-data-linkage-infrastructure 本日話したリアルタイムデータ基盤の詳細 を書いています。現在はGKEで運用してい ますが、基本構成は同じです
None