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

2026-09-10 【Snowflake World Tour Tokyo 2026】dbt...

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for civitaspo civitaspo
September 10, 2026

2026-09-10 【Snowflake World Tour Tokyo 2026】dbt Core と Snowflake で実現する多層的なデータガバナンス / Multi-Layered Data Governance Powered by dbt Core and Snowflake

2029-09-10 に開催された『Snowflake World Tour Tokyo 2026』の登壇資料です。
https://snowflake-event.jp/expo/theater-timetable/

Avatar for civitaspo

civitaspo

September 10, 2026

More Decks by civitaspo

Other Decks in Technology

Transcript

  1. ⾃⼰紹介 civitaspo (キビタスポ/ きびちゃん) バクラク事業部 BizOps部 データグループ マネージャー Links 𝕏

    civitaspo civitaspo.com civitaspo 画像を⼊れてね その他 Snowflake Data Superhero 2026 Snowflake九州ユーザー会 主宰 Sigma User Community Japan 運営 © LayerX Inc. 3
  2. 今⽇のトピック dbt と Snowflake を使い、多層的にデータを統制する dbt の静的解析やCI、および、Snowflakeのデータ保護機能を組み合わせ、開発から公開までの多層的な統制を⾃動強制 LAYER 01 LAYER

    02 LAYER 03 LAYER 04 モデル依存関係 ⾏レベル制御 列レベル制御 公開経路制御 強制タイミング 強制タイミング 強制タイミング 強制タイミング データ作成時 (CI時) クエリ実⾏時 クエリ実⾏時 データ設計時 仕組み 仕組み 仕組み 仕組み dbt-authorized-models Row Access Policy Masking Policy Secure Data Sharing ビルド前にモデルの依存関係を CIで⾃動検査。不正な依存構造 を持つモデルの作成を未然に防 ⽌します。 Snowflakeがクエリ時に⾏を⾃ 動判別。ユーザーロールに応じ た閲覧可能レコードの⾃動絞り 込みを動的に実施します。 クエリ実⾏時に列単位でのマス ク表⽰を動的に実⾏。権限が不 ⾜するユーザーに対し、重要情 報を隠蔽します。 制限領域から許可データのみを 抽出‧公開する、安全な経路を 設計。未許可データが内部公開 の経路へ流出するのを遮断しま す。 © LayerX Inc. 6
  3. Agenda ⽬次 • ✅ ⾃⼰紹介 / 会社紹介 • ✅ 今⽇のトピック

    • なぜ dbt を使うのか • モデル依存関係の統制 • ⾏レベル制御 • 列レベル制御 • 補⾜: 実⾏コンテクストの特定 • 公開経路制御 • まとめ
  4. なぜ dbt を使うのか Snowflake への書込経路を dbt に統⼀し、統制⼿段を補完/拡張 • • Snowflake

    の機能のみで、Policy の適⽤範 囲を継続的に把握/適⽤し続けるのは難しい 弊社では、書込経路を dbt に統⼀し、 GitHubと組み合わせ、統制⼿段を補完/拡張 dbt は拡張性が⾮常に⾼く、 柔軟に統制⼿段を提供可能に © LayerX Inc. 12
  5. モデル依存関係の統制 dbt-authorized-models • • • • civitaspo/dbt-authorized-models 参照される側の model/source に、

    meta.authorize で参照許可条件を定義 参照元がマッチしなければ警告またはコンパ イルエラー ◦ 定義が無い参照先への参照は拒否する (deny-by-default) 参照許可条件の変更は、GitHub の CODEOWNERS でデータオーナーのレビュー を必須に © LayerX Inc. 出典: Snowflakeとdbtでモデルの依存関係にガバナンスを効かせる - LayerX エンジニアブログ 15
  6. ⾏レベル制御 Row Access Policy • • • • SnowflakeのTableやViewに設定できる Data

    Protection Policy 実⾏コンテクストに対する条件で、⾏の閲覧可否を定義する 条件を満たさない⾏は結果に出⼒されない 例: 特定テナントの⾏は、業務上必要な⼈以外に⾒せない © LayerX Inc. 出典: Understanding row access policies | Snowflake Documentation 17
  7. ⾏レベル制御 dbt-snowflake-rap-enforcement • • • • civitaspo/dbt-snowflake-rap-enforcement dbt 上の row_access_policy

    定義と、 Snowflake 上の付与実態の drift をなくし、 定義に収束させる 参照される側の model に、 meta.row_access_policy_enforcement で下 流への Row Access Policy 強制条件を定義 下流モデルがマッチしなければ実⾏エラー ◦ デフォルトは inherit(上流と同じポリ シーを要求) © LayerX Inc. 出典: SnowflakeのRow Access Policyをdbtで漏れなく適⽤する - LayerX エンジニアブログ 18
  8. 列レベル制御 Masking Policy • • • SnowflakeのTableやViewに設定できる Data Protection Policy

    実⾏コンテクストに対する条件や該当⾏の他の列の値などを使⽤して、列の出⼒値を定義する 条件を満たさない列の出⼒値は、定義に応じて変化する © LayerX Inc. 出典: Understanding Dynamic Data Masking | Snowflake Documentation 20
  9. 列レベル制御 Tag-based Masking Policies • • • Masking Policy は原則、Tag-based

    Masking Policies として使⽤ ◦ 同じマスキングロジックを、複数列‧ 複数データモデルで再利⽤できる Tag に Masking Policy を associate し、列へ Tag を付けると⾃動適⽤ ◦ 適⽤されるのは、シグネチャの型が⼀ 致する列 列への Tag apply は infinitelambda/dbt-tags を使⽤ © LayerX Inc. 出典: Tag-based masking policies | Snowflake Documentation 21
  10. 列レベル制御 下流データモデルに対するTagの⾃動伝搬 • • PROPAGATE で、ソースに付けた Tag をターゲッ トへ⾃動で付ける ◦

    ON_DEPENDENCY ◦ ON_DATA_MOVEMENT ◦ ON_DEPENDENCY_AND_DATA_MOVEMENT 複数ソースから同じ Tag が違う値で来たときの Tag は ON_CONFLICT で定義 ◦ 未設定の値は CONFLICT ◦ 任意の⽂字列、または ALLOWED_VALUES_SEQUENCE (ALLOWED_VALUES の先頭から採⽤) © LayerX Inc. 出典: Automatic tag propagation with user-defined tags | Snowflake Documentation 22
  11. 列レベル制御 補⾜: Tag-based Data Protection Policies(Public Preview) • • 2026-07-21

    に Masking Policy 以外も Tag に associate できるようになった(Public Preview) ◦ Tag-based row access policies | Snowflake Documentation ◦ Tag-based aggregation policies | Snowflake Documentation ◦ Tag-based projection policies | Snowflake Documentation ◦ Tag-based join policies | Snowflake Documentation すべて Tag-based で管理できると、付与⼿段をポリシー種別で分けなくてよくなるので期待 © LayerX Inc. 出典: July 21, 2026: Tag-based data protection policies (*Public Preview*) | Snowflake Documentation 23
  12. 補⾜: 実⾏コンテクストの特定 CURRENT_AVAILABLE_ROLES() • • • 「GRANT 済みだが現在有効ではないロール」も含めて検出できる SECONDARY ROLE

    を無効化して運⽤している環境で、ロールを user attribute のように使える IS_ROLE_IN_SESSION() は有効化中の階層に含まれているかどうかを⾒るのに対し、 CURRENT_AVAILABLE_ROLES() は GRANT 済みロール全体を⾒る © LayerX Inc. 出典: CURRENT_AVAILABLE_ROLES | Snowflake Documentation 26
  13. 公開経路制御 Secure Data Sharing • • • 別アカウントへ公開するときは Snowflake の

    SHARE を使う 共有対象への権限はデータベースロールに付 与し、Consumer 側ではそのデータベース ロールをアカウントロールに GRANT する SHARE では Future Grants が使えないため、 post_hook で対象テーブルへの GRANT を発 ⾏する © LayerX Inc. 出典: About Secure Data Sharing | Snowflake Documentation 28
  14. 公開経路制御 同⼀アカウントの公開では Secure Data Sharing を使わない • • • •

    同⼀アカウント内の公開経路では SHARE を使わない 公開オブジェクトは Secure View、View、Tableを使う Secure View は定義を秘匿できる⼀⽅、実⾏時の最適化が制限される 定義を秘匿する必要がなければ、パフォーマンスを優先して、通常の View を使うべし © LayerX Inc. 出典: Working with Secure Views | Snowflake Documentation 29
  15. まとめ dbt と Snowflake を使い、多層的にデータを統制する dbt の静的解析やCI、および、Snowflakeのデータ保護機能を組み合わせ、開発から公開までの多層的な統制を⾃動強制 LAYER 01 LAYER

    02 LAYER 03 LAYER 04 モデル依存関係 ⾏レベル制御 列レベル制御 公開経路制御 強制タイミング 強制タイミング 強制タイミング 強制タイミング データ作成時 (CI時) クエリ実⾏時 クエリ実⾏時 データ設計時 仕組み 仕組み 仕組み 仕組み dbt-authorized-models Row Access Policy Masking Policy Secure Data Sharing ビルド前にモデルの依存関係を CIで⾃動検査。不正な依存構造 を持つモデルの作成を未然に防 ⽌します。 Snowflakeがクエリ時に⾏を⾃ 動判別。ユーザーロールに応じ た閲覧可能レコードの⾃動絞り 込みを動的に実施します。 クエリ実⾏時に列単位でのマス ク表⽰を動的に実⾏。権限が不 ⾜するユーザーに対し、重要情 報を隠蔽します。 制限領域から許可データのみを 抽出‧公開する、安全な経路を 設計。未許可データが内部公開 の経路へ流出するのを遮断しま す。 © LayerX Inc. 31