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 进行身份验证。空闲会话超时的最大值为四小时,会话策略可以修改空闲会话超时时间。空闲会话超时适用于以下情况:

Snowflake 建议尽可能重用现有会话,并在不再需要会话时关闭与 Snowflake 的连接。

Snowsight 会话过期和注销行为

  • 只要用户正在与应用程序交互,并且未超过配置的空闲会话超时,Snowsight 会话就会保持活动状态。

  • 会话空闲超时由组织的会话策略控制(默认值为 4 小时)。如果超过此时间段没有活动,会话将过期,您将自动注销。

  • 除了空闲超时之外,会话持久性还受身份验证 Cookie 的影响:

    • 在大多数情况下,关闭并重新打开浏览器将结束 Snowsight 会话,而不考虑您的空闲时间。

    • 如果您的身份验证 Cookie 过期(通常在 24 小时后),即使您没有闲置超过会话超时时间,也将需要重新登录。

  • 如果您的网络连接丢失或您尝试从不允许的网络访问 Snowsight,则您的会话可能会关闭,您将被注销。

  • 当会话因任何原因关闭时,与该会话关联的任何正在运行的查询或作业将在短暂延迟(通常在几分钟内)后终止。

备注

由于空闲超时、Cookie 过期、浏览器重启或违反网络策略,可能会导致会话过期。关闭浏览器或长时间处于非活动状态可能需要您重新登录,即使您尚未达到配置的空闲超时时间。

Monitor session usage

您可以使用 Snowsight 或 SQL 视图监控活动会话和会话使用情况。您可以查看自己的会话,也可以使用具有访问权限的角色查看 SESSIONS 视图来查看您账户的会话。请参阅 ACCOUNT_USAGE 架构 SNOWFLAKE 数据库角色

SQL:

在共享的 SNOWFLAKE 数据库的 ACCOUNT USAGE 架构中查询 SESSIONS 视图以监控会话使用情况。

Snowsight:

In the navigation menu, select Governance & security » Network policies, and then select the Sessions tab. You can review the session ID, user name, start time, client driver in use for the session, client net address, and authentication method. Hover over the start time to view the exact date and time that the session started, in your local time zone.

Session policies

会话策略定义了 空闲 会话超时时间(以分钟为单位),并提供替换默认空闲超时值的选项。超时时间从成功对 Snowflake 进行身份验证开始。会话策略的最小可配置空闲超时值为 5 分钟。

如果未设置会话策略,Snowflake 将使用默认值 30 分钟(半个小时)。

当会话过期时,用户必须再次向 Snowflake 进行身份验证。但是,Snowflake 不强制执行 自定义注销端点 的任何设置。

可以为账户或用户设置会话策略,并具有可配置的空闲超时时间,以满足合规性要求。如果用户同时与账户和用户级会话策略关联,则用户级会话策略优先。在账户或用户上设置会话策略后,Snowflake 会强制执行会话策略。

有两个属性治理会话策略行为:

  • SESSION_IDLE_TIMEOUT_MINS for programmatic and Snowflake clients.

  • SESSION_UI_IDLE_TIMEOUT_MINS for Snowsight.

有关更多信息,请参阅 管理会话策略

会话策略中的次要角色

当用户连接到 Snowflake 且会话开始时,用户可以通过 USE SECONDARY ROLES 命令激活 :ref:` 次要角色 <label-access_control_role_enforcement>`。然而,作为安全管理员,您可能希望管理可供单个用户、用户组或整个账户使用的次要角色。管理次要角色有助于在会话期间限制用户可用的权限集。

为了满足这些管理需求,您可以在会话策略中设置 ALLOWED_SECONDARY_ROLES 属性,并在账户或账户中的用户上设置会话策略。此属性控制可在会话中激活的次要角色。将此属性设置为空列表 ALLOWED_SECONDARY_ROLES=() 禁用会话中的次要角色。

有关示例,请参阅 在会话策略中指定次要角色

备注

如果在会话策略中设置了 ALLOWED_SECONDARY_ROLES 属性,则会立即开始强制执行次要角色,包括现有会话。

在更新会话策略以限制次要角色之前,请考虑您的工作负载计划以及每个工作负载的访问控制,以避免不必要的工作负载中断。

注意事项

  • 如果客户端支持 CLIENT_SESSION_KEEP_ALIVE 选项并且该选项设置为 TRUE,只要与 Snowflake 的连接处于活动状态,客户端就会无限期地保留 Snowflake 会话。否则,如果该选项设置为 FALSE,会话会在 4 小时后结束。如果可能,请避免使用此选项,因为它可能会打开大量会话,并对资源提出更大的需求,从而导致性能下降。

  • 您可以使用 CLIENT_SESSION_KEEP_ALIVE_HEARTBEAT_FREQUENCY 参数指定客户端尝试更新会话令牌之间的秒数。Web 界面会话可以随着 Snowflake 对象的继续使用而刷新,例如执行 DDL 和 DML 语句。Snowflake 每 30 秒检查一次此行为。

  • 创建新工作表或打开现有工作表将继续使用已建立的用户会话,但其空闲会话超时重置为 0。

限制

未来授权:

不支持对会话策略进行 未来授权

为解决此问题,请向自定义角色授予 APPLY SESSION POLICY 权限,以允许该角色对用户或 Snowflake 账户应用会话策略。

语言: 中文