Snowflakeセッションおよびセッションポリシー¶
このトピックでは、Snowflakeセッションとセッションポリシーについて説明し、アカウントまたはユーザーレベルでセッションポリシーを構成する手順について説明します。
Snowflakeセッション¶
セッションは、ユーザーがSnowflakeに接続し、Snowflakeプログラムクライアント、 Snowsight、または Classic Console を使用して正常に認証されたときに開始されます。セッションは、IDプロバイダー(つまり IdP)セッションから独立しています。Snowflakeセッションの有効期限が切れても、 IdP セッションがアクティブなままの場合、ユーザーは認証情報を再度入力せずにSnowflakeにログインできます(つまり、サイレント認証)。
セッションは、ユーザーの継続的なアクティビティにより、無期限に維持されます。 アイドルセッションタイムアウト と呼ばれる、セッションで非アクティブな期間の後では、ユーザーはSnowflakeに対して再度認証する必要があります。アイドルセッションタイムアウトの最大値は4時間で、セッションポリシーによってアイドルセッションタイムアウト期間を変更できます。アイドルセッションタイムアウトは、以下に適用されます。
サポートされている コネクタとドライバー。
サポートされているコネクタまたはドライバーを使用してSnowflakeに接続する、サードパーティクライアント。
Snowflakeは、可能であれば既存のセッションを再利用し、セッションが不要になったときにSnowflakeへの接続を閉じることをお勧めします。
Snowsightセッション¶
Snowflakeは Snowsight の各ワークシートに新しいセッションを作成します。ワークシートセッションは、ワークシートを作成するユーザーに適用されるセッションポリシーを実施します。
注意
ABORT_DETACHED_QUERY パラメーターがtrueに設定されている場合に、セッションが終了してユーザーがログアウトしても、アクティブなクエリは キャンセルされません。
従来のコンソールセッション¶
Worksheets タブでは、新しいワークシートが作成されるたびにSnowflakeが新しいセッションを作成します。各ワークシートは最大4時間のアイドル動作に制限されており、各ワークシートのアイドルタイムアウトは個別に追跡されます。
ワークシートが 閉じられる と、ワークシートのユーザーセッションは終了します。
開いた ワークシートが4時間の制限時間を経過すると、Snowflakeはユーザーをウェブインターフェイスからログアウトします。
注釈
クエリ結果セットのスクロールやデータセットの並べ替えなどの受動的な動作は、アイドルセッションタイムアウトトラッカーをリセットしないことに注意してください。
セッションの閉じられるのが早すぎたり、 Classic Console からログアウトされたりしないようにするには、必要な SQL ステートメントをローカルファイルに保存し、使用されていない開いているワークシートをすべて閉じます。
セッションの使用状況の監視¶
Snowsight または SQL 表示を使用して、アクティブなセッションとセッションの使用状況を監視できます。自分のセッションを表示するか、SESSIONSを表示するアクセス権を持つロールを使用して、自分のアカウントのセッションを表示することができます。 ACCOUNT_USAGE スキーマ SNOWFLAKE データベースロール をご参照ください。
- SQL:
共有 SNOWFLAKE データベースの ACCOUNT USAGE スキーマの SESSIONS ビューをクエリして、セッションの使用状況をモニターします。
- Snowsight:
Admin » Security 、 Sessions の順に選択します。セッションID、ユーザー名、開始時間、セッションで使用されているクライアントドライバー、クライアントのネットアドレス、認証コードを確認できます。開始時間にカーソルを合わせると、セッションが開始された正確な日付と時刻(お住まいの地域のタイムゾーン)が表示されます。
セッションポリシー¶
セッションポリシーは、 アイドル セッションタイムアウト期間を分単位で定義し、デフォルトのアイドルタイムアウト値を上書きするオプションを提供します。タイムアウト期間は、Snowflakeへの認証が成功すると始まります。セッションポリシーの設定可能な最小アイドルタイムアウト値は 5
分です。
セッションポリシーが設定されていない場合、Snowflakeはデフォルト値の 240
分(4時間)を使用します。
セッションが期限切れになった場合、ユーザーはSnowflakeに対して再度認証する必要があります。ただし、Snowflakeは、 カスタムログアウトエンドポイント で定義された設定を強制しません。
セッションポリシーは、コンプライアンス要件に対応するために、構成可能なアイドルタイムアウト期間を持つアカウントまたはユーザーに設定できます。ユーザーがアカウントとユーザーレベルのセッションポリシーの両方に関連付けられている場合は、ユーザーレベルのセッションポリシーが優先されます。アカウントまたはユーザーにセッションポリシーが設定されると、Snowflakeはセッションポリシーを適用します。
セッションポリシーの動作を管理するプロパティは2つあります。
プログラムクライアントおよびSnowflakeクライアント用
SESSION_IDLE_TIMEOUT_MINS
。SESSION_UI_IDLE_TIMEOUT_MINS
および Classic Console の Snowsight。
詳細については、 セッションポリシーの管理 をご参照ください。
セッションポリシーにおけるセカンダリロール¶
ユーザーがSnowflakeに接続し、セッションが開始されると、ユーザーは USE SECONDARY ROLES コマンドで セカンダリロール をアクティブにすることができます。しかし、セキュリティ管理者として、個々のユーザー、ユーザーのグループ、およびアカウント全体で利用可能なセカンダリロールを管理したい場合があります。セカンダリロールを管理することで、セッションの間、ユーザーが利用できる権限のセットをスコープできるようになります。
このような管理ニーズを満たすために、セッションポリシーに ALLOWED_SECONDARY_ROLES
プロパティを設定し、アカウントまたはアカウント内のユーザーにセッションポリシーを設定することができます。その後、ユーザーは USE SECONDARY ROLES コマンドを実行し、Snowflakeセッション中に使用できるセカンダリロールを指定できます。
例については、 セッションポリシーでセカンダリロールを指定する をご参照ください。
注釈
セッションポリシーで ALLOWED_SECONDARY_ROLES
プロパティを設定すると、新しいセッションの開始時にセカンダリロールの適用が開始されます。Snowflakeにログインするか、 Snowsight で新しいワークシートを開くことで、新しいSnowflakeセッションを開始できます。
セカンダリロールを評価するためにセッションポリシーを更新する前に、ワークロードの不要な中断を避けるために、ワークロードのスケジュールと各ワークロードのアクセス制御を考慮してください。
考慮事項¶
クライアントが CLIENT_SESSION_KEEP_ALIVE オプションをサポートし、オプションが
TRUE
に設定されている場合、クライアントは、Snowflakeへの接続がアクティブである限り、Snowflakeセッションを無期限に保持します。それ以外の場合、オプションがFALSE
に設定されていると、セッションは4時間後に終了します。可能であれば、このオプションの使用は避けてください。使用すると、多くのオープンセッションが発生し、パフォーマンスを低下させる恐れのある、リソースへの要求が大きくなる可能性があります。CLIENT_SESSION_KEEP_ALIVE_HEARTBEAT_FREQUENCY パラメーター使用して、クライアントがセッションのトークンを更新しようとする間隔の秒数を指定できます。DDL および DML ステートメントの実行など、Snowflakeオブジェクトが引き続き使用されると、ウェブインターフェイスセッションを更新できます。Snowflakeは、30秒ごとにこの動作をチェックします。
新しいワークシートを作成するか、既存のワークシートを開くと、確立されたユーザーセッションが引き続き使用されますが、アイドルセッションのタイムアウトは0にリセットされます。
制限事項¶
- 将来の付与:
セッションポリシーに対する権限の 将来の付与 はサポートされていません。
回避策として、カスタムロールに APPLYSESSION POLICY 権限を付与して、そのロールがユーザーまたはSnowflakeアカウントにセッションポリシーを適用できるようにします。