Snowflake 会话和会话策略

本主题介绍 Snowflake 会话和会话策略,并提供在账户或用户级别配置会话策略的说明。

Snowflake 会话

当用户连接到 Snowflake 并使用 Snowflake 编程客户端、Snowsight 或 Classic Console 成功进行身份验证时,会话开始。会话独立于身份提供商(即 IdP)会话。如果 Snowflake 会话过期但 IdP 会话保持活动状态,用户无需再次输入登录凭据即可登录 Snowflake(即静默身份验证)。

会话随着用户的持续活动而无限期地维持。会话长时间不处于活动状态(空闲会话超时)后,用户必须再次向 Snowflake 进行身份验证。空闲会话超时的最大值为四小时,会话策略可以修改空闲会话超时时间。空闲会话超时适用于以下情况:

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

Snowsight 会话

Snowflake 为 Snowsight 中的每个工作表创建一个新会话。工作表会话强制执行适用于创建工作表的用户的会话策略。

小心

当会话结束且用户注销时,处于活动状态的查询 不会 取消,即使 ABORT_DETACHED_QUERY 参数设置为 true 也是如此。

Classic Console 会话

Worksheets Worksheet 选项卡 选项卡中,Snowflake 每次创建新工作表时都会创建一个新会话。每个工作表的空闲行为最多限制为 4 小时,并且每个工作表的空闲超时都会单独跟踪。

当工作表 关闭 时,该工作表的用户会话结束。

任何 打开 的工作表的 4 小时时间限制到期后,Snowflake 会将用户从 Web 界面中注销。

备注

请注意,滚动查询结果集或对数据集排序等被动行为不会重置空闲会话超时跟踪器。

为了防止会话过早关闭并从 Classic Console 注销,请将任何必要的 SQL 语句保存到本地文件并关闭任何打开的未使用的工作表。

监控会话使用情况

您可以使用 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.

会话策略

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

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

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

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

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

  • SESSION_IDLE_TIMEOUT_MINS 适用于程序化客户端和 Snowflake 客户端。

  • SESSION_UI_IDLE_TIMEOUT_MINS 适用于 Classic Console 和 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 账户应用会话策略。

语言: 中文