使用多个身份提供商进行联合身份验证¶
您可以将 Snowflake 配置为允许用户通过多个身份提供商 (IdPs) 进行身份验证。
实现使用多个 IdPs 的联合环境包括以下步骤:
:ref:`启用标识符优先登录流程 <label-multiple_idp_identifier_first>`(本主题内容)。
创建多个 SAML 安全集成,每个 IdP 一个。
: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
。
登录 Snowsight。
在导航菜单中,选择 Projects » Worksheets。
执行以下 SQL 语句:
USE ROLE ACCOUNTADMIN; ALTER ACCOUNT SET ENABLE_IDENTIFIER_FIRST_LOGIN = true;
有关标识符优先登录流程的更多信息,请参阅 标识符优先登录。
将用户与 IdPs 关联¶
在具有多个 IdPs 的环境中,您可以选择如何将用户与 IdP 关联。您可以使用与 IdP 关联的安全集成、身份验证策略,或结合使用这两种方法。
- 安全集成:
使用与每个 IdP 关联的 SAML2 安全集成的
ALLOWED_USER_DOMAINS
和ALLOWED_EMAIL_PATTERNS
属性。在此配置中,只有当用户的EMAIL
与安全集成中的电子邮件地址域或模式匹配时,他们才能将 IdP 视为身份验证选项。- 身份验证策略:
使用 身份验证策略 的
SECURITY_INTEGRATIONS
属性指定哪些安全集成可供用户使用。在此配置中,身份验证策略将分配给整个账户或单个用户。用户只能通过与身份验证策略中指定的安全集成相关联的 IdPs 进行身份验证。如果希望用户只能看到允许他们使用的身份提供商,请创建多个身份验证策略,然后将适当的策略分配给用户。
有关使用身份验证策略实现多个 IdPs 的示例,请参阅 允许对账户使用多个身份提供商的身份验证。
- 组合方法:
您可以将安全集成和身份验证策略方法结合起来,以进一步优化用户在具有多个 IdPs 的环境中的身份验证方式。
如果同时使用这两种方法,Snowflake 将首先评估哪些安全集成与管理用户登录的身份验证策略相关联。Snowflake 确定安全集成后,用户的
EMAIL
与基于ALLOWED_USER_DOMAINS
和ALLOWED_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¶
登录到 Microsoft Azure (https://portal.azure.com/)。
在 Azure services 下,选择 Microsoft Entra ID。
在左侧导航栏中,选择 Manage » Enterprise applications。
选择您的应用程序。
在左侧导航栏中,选择 Manage » Single sign-on。
在 Attributes & Claims 中,选择 Edit。
在 Additional claims 下,展开 Advanced settings。
在 Advanced SAML claims options 旁边,选择 Edit。
右侧面板会显示。
选择 Append application ID to issuer。
收集登录 URL、Microsoft Entra 标识符和应用程序 ID¶
在左侧导航栏中,选择 Manage » Single sign-on。
在 Set up <your application name> 下,保存以下值以备以后使用:
Login URL
Microsoft Entra Identifier
在左侧导航栏中,选择 Overview
在 Properties 下,保存 Application ID 以便以后使用。
为其他应用程序重复以上操作。
创建公共和私有 SAML2 安全集成¶
登录 Snowsight。
在导航菜单中,选择 Projects » Worksheets。
切换到具有 CREATE INTEGRATION 权限的角色。
执行以下 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';
其中,以下占位符会替换为 您之前收集的值:
占位符
示例值
<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
创建另一个 SAML2 安全集成,将私有应用程序 ID 追加到 SAML2_ISSUER 参数中的 Microsoft Entra 标识符。