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

Snowflake DCR

fkd
August 29, 2023

Snowflake DCR

Snowflake DCR(Data Clean Room)の紹介

fkd

August 29, 2023
Tweet

More Decks by fkd

Other Decks in Technology

Transcript

  1. 自己紹介 š 名前 : 福田陽一 š 会社 : KDDIアジャイル開発センター株式会社 (KAG)

    š 役職 : Infrastructure Engineer / Application Engineer š プロフィール š 2023年4月 KAG入社。 š 前職、前々職からKDDI関係の業務で関わりがあった。 š 現在はData Clean Roomの開発に従事。
  2. SnowflakeのDCR (Data Clean Room) データクリーンルーム データシェアリング | セキュアに結合 | クエリ制限

    パーティ A Bにはデータを 公開しない形で 分析したい パーティ B Aにはデータを 公開しない形で 分析したい 共有データ š 簡単に大量データをセキュアに共有 š 共有されたデータはストレージを消費しない š 安心・安全な環境で分析できる データを提供するパーティ = プロバイダー データを提供してもらうパーティ = コンシューマー
  3. SnowflakeのDCR (サンプル) š Quick Startで紹介されている š Build A Data Clean

    Room in Snowflake – Advanced š https://quickstarts.snowflake.com/guide/build_a_data_clean_room_in_snowflake_advanced/ š Github (v5.5) š https://github.com/Snowflake-Labs/sfquickstart-data-clean-room š 簡単に作成できる š DCR SETUP ASSISTANT š https://snowflake-labs-sfquickstart-data-cle-dcr-setup-assistant-bkx7gg.streamlit.app/ š DCRに必要なオブジェクトを作成するためのsqlを生成してくれる
  4. DCR (サンプル) の作成〜実行まで š Snowflakeアカウント(Enterprise以上)を2つ準備 š 同じクラウドサービス・同じリージョンのアカウント š 事前にAnacondaの規約に同意 š

    Quick Startの2、3 を実施する š DCR SETUP ASSISTANTを使ってスクリプト(sql)を生成 š sqlをSnowflake上で実行 š Quick Startの5 を実施する š デモ (サンプルシナリオ)を実行
  5. 特徴 š Snowflakeの機能だけでDCRを実現できる š ユーザ定義関数(UDF) (Python, Jinja) š クエリテンプレートからクエリを生成 š

    ストアドプロシージャ(JavaScript) š クエリの許可を依頼、依頼を受けてクエリを検証〜許可判定 š Stream / Task š クエリの許可依頼を検出、クエリの検証〜許可プロセスの実行 š 共有(Direct Share) š パーティ間でオブジェクトをシェア š 行アクセスポリシー š 許可済みクエリの判定
  6. クエリテンプレート〜クエリの承認 š あらかじめパーティ間で協議して実行してもいいクエリを決める š 実行してもいいクエリをテンプレート化する š カラム、テーブルの組み合わせ š 結合やグループ化の条件、統計化の強制 š

    クエリテンプレートをDCRに登録する (プロバイダー) š クエリテンプレートの範疇で実行したいクエリを作成し、 クエリの許可を求める (コンシューマー → プロバイダー) š 許可された後は、そのクエリを実行できる様になる (コンシューマー) プロバイダー コンシューマー
  7. 共有 š プロバイダー、コンシューマー間でシェアする š 分析データ š 他パーティに共有してもよいデータ š 掛け合わせたいデータ š

    プロバイダーからコンシューマーにシェアする š DCRの機能を実現するためのデータ š クエリテンプレート、リクエストログ等 š プロバイダー、コンシューマーの双方向でシェアする プロバイダー コンシューマー プロバイダー
  8. 行アクセスポリシー š 本来は… š クエリ結果で返す行を決定する š 見せたくないデータは除外されて結果が返る š DCRでは… š

    実行されたクエリが許可されているかどうかを判定する š 実行したクエリが許可されたクエリである場合のみ結果が返る š ポイント š クエリテキストが完全一致した場合のみ結果が返る š 許可されていないクエリが実行されると何も結果が返らない コンシューマー コンシューマー プロバイダー
  9. より安心・安全なDCRに向けた工夫の例 š 細かいロール設計 š 各パーティ内で登場人物と役割を細かく定義 š 人が使うロール、システムが使うロールを分けて定義 š 自パーティに対しても行アクセスポリシーでクエリを制限 š

    自社所有のデータであっても、好き勝手にデータを見れない様に制御 š ACCOUNTADMINの利用制限 š デフォルトではACCOUNTADMINは誰も利用できない状態 š 一時的に上位ロールの使用を許可するストアドプロシージャを作成 š 参考 : https://medium.com/snowflake/managing-elevated-access-in-snowflake-just-enough-just-in-time-418fcdad7929 š 権限が利用できる時間を指定、自分で自分に対して権限付与ができない様に制御 š ロギング š SnowflakeデータベースにあるACCOUNT_USAGEのバックアップを作成して永続化を実現 š Taskで定期的にコピー、規定の保存期間が終了したら削除