所有者の権利と Streamlit in Snowflake アプリの理解¶
このトピックの内容:
紹介¶
SnowflakeにおけるStreamlitのモデルは、 ストアドプロシージャ における所有者の権利モデルと密接にマッピングされています。これにより、サービスアカウントトークンが不要になり、Snowflakeが提供する認証、アクセス制御、ネットワークポリシー機能と統合されます。
Streamlit in Snowflake における所有権について¶
Streamlitアプリは、セッション内で以下のルールに従います。
呼び出し元の権限ではなく、所有者の権限で実行する。
アプリ所有者によってプロビジョニングされたウェアハウスで実行する。
呼び出し元が現在使用しているデータベースとスキーマではなく、SnowflakeアプリでStreamlitが作成されたデータベースとスキーマを使用する。
アプリ作成について¶
Streamlitアプリの作成権限はスキーマレベルで付与されます。スキーマの OWNER 権限を持つユーザーのみが、そのスキーマでStreamlitアプリを作成できます。Streamlitアプリが作成されると、アプリを最初に作成したユーザーのロールで実行されます。
アプリの表示¶
アプリの所有者は、どのロールにアプリを使用する権限を与えるかを選択できます。
閲覧者はアプリと対話し、画面に表示されたものをすべて見ることができます。
権限で WITH GRANT が有効化されているかどうかに関係なく、他のロールと共有するときにアプリ所有者ロールのすべての権限をアプリで使用できます。
所有者の権利の制限¶
アプリは所有者の権利で実行されるため、いくつかの追加制限があります。これらの制限は以下に影響します。
ストアドプロシージャの内部から呼び出すことができる組み込み関数は、ストアドプロシージャがStreamlitアプリから呼び出された場合には利用できません。
ALTERUSER ステートメントを実行する機能。
ストアドプロシージャ内から呼び出すことができる SQL ステートメントの型。
一部の DESCRIBE コマンド。
所有者の権利とアプリのセキュリティ¶
Snowflakeは認証、ロールベースのアクセス制御、管理者制御などのセキュリティ機能を提供しますが、アプリのセキュリティに関する責任はアプリ作成者と共有されます。このため、Snowflake内でStreamlitアプリを開発する際には、適切なセキュリティプラクティスに従う必要があります。
不正なアプリケーションロジックにより、攻撃者は所有者のロールに付与されたすべての権限にフルアクセスすることができます。例えば、閲覧者が SQL コマンドを直接記述できるアプリは、閲覧者がアプリの所有者として行動することもできるため、アプリを再構成したり、アプリの他の閲覧者をターゲットにしたりすることができます。
健全なセキュリティプラクティスとして、Snowflakeでは、ロールベースのアクセス制御と、Streamlitアプリの作成および表示専用のロールの使用を推奨しています。