Share
Embed
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/
civitaspo
September 10, 2026
Transcript
31 slides
-
dbt Core と Snowflake で実現する 多層的なデータガバナンス 2026/09/10 Snowflake World Tour
Tokyo 2026 @civitaspo © LayerX Inc. -
⾃⼰紹介 civitaspo (キビタスポ/ きびちゃん) バクラク事業部 BizOps部 データグループ マネージャー Links 𝕏
civitaspo civitaspo.com civitaspo 画像を⼊れてね その他 Snowflake Data Superhero 2026 Snowflake九州ユーザー会 主宰 Sigma User Community Japan 運営 © LayerX Inc. 3 -
今⽇のトピック データ基盤が成熟するにつれ、データ基盤への統制要求も多様化 様々な 利⽤部⾨! 増え続ける プロダクト! ⼤量の AI Agent! 様々な
参照ツール! 様々な データソース! ⼤量の データモデル! 法対応! 監査対応! © LayerX Inc. 5 -
今⽇のトピック 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 -
Agenda ⽬次 • ✅ ⾃⼰紹介 / 会社紹介 • ✅ 今⽇のトピック
• なぜ dbt を使うのか • モデル依存関係の統制 • ⾏レベル制御 • 列レベル制御 • 補⾜: 実⾏コンテクストの特定 • 公開経路制御 • まとめ -
なぜ dbt を使うのか 「データオーナーが統制責任を持つべし」というデザイン • • • そのデータの性質やリスクを⼀番理解しているのは「データオーナー」 そのため、そのデータが「正しく利⽤されているか」「利⽤されるにあたってリスクはないか」の 判断はデータオーナーが⾏うべし
データの新規利⽤にあたっては、データオーナーとのコミュニケーションを発⽣させるべし © LayerX Inc. 10 -
なぜ dbt を使うのか 厳密な統制には、Data Lineage全体に対する統制⼿段が必要 • • • データは、データオーナーの意図に反する⽤途でも参照されうる(便利なデータは特に) ⼈間の認知能⼒で、そのすべてを把握するのは不可能
下流の参照箇所を網羅的に、機械的に統制可能な⼿段を、基盤として提供する必要がある © LayerX Inc. 11 -
なぜ dbt を使うのか Snowflake への書込経路を dbt に統⼀し、統制⼿段を補完/拡張 • • Snowflake
の機能のみで、Policy の適⽤範 囲を継続的に把握/適⽤し続けるのは難しい 弊社では、書込経路を dbt に統⼀し、 GitHubと組み合わせ、統制⼿段を補完/拡張 dbt は拡張性が⾮常に⾼く、 柔軟に統制⼿段を提供可能に © LayerX Inc. 12 -
モデル依存関係の統制 Snowflakeは参照関係を強制する機能を持たない • • • • Snowflakeのアクセスコントロールの原則はDAC/RBAC/UBAC そのため、権限主体が該当データに対して参照権限を持っていれば、別のデータモデルを作るため に該当データを参照することができる データオーナーが統制責任を持つなら、参照権限があってもその参照をRejectする⼿段が必要
Snowflakeの機能だけで実現するのは困難なので dbt を使って解決 © LayerX Inc. 出典: Overview of Access Control | Snowflake Documentation 14 -
モデル依存関係の統制 dbt-authorized-models • • • • civitaspo/dbt-authorized-models 参照される側の model/source に、
meta.authorize で参照許可条件を定義 参照元がマッチしなければ警告またはコンパ イルエラー ◦ 定義が無い参照先への参照は拒否する (deny-by-default) 参照許可条件の変更は、GitHub の CODEOWNERS でデータオーナーのレビュー を必須に © LayerX Inc. 出典: Snowflakeとdbtでモデルの依存関係にガバナンスを効かせる - LayerX エンジニアブログ 15 -
⾏レベル制御 Row Access Policy • • • • SnowflakeのTableやViewに設定できる Data
Protection Policy 実⾏コンテクストに対する条件で、⾏の閲覧可否を定義する 条件を満たさない⾏は結果に出⼒されない 例: 特定テナントの⾏は、業務上必要な⼈以外に⾒せない © LayerX Inc. 出典: Understanding row access policies | Snowflake Documentation 17 -
⾏レベル制御 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 -
列レベル制御 Masking Policy • • • SnowflakeのTableやViewに設定できる Data Protection Policy
実⾏コンテクストに対する条件や該当⾏の他の列の値などを使⽤して、列の出⼒値を定義する 条件を満たさない列の出⼒値は、定義に応じて変化する © LayerX Inc. 出典: Understanding Dynamic Data Masking | Snowflake Documentation 20 -
列レベル制御 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 -
列レベル制御 下流データモデルに対する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 -
列レベル制御 補⾜: 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 -
補⾜: 実⾏コンテクストの特定 Agent Identity SYS_CONTEXT('SNOWFLAKE$CURRENT', ...) で実⾏コンテクスト内の agent property を参照できる
© LayerX Inc. 出典: SYS_CONTEXT | Snowflake Documentation 25 -
補⾜: 実⾏コンテクストの特定 CURRENT_AVAILABLE_ROLES() • • • 「GRANT 済みだが現在有効ではないロール」も含めて検出できる SECONDARY ROLE
を無効化して運⽤している環境で、ロールを user attribute のように使える IS_ROLE_IN_SESSION() は有効化中の階層に含まれているかどうかを⾒るのに対し、 CURRENT_AVAILABLE_ROLES() は GRANT 済みロール全体を⾒る © LayerX Inc. 出典: CURRENT_AVAILABLE_ROLES | Snowflake Documentation 26 -
公開経路制御 Secure Data Sharing • • • 別アカウントへ公開するときは Snowflake の
SHARE を使う 共有対象への権限はデータベースロールに付 与し、Consumer 側ではそのデータベース ロールをアカウントロールに GRANT する SHARE では Future Grants が使えないため、 post_hook で対象テーブルへの GRANT を発 ⾏する © LayerX Inc. 出典: About Secure Data Sharing | Snowflake Documentation 28 -
公開経路制御 同⼀アカウントの公開では Secure Data Sharing を使わない • • • •
同⼀アカウント内の公開経路では SHARE を使わない 公開オブジェクトは Secure View、View、Tableを使う Secure View は定義を秘匿できる⼀⽅、実⾏時の最適化が制限される 定義を秘匿する必要がなければ、パフォーマンスを優先して、通常の View を使うべし © LayerX Inc. 出典: Working with Secure Views | Snowflake Documentation 29 -
まとめ 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