使用多个身份提供商进行联合身份验证

您可以将 Snowflake 配置为允许用户通过多个身份提供商 (IdPs) 进行身份验证。

实现使用多个 IdPs 的联合环境包括以下步骤:

  1. :ref:`启用标识符优先登录流程 <label-multiple_idp_identifier_first>`(本主题内容)。

  2. 配置每个身份提供商

  3. 创建多个 SAML 安全集成,每个 IdP 一个。

  4. :ref:`将用户与 IdPs 关联 <label-multiple_idp_methods>`(本主题内容)。

备注

在实现使用多个 IdPs 的环境时,请记住以下几点:

  • 每个 IdP 必须有相应的 SAML 安全集成。如果您现有的单 IdP 环境使用已弃用的 SAML_IDENTITY_PROVIDER 参数,您必须使用 SYSTEM$MIGRATE_SAML_IDP_REGISTRATION 函数将其迁移到 SAML 安全集成。

  • 目前,只有一部分 Snowflake 驱动程序支持使用多个身份提供商。这些驱动程序包括 JDBC、ODBC 和 Python。

启用标识符优先登录

当账户的联合环境使用多个 IdPs 时,Snowflake 必须能够在向用户提供身份验证选项 之前 确定哪个 IdPs 与用户关联。在此流程中,Snowflake 仅提示用户输入其电子邮件地址或用户名,然后在识别用户后显示身份验证方法。只有与用户关联的 IdPs 将显示为身份验证选项。

如果您使用多个 IdPs,则必须启用标识符优先登录流程。要启用标识符优先登录,请将 ENABLE_IDENTIFIER_FIRST_LOGIN 参数设置为 TRUE

  1. 登录 Snowsight。

  2. 在导航菜单中,选择 Projects » Worksheets

  3. 执行以下 SQL 语句:

    USE ROLE ACCOUNTADMIN;
    ALTER ACCOUNT SET ENABLE_IDENTIFIER_FIRST_LOGIN = true;
    
    Copy

有关标识符优先登录流程的更多信息,请参阅 标识符优先登录

将用户与 IdPs 关联

在具有多个 IdPs 的环境中,您可以选择如何将用户与 IdP 关联。您可以使用与 IdP 关联的安全集成、身份验证策略,或结合使用这两种方法。

安全集成:

使用与每个 IdP 关联的 SAML2 安全集成的 ALLOWED_USER_DOMAINSALLOWED_EMAIL_PATTERNS 属性。在此配置中,只有当用户的 EMAIL 与安全集成中的电子邮件地址域或模式匹配时,他们才能将 IdP 视为身份验证选项。

身份验证策略:

使用 身份验证策略SECURITY_INTEGRATIONS 属性指定哪些安全集成可供用户使用。在此配置中,身份验证策略将分配给整个账户或单个用户。用户只能通过与身份验证策略中指定的安全集成相关联的 IdPs 进行身份验证。

如果希望用户只能看到允许他们使用的身份提供商,请创建多个身份验证策略,然后将适当的策略分配给用户。

有关使用身份验证策略实现多个 IdPs 的示例,请参阅 允许对账户使用多个身份提供商的身份验证

组合方法:

您可以将安全集成和身份验证策略方法结合起来,以进一步优化用户在具有多个 IdPs 的环境中的身份验证方式。

如果同时使用这两种方法,Snowflake 将首先评估哪些安全集成与管理用户登录的身份验证策略相关联。Snowflake 确定安全集成后,用户的 EMAIL 与基于 ALLOWED_USER_DOMAINSALLOWED_EMAIL_PATTERNS 属性的其中一个集成匹配。Snowflake 仅显示与用户的 EMAIL 匹配的安全集成的 IdP 选项。

使用多个 SAML2 安全集成与采用同一发放者 ID 的 Microsoft Entra ID 结合使用

本部分指导您配置 Snowflake 和 Microsoft Entra ID,以允许用户使用公共或私有发放者 URL 通过 SSO 进行身份验证。您可以将两种不同的 SAML2 安全集成与 Microsoft Entra ID 结合使用,以实现此体验。您可以配置 Microsoft Entra ID,将不同的应用程序 ID 追加到每个发放者 URL,以区分公共和私有发放者 URLs。

在继续之前,您必须 启用标识符优先登录流程

按照以下部分了解如何将多个 SAML2 安全集成与采用同一发放者 ID 的 Microsoft Entra ID 结合使用:

配置 Microsoft Entra ID,将应用程序 IDs 追加到 Microsoft Entra 标识符 URLs

  1. 登录到 Microsoft Azure (https://portal.azure.com/)。

  2. Azure services 下,选择 Microsoft Entra ID

  3. 在左侧导航栏中,选择 Manage » Enterprise applications

  4. 选择您的应用程序。

  5. 在左侧导航栏中,选择 Manage » Single sign-on

  6. Attributes & Claims 中,选择 Edit

  7. Additional claims 下,展开 Advanced settings

  8. Advanced SAML claims options 旁边,选择 Edit

    右侧面板会显示。

  9. 选择 Append application ID to issuer

收集登录 URL、Microsoft Entra 标识符和应用程序 ID

  1. 确保您 配置了 Microsoft Entra ID

  2. 在左侧导航栏中,选择 Manage » Single sign-on

  3. Set up <your application name> 下,保存以下值以备以后使用:

    • Login URL

    • Microsoft Entra Identifier

  4. 在左侧导航栏中,选择 Overview

  5. Properties 下,保存 Application ID 以便以后使用。

  6. 为其他应用程序重复以上操作。

创建公共和私有 SAML2 安全集成

  1. 确保您 配置了 Microsoft Entra ID

  2. 确保您 收集了登录 URL、Microsoft Entra 标识符和应用程序 ID

  3. 登录 Snowsight。

  4. 在导航菜单中,选择 Projects » Worksheets

  5. 切换到具有 CREATE INTEGRATION 权限的角色。

  6. 执行以下 SQL 语句以创建 SAML2 安全集成:

    CREATE OR REPLACE SECURITY INTEGRATION entra_id_public
      TYPE = SAML2
      ENABLED = TRUE
      SAML2_ISSUER = '<microsoft_entra_identifier>/<application_id>'
      SAML2_SSO_URL = '<login_url>'
      SAML2_PROVIDER = 'CUSTOM'
      SAML2_X509_CERT = 'MIIC...TAs/'
      SAML2_SP_INITIATED_LOGIN_PAGE_LABEL = 'Entra ID SSO Public'
      SAML2_ENABLE_SP_INITIATED = TRUE
      SAML2_SNOWFLAKE_ACS_URL = 'https://<organization_name>-<account_name>.snowflakecomputing.cn/fed/login'
      SAML2_SNOWFLAKE_ISSUER_URL = 'https://<organization_name>-<account_name>.snowflakecomputing.cn';
    
    Copy

    其中,以下占位符会替换为 您之前收集的值

    占位符

    示例值

    <login_url>

    https://login.microsoftonline.com/91ccae45-d439-xxxx-xxxx-e22c06bfe4f9/saml2

    <microsoft_entra_identifier>

    https://sts.windows.net/91ccae45-d439-xxxx-xxxx-e22c06bfe4f9

    <application_id>

    456xyz00-4567-4567-4567-4567xyz5678

    <organization_name>

    EXAMPLE-USER12_AA12

    <account_name>

    MSMITH

  7. 创建另一个 SAML2 安全集成,将私有应用程序 ID 追加到 SAML2_ISSUER 参数中的 Microsoft Entra 标识符。

语言: 中文