❄️

Snowflakeのデータアプリケーションセキュリティ #1 デプロイメントと分離パターン

2023/11/12に公開

データエンジニアの是枝です。
皆さん、snowflakeで何をしていますか?社内のデータを一箇所に統合するためのDWHとして利用する場合が多いと思います。一方で自社アプリケーションの機能の一部として組み込むユースーケースを実践している企業はそこまでない印象です。国内ではb→dashさんの「データパレット」や、ノバセル株式会社運用型テレビCMサービス「ノバセル」が有名です。
https://enterprisezine.jp/article/detail/15283?p=2
https://novasell.com/?utm_source=google&utm_medium=cpc&utm_campaign=brandonly&utm_term=000003&utm_source=google&utm_medium=cpc&utm_term=000003&utm_campaign=brandonly&gad=1&gclid=CjwKCAiA6byqBhAWEiwAnGCA4PlSyeS1Tey-ULHtgbsuQFvILzUFuNg0sbiGL8ySK0Pd4zwmwKj1TRoCqpEQAvD_BwE

Data Drivers Awards は、Snowflake Japan 社が主催するデータ活用の先駆者を表彰する賞です。その中にある「Powered By Snowflake」部門は、Snowflakeを利用して最も革新的なデータドリブンアプリケーションを開発している企業を表彰するものデータクラウド分野でトップクラスのアワードとして知られています。
https://www.snowflake.com/ja/data-cloud/powered-by-snowflake/
Data Drivers Awards の中にPowered By Snowflake部門を用意することからsnowflake社にとっては、社内利用のDWHのみならず、自社アプリケーションの価値をsnowflakeで底上げしてほしいという願いが感じられます。

そこで、snowflakeをアプリに組み込むには?というテーマで連載記事を書こうと思います。以下の動画を参考にchatGPTの力を借りながら「データアプリケーションセキュリティ」に関して執筆していきます。Snowflakeにはネイティブアプリ、接続アプリ、管理アプリなど多くの種類のアプリがあります。この記事では、これらのアプリに関する詳細を説明し、セキュリティに関連するベストプラクティスについても触れます。

Security Best Practices For Building Data Applications With Snowflake

https://www.youtube.com/watch?v=jhWa7ANML5U

第1章: デプロイメントと分離パターン

Snowflakeのデプロイパターン

Snowflakeのデプロイパターンには以下の主要な3つがあります。

1. マネージドアプリ(Managed App)

  • マネージドアプリとは、ソフトウェアサービスアプリケーションの一種であり、ユーザーはアプリケーションに接続するだけで、裏でSnowflakeが実行されていることを気にする必要はありません。
  • アプリケーションプロバイダーは、アプリケーションを構築し、その背後にあるSnowflakeアカウントを所有および管理します。
  • ユーザーはSnowflakeアカウントに接続でき、アプリケーションを実行することができます。

2. ネイティブアプリ(Native App)

  • ネイティブアプリは、Snowflakeのプライベートプレビューからパブリックプレビューに移行した展開パターンです。
  • このパターンでは、アプリケーションの実行およびオーケストレーションがSnowflakeエコシステム内で行われます。
  • アプリプロバイダーはアプリを作成し、Snowflake Marketplaceまたは直接共有を通じて提供します。
  • ユーザーはこのアプリを取得し、自分の環境で実行できます。

3. アカウントごとのテナント(Account per Tenant)

  • この展開パターンでは、各テナントは独自のデータベースと関連オブジェクトを持ち、データはデータベースレベルで分離されます。
  • ロールベースのアクセス制御(RBAC)がテナント間の分離を提供し、各テナントは独自のウェアハウスを持ちます。
  • さらに、ネットワーク分離もこのレベルで提供され、ユーザーは暗号化キーを持ち込むこともできます。

Snowflakeの分離パターン

Snowflakeの分離パターンには以下の主要な3つがあります。

1. マルチテナントテーブル(Multi-Tenant Tables)

  • このパターンでは、アプリコンシューマーまたはテナントが同じテーブルを共有します。
  • Snowflakeはビュー、UDF、行アクセスポリシー、列レベルのセキュリティなどを使用してテナント間の分離を提供します。
  • 複数のテナント間で計算リソースを共有することもできます。

2. オブジェクトごとのテナント(Object per Tenant)

  • このパターンでは、各テナントが独自のデータベースと関連オブジェクトを持ち、データはデータベースレベルで分離されます。
  • RBACがテナント間の分離を提供し、各テナントは独自のウェアハウスを持ちます。
  • ネットワーク分離も提供され、テナントごとに独自のアカウントが存在します。

3. アカウントごとのテナント(Account per Tenant)

  • このパターンでは、各テナントが1つ以上のアカウントを所有し、テナントごとにアカウントが分離されます。
  • このレベルでもネットワーク分離が提供され、ユーザーは暗号化キーを持ち込むことができます。

選択肢とベストプラクティス

どの展開パターンと分離パターンを選択するかは、ユースケースやビジネスケースに依存しますが、いくつかのベストプラクティスがあります。

  • データの選択と保存
    • テーブルやビューなどのセキュアなオブジェクトを選択し、アクセスポリシーやセキュリティを適切に設定します。
  • ロールベースのアクセス制御(RBAC)
    • 最小限の特権を持つユーザーエンティティを定義し、環境への最小限の特権を与えます。
  • アイデンティティとアクセス管理
    • ユーザーの認証と承認方法を定義し、アカウントのセキュリティを強化します。
  • ネットワークセキュリティ
    • テナント間の分離やパブリックアク

セスのブロックなど、ネットワークセキュリティを適切に設定します。


出典:https://www.youtube.com/watch?v=jhWa7ANML5U

第1章のまとめ

Snowflakeは、異なる展開パターンと分離パターンを提供し、ユーザーはビジネスケースに合わせて選択できます。ただし、セキュリティに対する注意が必要であり、ベストプラクティスを遵守することが重要です。展開パターンと分離パターンを選択する際には、ビジネスケースとセキュリティ要件を検討し、最適な選択肢を見つけましょう。 Snowflakeのセキュリティは、データ保護とアクセス制御において堅固な防御を提供します。

GitHubで編集を提案

Discussion