CREATE SECURITY INTEGRATION (SAML2)

在账户中创建新的 SAML2 安全集成或替换现有集成。SAML2 安全集成在 Snowflake 与第三方身份提供商 (IdP) 之间创建接口,从而提供单点登录 (SSO) 工作流。

有关创建其他类型的安全集成(例如 SCIM)的信息,请参阅 CREATE SECURITY INTEGRATION

另请参阅:

ALTER SECURITY INTEGRATION (SAML2)DROP INTEGRATIONSHOW INTEGRATIONS

语法

CREATE [ OR REPLACE ] SECURITY INTEGRATION [ IF NOT EXISTS ]
    <name>
    TYPE = SAML2
    ENABLED = { TRUE | FALSE }
    SAML2_ISSUER = '<string_literal>'
    SAML2_SSO_URL = '<string_literal>'
    SAML2_PROVIDER = '<string_literal>'
    SAML2_X509_CERT = '<string_literal>'
    [ ALLOWED_USER_DOMAINS = ( '<string_literal>' [ , '<string_literal>' , ... ] ) ]
    [ ALLOWED_EMAIL_PATTERNS = ( '<string_literal>' [ , '<string_literal>' , ... ] ) ]
    [ SAML2_SP_INITIATED_LOGIN_PAGE_LABEL = '<string_literal>' ]
    [ SAML2_ENABLE_SP_INITIATED = TRUE | FALSE ]
    [ SAML2_SNOWFLAKE_X509_CERT = '<string_literal>' ]
    [ SAML2_SIGN_REQUEST = TRUE | FALSE ]
    [ SAML2_REQUESTED_NAMEID_FORMAT = '<string_literal>' ]
    [ SAML2_POST_LOGOUT_REDIRECT_URL = '<string_literal>' ]
    [ SAML2_FORCE_AUTHN = TRUE | FALSE ]
    [ SAML2_SNOWFLAKE_ISSUER_URL = '<string_literal>' ]
    [ SAML2_SNOWFLAKE_ACS_URL = '<string_literal>' ]
    [ COMMENT = '<string_literal>' ]
Copy

必填参数

name

字符串,指定集成的标识符(即名称);在账户中必须是唯一的。

此外,标识符必须以字母字符开头,且不能包含空格或特殊字符,除非整个标识符字符串放在双引号内(例如,"My object")。放在双引号内的标识符也区分大小写。

有关更多详细信息,请参阅 标识符要求

TYPE = SAML2

指定集成类型:

  • SAML2:在 Snowflake 和身份提供商之间创建安全界面。

ENABLED = { TRUE | FALSE }

布尔值,指定是启动集成操作还是暂停集成操作。

  • TRUE 允许集成基于管道定义中指定的参数运行。

  • FALSE 会暂停集成以进行维护。Snowflake 与第三方服务之间的任何集成都无法正常工作。

SAML2_ISSUER = 'string_literal'

包含 EntityID / IdP 的发放者的字符串。

SAML2_SSO_URL = 'string_literal'

包含 IdP SSO URL 的字符串,Snowflake(服务提供商)应对用户进行重定向,并提供 SAML AuthnRequest 消息。

SAML2_PROVIDER = 'string_literal'

描述 IdP 的字符串。

以下其中一项:OKTA、ADFS、自定义。

SAML2_X509_CERT = 'string_literal'

在一行中列出 Base64 编码的 IdP 签名证书,不带前导 -----BEGIN CERTIFICATE----- 和结束 -----END CERTIFICATE----- 标记。

可选参数

ALLOWED_USER_DOMAINS = ( 'string_literal' [ , 'string_literal' , ... ] )

可以使用 SAML2 安全集成进行身份验证的电子邮件域列表。例如 ALLOWED_USER_DOMAINS = ("example.com", "example2.com", ...)

This parameter can be used to associate a user with an IdP for configurations that use multiple IdPs. For details, see 使用多个身份提供商进行联合身份验证.

ALLOWED_EMAIL_PATTERNS = ( 'string_literal' [ , 'string_literal' , ... ] )

电子邮件地址匹配的正则表达式列表,用于通过 SAML2 安全集成进行身份验证。例如 ALLOWED_EMAIL_PATTERNS = ("^(.+dev)@example.com$", "^(.+dev)@example2.com$", ... )

This parameter can be used to associate a user with an IdP for configurations that use multiple IdPs. For details, see 使用多个身份提供商进行联合身份验证.

SAML2_SP_INITIATED_LOGIN_PAGE_LABEL = 'string_literal'

包含要在登录页上的 Log In With 按钮之后显示的标签的字符串。

SAML2_ENABLE_SP_INITIATED = { TRUE | FALSE }

指示是否在登录页上显示 Log In With 按钮的布尔值。

  • TRUE 会在登录页上显示 Log in With 按钮。

  • FALSE 不会在登录页上显示 Log in With 按钮。

SAML2_SNOWFLAKE_X509_CERT = 'string_literal'

Snowflake 生成的 Base64 编码自签名证书,用于 加密 SAML 断言,以及 发送签名 SAML 请求

您必须在 Snowflake 账户中启用其中至少一项功能(加密 SAML 断言或有签名的 SAML 响应)才能访问证书值。

SAML2_SIGN_REQUEST = { TRUE | FALSE }

指示 SAML 请求是否已签名的布尔值。

  • TRUE 允许对 SAML 请求进行签名。

  • FALSE 不允许对 SAML 请求进行签名。

SAML2_REQUESTED_NAMEID_FORMAT = 'string_literal'

SAML NameID 格式允许 Snowflake 在来自 IdP 的 SAML 断言中设置对用户识别属性的预期(即 SAML 主题),从而确保对 Snowflake 的身份验证有效。如果未指定值,Snowflake 会将身份验证请求中的 urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress 值发送到 IdP。

可选。

如果选择指定 SAML NameID 格式,请使用以下值之一:

  • urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified

  • urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress

  • urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName

  • urn:oasis:names:tc:SAML:1.1:nameid-format:WindowsDomainQualifiedName

  • urn:oasis:names:tc:SAML:2.0:nameid-format:kerberos

  • urn:oasis:names:tc:SAML:2.0:nameid-format:persistent

  • urn:oasis:names:tc:SAML:2.0:nameid-format:transient

SAML2_POST_LOGOUT_REDIRECT_URL = 'string_literal'

点击 Classic Console 中的 Log Out 按钮后,Snowflake 将用户重定向到的端点。

在重定向到指定端点时,Snowflake 会终止 Snowflake 会话。

SAML2_FORCE_AUTHN = { TRUE | FALSE }

指示在初始身份验证流程期间是否强制用户再次进行身份验证以访问 Snowflake 的布尔值。设置为 TRUE 时,Snowflake 会在从 Snowflake 向身份提供商发出的请求中将 ForceAuthn SAML 参数设置为 TRUE

  • 即使存在与身份提供商的有效会话,TRUE 值也会强制用户再次进行身份验证以访问 Snowflake。

  • FALSE 值不会强制用户再次进行身份验证以访问 Snowflake。

默认:FALSE

SAML2_SNOWFLAKE_ISSUER_URL = 'string_literal'

包含 Snowflake 服务提供商的 EntityID / Issuer 的字符串。

如果指定值不正确,Snowflake 将返回一条错误消息,指出应该使用的可接受的值。

此属性中的值必须与 IdP 中指定的 Snowflake 账户 URL 匹配。它默认为 旧版 URL,因此如果在 IdP 中定义了不同的 URL 格式,请确保在创建安全集成时适当地设置此属性。有关详细信息,请参阅 创建 SAML2 安全集成

SAML2_SNOWFLAKE_ACS_URL = 'string_literal'

包含 Snowflake 断言使用者服务 URL 的字符串,IdP 会通过此 URL 将 SAML 身份验证响应回发给 Snowflake。在 Snowflake 发起与 IdP 的 SAML SSO 操作时,将在由 Snowflake 生成的 SAML 身份验证请求中设置此属性。

如果指定值不正确,Snowflake 将返回一条错误消息,指出应该使用的可接受的值。

此属性中的值必须与 IdP 中指定的 Snowflake 账户 URL 匹配。它默认为 旧版 URL,因此如果在 IdP 中定义了不同的 URL 格式,请确保在创建安全集成时适当地设置此属性。有关详细信息,请参阅 创建 SAML2 安全集成

默认:https://<account_locator>.<region>.snowflakecomputing.cn/fed/login

COMMENT = 'string_literal'

指定集成的注释。

默认:无值

访问控制要求

用于执行此 SQL 命令的 角色 必须至少具有以下 权限

权限

对象

备注

CREATE INTEGRATION

账户

Only the ACCOUNTADMIN role has this privilege by default. The privilege can be granted to additional roles as needed.

有关创建具有指定权限集的自定义角色的说明,请参阅 创建自定义角色

有关对 安全对象 执行 SQL 操作的相应角色和权限授予的一般信息,请参阅 访问控制概述

使用说明

  • 关于元数据:

    注意

    客户应确保在使用 Snowflake 服务时,不会将个人数据(用户对象除外)、敏感数据、出口管制数据或其他受监管数据作为元数据输入。有关更多信息,请参阅 Snowflake 中的元数据字段

  • CREATE OR REPLACE <object> 语句是原子的。也就是说,当对象被替换时,旧对象将被删除,新对象将在单个事务中创建。

示例

以下示例使用两个可选设置创建 Microsoft Active Directory 联合身份验证服务 (AD FS) 安全集成:

CREATE SECURITY INTEGRATION my_idp
    TYPE = saml2
    ENABLED = true
    SAML2_ISSUER = 'https://example.com'
    SAML2_SSO_URL = 'http://myssoprovider.com'
    SAML2_PROVIDER = 'ADFS'
    SAML2_X509_CERT = 'my_x509_cert'
    SAML2_SP_INITIATED_LOGIN_PAGE_LABEL = 'my_idp'
    SAML2_ENABLE_SP_INITIATED = false
    ;
Copy

使用 DESCRIBE INTEGRATION 查看集成设置:

DESC SECURITY INTEGRATION my_idp;
Copy
语言: 中文