Snowflake sessions and session policies

このトピックでは、Snowflakeセッションとセッションポリシーについて説明し、アカウントまたはユーザーレベルでセッションポリシーを構成する手順について説明します。

Snowflake sessions

A session begins when a user connects to Snowflake and authenticates successfully using a Snowflake programmatic client or Snowsight. A session is independent of an identity provider (IdP) session. If the Snowflake session expires but the IdP session remains active, a user can log in to Snowflake without entering their login credentials again (i.e. silent authentication).

セッションは、ユーザーの継続的なアクティビティにより、無期限に維持されます。アイドルセッションタイムアウト と呼ばれる、セッションで非アクティブな期間の後では、ユーザーはSnowflakeに対して再度認証する必要があります。アイドルセッションタイムアウトの最大値は4時間で、セッションポリシーによってアイドルセッションタイムアウト期間を変更できます。アイドルセッションタイムアウトは、以下に適用されます。

Snowflakeは、可能であれば既存のセッションを再利用し、セッションが不要になったときにSnowflakeへの接続を閉じることをお勧めします。

Snowsight session expiration and logout behavior

  • A Snowsight session remains active as long as the user is interacting with the application and has not exceeded the configured idle session timeout.

  • The session idle timeout is controlled by your organization's session policy (the default is 4 hours). If there is no activity for longer than this period, the session will expire and you will be logged out automatically.

  • In addition to idle timeout, session persistence is also affected by authentication cookies:

    • In most cases, closing and reopening your browser will end your Snowsight session, regardless of your idle time.

    • If your authentication cookie expires (typically after 24 hours), you will be required to log in again, even if you have not been idle for longer than the session timeout.

  • If your network connection is lost or you attempt to access Snowsight from a disallowed network, your session may be closed and you will be logged out.

  • When a session is closed for any reason, any running queries or jobs associated with that session will be terminated after a short delay (usually within a few minutes).

注釈

Session expiration can occur due to idle timeout, cookie expiration, browser restarts, or network policy violations. Closing your browser or being inactive for an extended period may require you to log in again, even if you have not reached the configured idle timeout.

Monitor session usage

Snowsight または SQL 表示を使用して、アクティブなセッションとセッションの使用状況を監視できます。自分のセッションを表示するか、SESSIONSを表示するアクセス権を持つロールを使用して、自分のアカウントのセッションを表示することができます。ACCOUNT_USAGE スキーマ SNOWFLAKE データベースロール をご参照ください。

SQL:

共有 SNOWFLAKE データベースの ACCOUNT USAGE スキーマの SESSIONS ビューをクエリして、セッションの使用状況をモニターします。

Snowsight:

ナビゲーションメニューで、 Governance & security » Network policies を選択してから、 Sessions タブを選択します。セッションID、ユーザー名、開始時間、セッションで使用されているクライアントドライバー、クライアントのネットアドレス、認証コードを確認できます。開始時間にカーソルを合わせると、セッションが開始された正確な日付と時刻(お住まいの地域のタイムゾーン)が表示されます。

Session policies

セッションポリシーは、 アイドル セッションタイムアウト期間を分単位で定義し、デフォルトのアイドルタイムアウト値を上書きするオプションを提供します。タイムアウト期間は、Snowflakeへの認証が成功すると始まります。セッションポリシーの設定可能な最小アイドルタイムアウト値は 5 分です。

セッションポリシーが設定されていない場合、Snowflakeはデフォルト値の 240 分(4時間)を使用します。

セッションが期限切れになった場合、ユーザーはSnowflakeに対して再度認証する必要があります。ただし、Snowflakeは、 カスタムログアウトエンドポイント で定義された設定を強制しません。

セッションポリシーは、コンプライアンス要件に対応するために、構成可能なアイドルタイムアウト期間を持つアカウントまたはユーザーに設定できます。ユーザーがアカウントとユーザーレベルのセッションポリシーの両方に関連付けられている場合は、ユーザーレベルのセッションポリシーが優先されます。アカウントまたはユーザーにセッションポリシーが設定されると、Snowflakeはセッションポリシーを適用します。

セッションポリシーの動作を管理するプロパティは2つあります。

  • SESSION_IDLE_TIMEOUT_MINS for programmatic and Snowflake clients.

  • SESSION_UI_IDLE_TIMEOUT_MINS for Snowsight.

詳細については、 セッションポリシーの管理 をご参照ください。

セッションポリシーにおけるセカンダリロール

ユーザーがSnowflakeに接続し、セッションが開始されると、ユーザーは USE SECONDARY ROLES コマンドで セカンダリロール をアクティブにすることができます。しかし、セキュリティ管理者として、個々のユーザー、ユーザーのグループ、またはアカウント全体が利用可能なセカンダリロールを管理したいと思うかもしれません。セカンダリロールを管理することで、セッションの間、ユーザーが利用できる権限のセットをスコープできるようになります。

このような管理ニーズを満たすために、セッションポリシーに ALLOWED_SECONDARY_ROLES プロパティを設定し、アカウントまたはアカウント内のユーザーにセッションポリシーを設定することができます。このプロパティは、セッションで有効化できるセカンダリ・ロールを制御します。このプロパティを空のリスト ALLOWED_SECONDARY_ROLES=() にセットすると、セッションのセカンダリ・ロールが無効になります。

例については、 セッションポリシーでセカンダリロールを指定する をご参照ください。

注釈

セッションポリシーで ALLOWED_SECONDARY_ROLES プロパティをセットすると、既存のセッションを含め、セカンダリロールの適用が直ちに開始されます。

セカンダリロールを制限するためにセッションポリシーを更新する前に、ワークロードの不要な中断を避けるために、ワークロードのスケジュールと各ワークロードのアクセス制御を考慮してください。

考慮事項

  • クライアントが CLIENT_SESSION_KEEP_ALIVE オプションをサポートし、オプションが TRUE に設定されている場合、クライアントは、Snowflakeへの接続がアクティブである限り、Snowflakeセッションを無期限に保持します。それ以外の場合、オプションが FALSE に設定されていると、セッションは4時間後に終了します。可能であれば、このオプションの使用は避けてください。使用すると、多くのオープンセッションが発生し、パフォーマンスを低下させる恐れのある、リソースへの要求が大きくなる可能性があります。

  • CLIENT_SESSION_KEEP_ALIVE_HEARTBEAT_FREQUENCY パラメーター使用して、クライアントがセッションのトークンを更新しようとする間隔の秒数を指定できます。DDL および DML ステートメントの実行など、Snowflakeオブジェクトが引き続き使用されると、ウェブインターフェイスセッションを更新できます。Snowflakeは、30秒ごとにこの動作をチェックします。

  • 新しいワークシートを作成するか、既存のワークシートを開くと、確立されたユーザーセッションが引き続き使用されますが、アイドルセッションのタイムアウトは0にリセットされます。

制限事項

将来の付与:

セッションポリシーに対する権限の 将来の付与 はサポートされていません。

回避策として、カスタムロールに APPLYSESSION POLICY 権限を付与して、そのロールがユーザーまたはSnowflakeアカウントにセッションポリシーを適用できるようにします。