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:

选择 Admin » Security,然后选择 Sessions。您可以查看会话 ID、用户名、开始时间、用于会话的客户端驱动程序、客户端网络地址和身份验证方法。将鼠标悬停在开始时间上,即可查看会话开始的确切日期和时间,以您当地时区为准。

会话策略

会话策略定义了:emph:空闲`会话超时期限(以分钟为单位),并提供覆盖默认空闲超时值的选项。超时期限在成功完成对 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 属性,并在账户或账户中的用户上设置会话策略。然后,用户可以运行 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 参数指定客户端尝试更新会话令牌之间的秒数。Web 界面会话可以随着 Snowflake 对象的继续使用而刷新,例如执行 DDL 和 DML 语句。Snowflake 每 30 秒检查一次此行为。

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

限制

未来授权:

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

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

语言: 中文