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

Snowflake x dbtで作るセキュアでアジャイルなデータ基盤

tsoshiro
October 30, 2024

Snowflake x dbtで作るセキュアでアジャイルなデータ基盤

DataOps Night #5 セキュリティとアジリティを両立するためのプラクティスの発表資料です。
https://finatext.connpass.com/event/333016/

tsoshiro

October 30, 2024
Tweet

Other Decks in Programming

Transcript

  1. © 2015 - 2024 Nowcast Inc. Snowflake x dbtで作る セキュアでアジャイルなデータ基盤

    2024/10/30 DataOps Night #5 株式会社ナウキャスト 大城 翼 1 CONFIDENTIAL
  2. © 2015 - 2024 Nowcast Inc. 2 0. 今日お話すること 主なトピック

    • AWS PrivateLink • Snowflake Secure Data Sharing Snowflake x dbtを中心としたデータ基盤で、通信をプライベートネットワーク 内で完結させつつ、効率良く開発を進めるための構成事例を紹介します!
  3. © 2015 - 2024 Nowcast Inc. 3 0. 今日お話すること 1.

    自己紹介・会社紹介 2. ナウキャストの共通データ基盤 3. 課題:満たすべきセキュリティ要件 4. アーキテクチャ 5. 今後の課題・まとめ アジェンダ
  4. © 2015 - 2024 Nowcast Inc. 4 1. 自己紹介・会社紹介 •

    株式会社ナウキャスト データエンジニア • 沖縄からフルリモート • ゲームプログラマー→ゲームディレクター→データエンジニア • ナウキャストでは、POSデータ、クレジットカードデータなどのパイプライ ン開発・運用や顧客のデータ基盤構築支援を担当。 • 男児2人(小1、年長)の子育てに日々奮闘しています。子育て何も分からない • 漫画好き。JUMP+の「ダンダダン」「ふつうの軽音部」を楽しみに一週間を 乗り切っています 大城 翼 ( Tsubasa Oshiro / @tsoshiro )
  5. © 2015 - 2024 Nowcast Inc. 5 ナウキャストはオルタナティブデータを活用した事業を展開する 東大発のスタートアップ企業 オルタナティブデータとは、元々は金融領域の用語で、

    伝統的に使われてきた財務情報や経済統計のようなデー タ(Traditional Data)に対して、これまで利活用の進ん でこなかったビッグデータのことを指します。 データ利活用が活発なアメリカでは、様々な種類のオル タナティブデータがサービスとして実際に提供されてい ます。 参考) オルタナティブデータとは 1. 自己紹介・会社紹介
  6. © 2015 - 2024 Nowcast Inc. 8 2. ナウキャストの共通データ基盤 •

    2年ほど前にSnowflake中心のデータ基盤に移行を決め、 開発を進めてきた ◦ Snowflake×dbt×Terraformでモダンなデータ基盤開発してみた | by Kevinrobot34 | The Finatext Tech Blog • 新たな基盤でのパイプライン構築事例も増えてきた ◦ Amazon AuroraとSnowflakeをDynamic Tableを用いてリアルタイ ム連携したお話 - The Finatext Tech Blog ◦ Streamlit Bootcamp #1 ◦ Snowflake x dbt x Terraform マルチデータプロダクト基盤 [DataOps Night #4] - Speaker Deck • 今日は私が所属するチームが取り組んでいるパイプライ ン構築事例を紹介します Snowflake x dbt x Terraformのマルチデータプロダクト基盤
  7. © 2015 - 2024 Nowcast Inc. 9 とあるデータパイプラインの要件 【データホルダー側の要件】 •

    個人情報を含む一部のデータは、分離されたセキュアな環境内でのみ取り扱うこと。 • 通信がパブリック回線に出たらNG 【ナウキャスト側の要件】 • セキュアな環境を担保しつつも、開発効率はなるべく落としたくない。 • 個人情報を含まないデータについては、社内で幅広く使いたいし、顧客提供もスムーズに行いたい。 • これらの要件を、共通データ基盤であるSnowflake x dbtで構築したい。 3. 課題:満たすべきセキュリティ要件
  8. © 2015 - 2024 Nowcast Inc. 環境は大きく4種類 • Snowflake (on

    AWS) : secure / general • AWS : secure / general ポイント • aws_secureからのみ、snowflake_secureにアク セスできる。PrivateLinkで実現 • snowflake_secureからsnowflake_generalに、個 人情報を除いたデータを共有。Secure Data Sharingで実現 10 4. アーキテクチャ
  9. © 2015 - 2024 Nowcast Inc. 11 4. アーキテクチャ PrivateLink

    - 概要 • AWSが提供するサービス • VPCとAWSサービス間の接続をプライベートに ◦ 公共のインターネットに露出しない、セキュアな通信を実現 • Snowflake on AWSは、Business Critical Edition以上でPrivateLinkをサポート
  10. © 2015 - 2024 Nowcast Inc. 12 4. アーキテクチャ PrivateLink

    - 弊社での事例 個人情報を含む通信は、snowflake_secureと aws_secure間でPrivateLinkによってのみ行う 開発時 • EC2 : 開発中のdbt build実行、UDFデプロイ • Workspaces : Snowsight(WebUI)でNotebookやSQL Worksheetを用いたEDA 運用時 • S3 : Snowflakeの外部テーブルのソースとして参照 • dbt on ECS : dbt buildの定期実行
  11. © 2015 - 2024 Nowcast Inc. 13 4. アーキテクチャ Secure

    Data Sharing - 概要 • 異なるSnowflakeアカウント間でデータを共有 する仕組み • データの実体はデータ提供側にあり、データ利 用側は参照するのみ ◦ データをコピーする必要がないので、追加 のストレージコストやパイプライン開発が 不要 ◦ →データの受け渡しが圧倒的に楽になる • 同一クラウド、かつ同一リージョンであること が条件 https://docs.snowflake.com/en/user-guide/data-sharing-intro より
  12. © 2015 - 2024 Nowcast Inc. 14 4. アーキテクチャ Secure

    Data Sharing - もう少し詳しく • Share ◦ データベース共有に必要な情報をまとめた、 Snowflakeの名前付きオブジェクト ◦ 一つのShareで共有できるデータベースは一つ だけ。共有するオブジェクトはデータベース内 にないとダメ • Provider(データ提供者)は、Shareを作成し、権限 を付与し、任意のSnowflakeアカウントに共有する • Consumer(データ利用者)は、共有されたShareに 付与された権限の範囲で、データの参照ができる https://docs.snowflake.com/ja/user-guide/security-access-control-overview より
  13. © 2015 - 2024 Nowcast Inc. snowflake_general snowflake_secure 15 4.

    アーキテクチャ Secure Data Sharing - 弊社での事例 DB_A SC_A SALES テーブル セキュアビュー ビュー SC_B STORES S_SALES S_STORES SHARE_TO_G ENERAL TO_SHARE EXPORT DB_A SC_A SALES SC_B STORES S_SALES S_STORES SHARE_TO_G ENERAL TO_SHARE EXPORT ① 個人情報を除いたテーブルを作成 ② 共有用DBに①を参照するセキュアビューを作成 ③ ②への権限を付与したShareを作成し、 snowflake_generalに付与 ④ snowflake_generalからTO_SHAREを参照できる ⑤ セキュアビューを参照するビューを作成 このビューを参照して後続の分析や パイプライン開発を行う ① ② ③ ④ ⑤
  14. © 2015 - 2024 Nowcast Inc. snowflake_general snowflake_secure 16 4.

    アーキテクチャ Secure Data Sharing - 弊社での事例 DB_A SC_A SALES テーブル セキュアビュー ビュー SC_B STORES S_SALES S_STORES SHARE_TO_G ENERAL TO_SHARE EXPORT DB_A SC_A SALES SC_B STORES S_SALES S_STORES SHARE_TO_G ENERAL TO_SHARE EXPORT • 複数のデータベース/スキーマのテーブルを、一 つのデータベースにセキュアビューで集約し、 一つのShareで共有 • 他のチームからはDB_Aのみ見えるようになって おり、Shareを意識しないで使えるようにしてい る。
  15. © 2015 - 2024 Nowcast Inc. 17 4. アーキテクチャ Secure

    Data Sharing - 弊社での事例のポイント Shareへの直接権限付与 vs データベースロールを付与 • 1) 直接権限を付与 ◦ 他のデータベースを参照するビューなどを共有(REFERANCE_USAGE)できる ◦ Consumer側では付与された権限がすべて使える(IMPORT PRIVILEGES)のみで、細かい権限管理 はできない • 2) データベースロールを付与 ◦ Consumer側で、データベースロールの付与先を管理できる ◦ 他のデータベースを参照するビューなどは共有できない 複数データベースのテーブルを参照するビューがあるため、データベースをまたいだ参照は必須。そのため 方式1を採用。 ちなみにどちらの場合も、具体的なオブジェクト名(セキュアビューなど)を都度指定する必要がある( future でのGRANTはできない)→ Terraformで共有対象となるオブジェクトを管理 詳しくはこちら : Snowflake Share 徹底解説
  16. © 2015 - 2024 Nowcast Inc. 18 Shareにより、自チームと他チームの責任境界を明確にできた 自チームの責務 :

    • データホルダーからデータを受け取る • 分析・加工がしやすい形に整える • 個人情報に該当する項目を取り除く • Shareのテーブルを更新する • これらをセキュリティ要件を満たしながら開発・運用する 他のチームは、共有されたデータで、分析やパイプライン開発を 私達のチームに依存することなく自由に行うことができる →セキュアかつアジャイルなデータパイプライン開発基盤 4. アーキテクチャ Secure Data Sharing - 弊社での事例のポイント
  17. © 2015 - 2024 Nowcast Inc. • snowflake_generalではGitHub ActionsによるCI/CDが整備・ 自動化されている。

    ◦ CI : linter/formatter/構文チェックなど ◦ CD : UDF・プロシージャ作成、コンテナデプロイなど • 一方で、snowflake_secureではGitHub Actionsのネットワー クからはSnowflakeにアクセスすることができない。そのた め、CIと一部のデプロイはEC2から行っている。これを解 決したい。 • 解決のアプローチ : ◦ データが出なければいいので、CI/CDの処理にデータ参 照の必要と権限がないことを担保しアクセス許可する ◦ GitHub ActionsからECSをキックし、ECS上でCI/CDを 回す など 19 5. 今後の課題・まとめ 今後の課題 : CI/CDの充実
  18. © 2015 - 2024 Nowcast Inc. • AWS PrivateLinkでセキュアな環境でSnowflakeを使うことができます •

    Secure Data Sharingでクロスアカウントでのデータ共有をスムーズに実現できます • セキュリティ要件を満たすべき環境とそうでない環境で責務を分離し、セキュアか つアジャイルなデータパイプライン開発基盤を構築しています 20 5. 今後の課題・まとめ まとめ
  19. © 2015 - 2024 Nowcast Inc. • 今日お話したようなことを日々ワイワイ議論しながら、データ基盤を作ってます。 • やりたいことに対して、データエンジニアが全然足りてません。

    • 「面白そう!」と思った方はぜひナウキャストへ! • 会社紹介 ◦ 「ナウキャスト SpeakerDeck」で検索してみてください • 募集中のポジション ◦ 「ナウキャスト Herp」で検索してみてください • Xで気軽にお声がけください! ◦ → @tsoshiro / @Kevinrobot34 / @mt_musyu 21 最後に We are hiring!