联合身份验证和 SSO 概述¶
本主题介绍了构成用户身份验证联合环境的组件,以及 Snowflake 支持的 SSO (单点登录)工作流程。
本主题内容:
什么是联合环境?¶
在联合环境中,通过使用一个或多个提供独立的用户凭据身份验证的外部实体,将用户身份验证与用户访问分开。然后将身份验证传递给一项或多项服务,使用户能够通过 SSO 访问服务。联合环境由以下组件组成:
- 服务提供商 (SP):
在 Snowflake 联合环境中,Snowflake 充当 SP。
- 身份提供商 (IdP):
负责向 SP 提供以下服务的外部独立实体:
创建和维护用户凭据和其他配置文件信息。
验证用户对 SP 的 SSO 访问。
Snowflake 作为 IdP 支持 大多数 符合 SAML 2.0的供应商;然而,某些供应商包括对 Snowflake 的本地支持(详见下文)。
支持的身份提供商¶
以下供应商为联合身份验证和 SSO 提供 本机 Snowflake 支持:
Okta (http://www.okta.com) – 托管服务
Microsoft AD FS (https://msdn.microsoft.com/en-us/library/bb897402.aspx) (Active Directory 联合身份验证服务)– 本地软件(安装在 Windows Server 上)
除了 Okta 和 AD FS 提供的本机 Snowflake 支持外,Snowflake 还支持使用 大多数 符合 SAML 2.0 的供应商作为 IdP,包括:
Google G Suite (https://gsuite.google.com/)
Microsoft Azure AD (https://azure.microsoft.com/en-us/services/active-directory/)
OneLogin (https://www.onelogin.com/product/sso)
Ping Identity PingOne (https://www.pingidentity.com/en/products/pingone.html)
备注
要使用 Okta 或 AD FS 之外的 IdP,您必须在 IdP 中为 Snowflake 定义一个自定义应用程序。
有关将 Okta、AD FS 或其他符合 SAML 2.0 的供应商配置为 Snowflake 的 IdP 的详细信息,请参阅 为 Snowflake 配置身份提供商 (IdP)。
使用多个身份提供商¶
您可以对 Snowflake 进行配置,以便不同用户使用不同的身份提供商进行身份验证。
配置好所有身份提供商 后,请按照 使用多个身份提供商进行联合身份验证 中的指导进行操作。
备注
目前,只有一部分 Snowflake 驱动程序支持使用多个身份提供商。这些驱动程序包括 JDBC、ODBC 和 Python。
支持的 SSO 工作流程¶
联合身份验证可实现以下 SSO 工作流程:
登录 Snowflake。
注销 Snowflake。
由于不活动而导致系统超时。
每个工作流程的行为由操作是在 Snowflake 中发起还是在 IdP 中发起决定。
登录工作流程¶
当用户登录时,系统的行为由登录是通过 Snowflake 还是 IdP 发起来确定:
- Snowflake 发起的登录:
通过 Snowflake 登录:
用户转到 Snowflake Web 界面。
用户选择使用为账户配置的 IdP(Okta、AD FS 或自定义 IdP)登录。
用户使用其 IdP 凭据(例如电子邮件地址和密码)向 IdP 进行身份验证。
如果身份验证成功, IdP 将向 Snowflake 发送 SAML 响应以发起会话并显示 Snowflake Web 界面。
备注
对于 Snowflake 发起的登录,Snowflake 登录页面提供两种身份验证选项(IdP 或 Snowflake)。要使用联合身份验证,用户必须选择 IdP 选项,然后在出现提示时输入其凭据。选择 Snowflake 选项会绕过联合身份验证并使用 Snowflake 的本机身份验证使用户登录。
- IdP 发起的登录:
要通过账户的 IdP 登录:
用户转到 IdP 站点/应用程序,并使用其 IdP 凭据(例如电子邮件地址和密码)进行身份验证。
在 IdP 中,用户点击 Snowflake 应用程序(如果使用 Okta 或 AD FS)或已在 IdP 中定义的自定义应用程序(如果使用另一个 IdP)。
IdP 向 Snowflake 发送 SAML 响应以发起会话,然后显示 Snowflake Web 界面。
注销工作流程¶
当用户注销时,可用选项取决于 IdP 是支持 全局 注销还是仅支持 标准 注销:
- 标准型:
需要用户明确注销 IdP 和 Snowflake 才能完全断开连接。所有 IdPs 均支持标准注销。
- 全局:
使用户能够注销 IdP 以及随后所有的 Snowflake 会话。对全局注销的支持依赖于 IdP。
此外,系统的行为取决于注销是通过 Snowflake 还是 IdP 发起的:
- Snowflake 发起的注销:
Snowflake 内部不支持全局注销,无论 IdP 是否支持。当用户注销 Snowflake 会话时,他们只会注销该会话。他们当前的所有其他 Snowflake 会话保持打开,他们的 IdP 会话也是如此。因此,他们可以继续在其他会话中工作,也可以发起其他会话,而无需通过 IdP 重新进行身份验证。
要完全断开连接,用户必须明确注销 Snowflake 和 IdP。
- IdP 发起的注销:
当用户通过 IdP 注销时,其行为取决于 IdP 是仅支持标准注销还是也支持全局注销:
AD FS 支持标准注销和全局注销。如果启用全局注销, AD FS IdP 登录页面提供从用户访问过的所有站点注销的选项。选择此选项并点击 Sign Out 将用户从 AD FS 及其所有 Snowflake 会话中注销。要再次访问 Snowflake,他们必须使用 AD FS 重新进行身份验证。
Okta 仅支持标准注销。当用户注销 Okta 时,他们不会自动注销任何活动的 Snowflake 会话,并且可以继续工作。但是,要发起任何新的 Snowflake 会话,他们必须通过 Okta 再次进行身份验证。
所有自定义提供商都支持标准注销;对全局注销的支持因提供商而异。
备注
对于基于网络的 IdP(例如 Okta),关闭浏览器选项卡/窗口不一定会结束 IdP 会话。如果用户的 IdP 会话仍处于活动状态,他们仍然可以访问 Snowflake,直到 IdP 会话超时。
超时工作流程¶
当用户的会话超时时,行为取决于超时的是 Snowflake 会话还是 IdP 会话:
- Snowflake 超时:
如果用户使用 SSO 登录 Snowflake,并且他们的 Snowflake 会话由于不活动而过期,则 Snowflake Web 界面将被禁用,并显示 IdP 身份验证提示:
要继续使用过期的 Snowflake 会话,用户必须通过 IdP 再次进行身份验证。
用户可以通过点击 Cancel 按钮退出会话。
用户也可以直接转到 IdP 站点/应用程序并重新启动 Snowflake,但这将发起新的 Snowflake 会话。
- IdP 超时:
在指定的时间段(由 IdP 定义)后,用户在 IdP 中的会话会自动超时,但这不会影响他们的 Snowflake 会话。当时处于活动状态的任何 Snowflake 会话都保持打开状态,不需要重新进行身份验证。但是,要发起任何新的 Snowflake 会话,用户必须再次登录 IdP。
SSO 与专用连接结合使用¶
Snowflake 支持使用 SSO 与 Snowflake 服务建立专用连接,这适用于部署在 Amazon Web Services (AWS)、Microsoft Azure 和 Google Cloud Platform (GCP) 上的 Snowflake 账户。
目前,对于任何给定的 Snowflake 账户, SSO 一次只能使用一个账户 URL :公共账户 URL 或与 AWS、Microsoft Azure 或 Google Cloud Platform 上的专用连接服务相关联的 URL。
Snowflake 支持对 组织 使用 SSO,您可以在 SAML2 安全集成中使用相应的 URL。有关更多信息,请参阅 配置 Snowflake 以使用联合身份验证。
要将 SSO 与 Snowflake 的专用连接结合使用,请在配置 SSO 之前 配置专用连接:
如果 Snowflake 账户在 AWS 或 Azure 上,请遵循 AWS PrivateLink 和 Snowflake 以及 Azure 专用链接和 Snowflake 中列出的自助服务说明。
如果 Snowflake 账户在 GCP 上,您 必须 联系 Snowflake 支持部门 (https://community.snowflake.com/s/article/How-To-Submit-a-Support-Case-in-Snowflake-Lodge) 并提供 Snowflake 账户 URL 以用于 Google Cloud Private Service Connect 和 Snowflake。
要确定要使用的正确 URL,请在 GCP 上的 Snowflake 账户中调用 SYSTEM$GET_PRIVATELINK_CONFIG 函数。
复制 SSO 配置¶
Snowflake 支持从源账户到目标账户的 SAML2 安全集成 的复制,以及故障转移/故障回复。
有关详细信息,请参阅 跨多个账户复制安全集成和网络策略。