❄️

Streamlit in Snowflakeを使用する6つのセキュリティ的メリット

2024/03/22に公開

SnowflakeでSecurity Field CTO Officeに所属しているMasayaです

今回は2023年12月にSnowflake on AWS、2024年1月にSnowflake on AzureでGAとなったStreamlit in Snowflakeがセキュリティ面においてもユーザにとってメリットがあるのかを紹介していきます。
https://docs.snowflake.com/en/release-notes/2023/other/2023-12-01
https://docs.snowflake.com/en/release-notes/2024/other/2024-01-25

Streamlitとは?

Streamlit は、機械学習やデータサイエンスのためのWebアプリケーションをPythonコードだけで簡単に作成・共有することができるオープンソースのPythonライブラリです。
HTML、CSS、JavascriptなどのWebアプリケーション開発に必要な知識がなくても簡単にPythonだけでWebアプリケーションを構築することができます

Streamlit in Snowflakeとは?

Streamlit in Snowflakeは、Snowflakeのデータクラウド上でStreamlitアプリを安全に構築、展開、共有することができるSnowflakeの機能の1つです
Streamlit in Snowflakeを使用することで以下のような様々なメリットを享受することができます

セキュリティ観点から見たStreamlit in Snowflakeを使用する6つのメリット

Streamlitをどこかのサーバに展開し、StreamlitからSnowflakeに対してクエリを投げることもできますが、Streamlit in Snowflakeを使用することで以下のメリットが享受できます

1.可用性が向上

セキュリティ観点で見た場合、どこかのサーバにStreamlitを稼働させることと比較して、サービスの可用性が飛躍的に向上します。

理由としては、SnowflakeはSaaSサービスであり、SaaSが稼働しているハードウェア・ミドルウェア・ソフトウェアはすべてSnowflakeがユーザに代わって管理しています。

またプラットフォームはクラウドプロバイダの複数のAvailability Zoneを束ねて1つのプラットフォームとして構築し、高い可用性も標準サービスとして提供しているためです。

そのため、Snowflakeを利用するだけでユーザは自動的に高い可用性も得られるようになります。

Streamlit in Snowflakeも同様にSnowflakeプラットフォーム上で稼働しますので、ハードウェア故障やサーバの死活監視などの本来の業務ではない運用作業に関する作業負荷をSnowflakeにオフロードしつつ、高い可用性を持ったStreamlit環境として利用することができます。

2.SSOなどのSnowflakeセキュリティ機能が利用できる

可用性だけではなく、Streamlit in Snowflakeを利用することで、Streamlit自体のセキュリティ面での強化が見込めます

Snowflakeはユーザ情報を保護するためにユーザ認証、ネットワーク制御、権限管理、データ暗号など組み込み機能として様々なセキュリティ機能を標準提供しています

これらをStreamlit in Snowflakeを利用する際は、Snowflakeで設定されている認証やアクセス制御などのセキュリティレイヤを通過する必要があるため、これらのセキュリティ設定を透過的にStreamlitアプリケーションにも適用させることができます。

例えばStreamlitを利用するユーザの通信元IPアドレスを制御したり、ユーザ認証を簡単にSAML認証に変更したり、組み込みのSnowflake暗号関数を利用したりすることができます。

そのため通常のStreamlitと比較してStreamlit in Snowflakeを利用することで、Streamlitの柔軟性とSnowflakeのセキュリティ機能を組み合わせたセキュリティの高いStreamlitアプリケーションを手軽に構築運用することができます

3.死活監視・パッチなどの運用負荷軽減

前述したようにSnowflakeはSaaSであり、ハードウェア、ミドルウェアはSnowflakeがユーザに代わって管理しています。

死活監視・パッチ適用作業などもSnowflakeがユーザに代わって実施するため、ユーザはセキュリティパッチ適用におけるスケジュール管理・深夜作業などの本来業務に関係のない運用作業を軽減することができます。

OSのディスコンや非サポートによるOSアップデートやミドルウェアのアップデートやマイグレーションはアプリケーション稼働保証の観点からも非常に労力がかかる作業となり、事前情報調査やプロジェクト立ち上げ、スケジュール管理、事前導入テスト・本番移行作業など一大プロジェクトになりがちです(依存関係やエンドテストなどなど細かい作業を入れれば膨大な作業量になると思います)

しかしこれらの作業を行なったからといって分析作業が進捗するわけでもなく、むしろ労力と予算が削られるだけのプロジェクトになりがちです

Snowflakeの場合、これらの作業はすべてSnowflakeが対応、Streamlitの稼働自体もSnowflakeが担保するため、本業務に必要のないこれらの一大プロジェクトの重労働から解放されるのも一つのメリットです。

パッチやソフトウェアアップデートを放置したことによるセキュリティリスクを軽減することもできます

4.最新暗号通信が常に利用できる

Snowflakeとユーザが使用するクライアント(Streamlit in Snowflakeの場合はブラウザ)との通信はすべて暗号化通信で使用してトラフィックの安全を確保しています。

Streamlit単体でSSL通信を有効化したい場合、NginxのようなSSLに対応したReverse Proxyの導入や「Let' Encrypt」のようなSSL証明書を発行してくれる仕組みをユーザ側で組み合わせて管理構築する必要があります。

特にNginxなどの追加ネットワークサーバの導入は前述したパッチや死活監視・可用性も考慮する必要もあるため、管理ポイントと運用負荷が上がってしまいます。

Streamlit in Snowflakeの場合、デフォルトで通信はSSL化されているのとSSL証明書管理はすべてSnowflakeにて管理しているため、SSL証明書発行・管理の手間をSnowflakeにオフロードすることができ、証明書の更新忘れやReverse Proxyなどの監視運用なども必要なくなります。

SSL証明書の更新期間はかなり長めに設定されているので、更新時期をきちんと管理していないと、いつのまにかExpireしてしまい、ユーザのブラウザ上では開けない状態=業務停止になることもよくある話ではないでしょうか

5.データがSnowflakeの中ですべて処理される

Streamlitを含む通常のアプリケーションの場合、アプリケーションとSnowflakeは基本的にインターネットを経由して通信することになりますが、すべての通信がSSLで暗号化されているとはいえ、実データがインターネットを経由してやり取りされることに抵抗を覚える方も多いと思います

Streamlit in Snowflakeの場合、StreamlitアプリケーションはSnowflakeプラットフォーム上に展開されますので、Streamlitと実データが入っているDWHのやり取りはすべてSnowflakeプラットフォーム内に閉じる形になります。

またデータはインターネット回線を経由しないため、大きなデータのやり取りにおいてもネットワーク帯域やネットワーク遅延など考慮する必要がなくなります。

6.コスト削減

こちらは直接セキュリティには関係しませんが、アプリ基盤を運用する上でもコストは重要な要素になります。データの取り込みからデータの分析処理、ユーザがアクセスするWebUIなどサービスに必要なサーバは常に起動させておく必要があり、誰もアクセスしていない時間でもサーバコストがかかっているのが現状だと思います。

Streamlit in Snowflakeの場合、ユーザが実際にStreamlitを使用するまでStreamlitの稼働に必要なサーバコストを抑えることができますので、ユーザが使わない時間帯のWebUIサーバコストなども最適化させることができます。

元インフラエンジニアとしての経験からセキュリティ関連費用を具体的に挙げると

  • 誰も使用していない状態の待機サーバ利用料
  • OS、ミドルウェア、アプリケーションの脆弱性管理費用
  • OS、ミドルウェア、アプリケーションのアップグレード作業費用(事前テスト、スケジュールマネジメント、深夜作業、失敗した時のロールバックや影響範囲調査などなど)
  • OS、ミドルウェア、アプリケーションの監視ツール費用及び監視運用人件費(障害時の連絡対応及び現地対応などなど)
  • 未パッチのOS、ミドルウェア、アプリケーションへの侵入リスク及びそれから派生するセキュリティリスク(セキュリティインシデント発生時にかかる費用)
  • 急なアクセス増加によるサービス停止、各種部署連絡作業などの事務作業人件費

などが考えられ、これらを合計するとかなりの労力とコストになるのではないでしょうか

まとめ

本記事ではStreamlit in Snowflakeをセキュリティ観点からどのようなメリットがあるのかを解説しました。
Snowflakeのセキュリティ機能をStreamlitにすぐ適用できることも魅力ですが、プラットフォーム自体の管理監視から解放されるのが一番のメリットなのではないでしょうか

Discussion