$30 off During Our Annual Pro Sale. View Details »

Lookerで実現するセキュアな外部データ提供

 Lookerで実現するセキュアな外部データ提供

2025/12/17 に agu'e'r データ利活用分科会 Looker User Meetup Part 5 で発表した登壇資料です。

株式会社ZOZO
データ・AIシステム本部
データシステム部 データ基盤ブロック
栁澤 仁子(@i_125)

Avatar for ZOZO Developers

ZOZO Developers PRO

December 17, 2025
Tweet

More Decks by ZOZO Developers

Other Decks in Technology

Transcript

  1. Lookerで実現するセキュアな 外部データ提供 2025/12/17 Jagu'e'r データ利活用分科会 Looker User Meetup Part 5

    株式会社ZOZO
 データ・AIシステム本部 データシステム部 データ基盤ブロック
 
 栁澤 仁子 Copyright © ZOZO, Inc. 1
  2. © ZOZO, Inc. 株式会社ZOZO データ・AIシステム本部 データシステム部 データ基盤ブロック 栁澤 仁子 (@i_125)

    2023年3月中途入社 データマート整備やLooker周辺の整備・サポートに取 り組んでいます。社内では「とこさん」と呼ばれていま す。 2
  3. © ZOZO, Inc. https://zozo.jp/ 3 • ファッションEC • 1,600以上のショップ、9,000以上のブランドの取り扱い •

    常時107万点以上の商品アイテム数と毎日平均2,700点以上の新着 商品を掲載(2025年9月末時点) • ブランド古着のファッションゾーン「ZOZOUSED」や コスメ専門モール「ZOZOCOSME」、シューズ専門ゾーン 「ZOZOSHOES」、ラグジュアリー&デザイナーズゾーン 「ZOZOVILLA」を展開 • 即日配送サービス • ギフトラッピングサービス • ツケ払い など
  4. © ZOZO, Inc. 4 アジェンダ 1. 背景 2. Looker Embedによる外部提供の設計

    3. マルチテナント環境のセキュリティ対策 4. Gemini in Lookerの導入と実装 5. まとめ
  5. © ZOZO, Inc. 5 アジェンダ 1. 背景 2. Looker Embedによる外部提供の設計

    3. マルチテナント環境のセキュリティ対策 4. Gemini in Lookerの導入と実装 5. まとめ
  6. © ZOZO, Inc. 6 なぜ外部向けダッシュボードが必要になったか 前提 • 元々「ZOZOTOWNに出店いただいているテナント企業向け」と「社内向け」それぞれのWebアプ リ上で分析ダッシュボードを提供していた •

    エンジニアが都度要望を聞いて開発 課題 「分析ダッシュボードについてはビジネス部門が直接提供できるようにしたい」 → Lookerを選定 • アクセス制御機能(User Attribute + Access Filter)が充実 • 同じダッシュボードをテナント企業向け・社内向け両方に埋め込み可能
  7. © ZOZO, Inc. 8 アジェンダ 1. 背景 2. Looker Embedによる外部提供の設計

    3. マルチテナント環境のセキュリティ対策 4. Gemini in Lookerの導入と実装 5. まとめ
  8. © ZOZO, Inc. 9 Looker Embedとは Lookerのダッシュボードを外部アプリケーションに埋め込む機能 埋め込みの種類 • ユーザーはLookerへの追加ログイン不要(シームレスなUX)

    • 暗号署名によりURLの改ざんを防止 • User Attributeを埋め込み時に設定可能 タイプ 認証 特徴 Public 不要 誰でも閲覧可能 Private Lookerログイン必須 社内向け、外部ユーザー不向き Signed (SSO) 親アプリ認証のみ 外部ユーザー向け 今回はこちらを採用
  9. © ZOZO, Inc. 10 User Attributeの引き渡し SSO Embed認証時にUser Attributeを設定 実装の流れ

    • 1. 外部アプリがLookerのSSO Embed APIを呼び出し • 2. User Attributeとして `app_user_id` (アプリ側のユーザーID)を設定 • 3. Embed Userを作成してダッシュボードを表示
  10. © ZOZO, Inc. 11 アジェンダ 1. 背景 2. Looker Embedによる外部提供の設計

    3. マルチテナント環境のセキュリティ対策 4. Gemini in Lookerの導入と実装 5. まとめ
  11. © ZOZO, Inc. 12 User AttributeとAccess Filterによる権限制御 テナント単位でのアクセス制御を実現 仕組み 1.

    Exploreに `app_user_id` が渡される 2. ユーザー管理ビューを参照し、権限のある `tenant_id` を取得 3. `access_filter` で自動的にWHERE句を付与 全テナントで同じダッシュボードを参照しても、 ユーザーに紐づくテナントIDで自動フィルタリングがされる!
  12. © ZOZO, Inc. 13 access_filterの実装例 設定内容 • Explore: order_items(注文データ) •

    User Attribute: app_user_id(アプリ側ユーザーID) • フィルタ対象: tenant_id(テナント識別子) LookMLでの設定例 explore: order_items { access_filter: { field: order_items.tenant_id user_attribute: app_user_id } } Explore `order_items` に対するクエリには 常にWHERE句が自動付与される 例:WHERE tenant_id IN ('T001', 'T002')
  13. © ZOZO, Inc. 14 アジェンダ 1. 背景 2. Looker Embedによる外部提供の設計

    3. マルチテナント環境のセキュリティ対策 4. Gemini in Lookerの導入と実装 5. まとめ
  14. © ZOZO, Inc. 15 Gemini in Looker導入の背景 ビジネス側からの要望 • ダッシュボードの情報量が増加

    • 「全体を要約して理解しやすくできないか」 Dashboard Summarizationを採用 • OSSとして公開(カスタマイズ可能) • プロンプト調整やUI変更が柔軟
  15. © ZOZO, Inc. 17 アーキテクチャ概要 構成図 • Cloud Load Balancing

    + Cloud Armorを追加 • LookerインスタンスからのIPアドレスのみを許可
  16. © ZOZO, Inc. 18 セキュリティ上の重要な設計判断 • →実装を確認したところ、実際には異なる設計だった 公式アーキテクチャ図を 見ると、Cloud Runが

    Looker API経由でデータ 取得するように見えなく もない...? 引用:https://github.com/looker-open-source/dashboard-summarization?tab=readme-ov-file#setup より
  17. © ZOZO, Inc. 22 実装の工夫 1. プロンプトの外部ファイル化 • guideline.txt にZOZOTOWN特性・施策例を記載

    • コード変更なしでビジネス情報を更新可能 2. プロンプトの固定化 • ユーザー自由入力を制限し、事前定義のプロンプトのみ使用 • プロンプトインジェクション対策 3. 統合要約の実現 • デフォルトはタイル単位の個別要約のみ • `generateQuerySummary` → `generateSummary` の2段階処理で全体俯瞰
  18. © ZOZO, Inc. 23 本番適用時の対応(1) フィルタ同期 フィルタ同期がされない • 課題:フィルタ変更後も初期状態のデータで要約 →

    画面表示と要約内容が乖離 • 対応:`tileHostData.dashboardFilters` から現在のフィルタ状態を取得し、その条件 でデータ再取得してからサマリAPIへ送信 // 最新のフィルタ状態でメタデータを再取得 const latestMetadata = await fetchDashboardDetails( dashboardId, core40SDK, extensionSDK, tileHostData.dashboardFilters || {} ); // 最新のクエリ結果を取得 const latestResults = await fetchQueryData(latestMetadata.queries, core40SDK);
  19. © ZOZO, Inc. 24 本番適用時の対応(2) PDF対応 PDFダウンロードができない • 課題:Extension Tileを含むダッシュボードのPDFダウンロード時、Lookerのレンダ

    ラが応答を停止 • 対応:`extensionSDK.rendered()` でレンダリング完了を通知 • 現状の制約:サマリ内容自体はPDFに含まれない(非同期生成のため) 参考:https://cloud.google.com/looker/docs/extension-framework-building-tile-extensions#rendering_considerations
  20. © ZOZO, Inc. 25 アジェンダ 1. 背景:なぜ外部向けダッシュボードが必要になったか 2. Looker Embedによる外部提供の設計

    3. マルチテナント環境のセキュリティ対策 4. Gemini in Lookerの導入と実装 5. まとめ
  21. © ZOZO, Inc. 26 まとめ Looker Embedでの外部向けダッシュボード提供 • User Attribute

    + Access Filterでクエリレベルの強制フィルタリング • マルチテナント環境でも同一ダッシュボードを安全に共有可能 Gemini in Looker(Dashboard Summarization)導入時 • Lookerなら生成AI機能も外部ユーザーに安全に提供可能 • Looker内でアクセス制御が完結 → バックエンドにはフィルタ済みデータのみ送信 • OSSカスタマイズで要件に合わせた拡張も柔軟に対応