联合身份验证和 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 登录:

    1. 用户转到 Snowflake Web 界面。

    2. 用户选择使用为账户配置的 IdP(Okta、AD FS 或自定义 IdP)登录。

    3. 用户使用其 IdP 凭据(例如电子邮件地址和密码)向 IdP 进行身份验证。

    4. 如果身份验证成功, IdP 将向 Snowflake 发送 SAML 响应以发起会话并显示 Snowflake Web 界面。

    备注

    对于 Snowflake 发起的登录,Snowflake 登录页面提供两种身份验证选项(IdP 或 Snowflake)。要使用联合身份验证,用户必须选择 IdP 选项,然后在出现提示时输入其凭据。选择 Snowflake 选项会绕过联合身份验证并使用 Snowflake 的本机身份验证使用户登录。

  • IdP 发起的登录:

    要通过账户的 IdP 登录:

    1. 用户转到 IdP 站点/应用程序,并使用其 IdP 凭据(例如电子邮件地址和密码)进行身份验证。

    2. 在 IdP 中,用户点击 Snowflake 应用程序(如果使用 Okta 或 AD FS)或已在 IdP 中定义的自定义应用程序(如果使用另一个 IdP)。

    3. 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 之前 配置专用连接:

复制 SSO 配置

Snowflake 支持从源账户到目标账户的 SAML2 安全集成 的复制,以及故障转移/故障回复。

有关详细信息,请参阅 跨多个账户复制安全集成和网络策略

语言: 中文