将 Snowflake Open Catalog 配置为使用 SSO¶
本主题介绍如何配置 Snowflake Open Catalog,以使用基于 SAML 的 SSO。
在配置 Snowflake Open Catalog 以使用 SSO 之前,您必须为 Open Catalog 配置 IdP。有关说明,请参阅以下主题:
准备工作¶
要为 SSO 设置 Snowflake Open Catalog,您需要完整的 Open Catalog 账户标识符,其中包括您的 Snowflake 组织名称和 Open Catalog 账户名称;例如:<orgname>.<my-snowflake-open-catalog-account-name>
。
To find your Snowflake organization name (
<orgname>
), see 查找账户的组织和账户名称.要查找您的 Snowflake Open Catalog 账户名称 (
<my-snowflake-open-catalog-account-name>
),请参阅 :doc:/user-guide/opencatalog/find-account-name
。
为 Open Catalog 创建一个 Snowflake CLI 连接¶
要配置 Snowflake Open Catalog 以使用 SSO,您需要为 Open Catalog 建立 Snowflake CLI 连接。请按照下列步骤创建此连接。如果尚未安装 Snowflake CLI,请参阅 安装 Snowflake CLI。
重要
要创建此连接,您必须是具有服务管理员权限的 Open Catalog 用户。有关服务管理员权限的信息,请参阅 服务管理员角色。
为 Snowflake Open Catalog 添加 Snowflake CLI 连接¶
为要启用 SSO 的 Snowflake Open Catalog 账户添加连接。
Add a connection with the following values. For all other parameters, press Enter to skip specifying a value for the parameter.
连接配置参数
值
Name for this connection
指定连接名称,例如
myopencatalogconnection
。Account name
按如下格式指定您的 Snowflake 组织名称,后接您的 Open Catalog 账户名称:
<orgname>-<my-snowflake-open-catalog-account-name>
。例如
ABCDEFG-MYACCOUNT1
。要查找这些名称,请参阅
准备工作
_。Username
指定您的 Open Catalog 用户名;例如,
jsmith
。Password [optional]
为 Open Catalog 创建连接时,该参数 不是 可选参数。
输入您的 Open Catalog 密码;例如,
MyPassword123456789
。Role for the connection [optional]
为 Open Catalog 创建连接时,该参数 不是 可选参数。
您必须输入
POLARIS_ACCOUNT_ADMIN
测试 Snowflake CLI 连接¶
要测试 CLI 连接,请按照本例测试
myopencatalogconnection
的连接:snow connection test -c myopencatalogconnection
响应应该如下所示:
+------------------------------------------------------------------------------+ | key | value | |----------------------------+-------------------------------------------------| | Connection name | myopencatalogconnection | | Status | OK | | Host | ABCDEFG-MYACCOUNT1.snowflakecomputing.cn | | Account | ABCDEFG-MYACCOUNT1 | | User | jsmith | | Role | POLARIS_ACCOUNT_ADMIN | | Database | not set | | Warehouse | not set | +------------------------------------------------------------------------------+
将用于 Snowflake Open Catalog 的 Snowflake CLI 连接设置为默认连接¶
To ensure that the connection you're using always has the required POLARIS_ACCOUNT_ADMIN role granted to it, you can set the Snowflake CLI connection you created for Open Catalog as the default connection. For more information about the default connection, see 设置默认连接.
本例将
myopencatalogconnection
连接设为默认连接,请按照本例操作:snow connection set-default myopencatalogconnection
要确认所用的用户和角色是否正确,请运行以下命令:
snow sql -q "Select current_user(); select current_role();"
响应将返回您的 Open Catalog 用户名,CURRENT ROLE 应为 POLARIS_ACCOUNT_ADMIN。
+----------------+ | CURRENT_USER() | |----------------| | JSMITH | +----------------+ select current_role(); +-----------------------+ | CURRENT_ROLE() | |-----------------------| | POLARIS_ACCOUNT_ADMIN | +-----------------------+
创建安全集成¶
要创建安全集成,请使用 Snowflake CREATE 连接运行 SECURITY INTEGRATION CLI 命令。您可以创建一个 Auth0 安全集成 或一个 Okta 安全集成。
备注
如果您设置的默认 Snowflake CLI 连接没有被授予 POLARIS_ACCOUNT_ADMIN 角色,则必须在命令中包含以下语句:USE ROLE POLARIS_ACCOUNT_ADMIN
。
Auth0 安全集成¶
要为 Auth0 创建 SAML 安全集成,请在 Snowflake CLI 中运行以下命令:
snow sql -q “create security integration <Name> type = saml2 enabled = true saml2_issuer = 'urn:<Auth0 Domain>' saml2_sso_url = '<SAML Protocol URL>' saml2_provider = 'Custom' saml2_x509_cert='<Certificate from Auth0>' saml2_sp_initiated_login_page_label = 'Auth0' saml2_enable_sp_initiated = true saml2_snowflake_acs_url = 'https://<orgname>-<my-snowflake-open-catalog-account-name>.snowflakecomputing.cn/fed/login' saml2_snowflake_issuer_url = 'https://<orgname>-<my-snowflake-open-catalog-account-name>.snowflakecomputing.cn' saml2_requested_nameid_format = 'urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress';”
其中:
<Name>
指定安全集成的标识符;对于您的账户必须唯一。<Auth0 Domain>
在 Auth0 控制台中复制。要查找此值,请在 Auth0 中,导航至 Applications > Applications > Snowflake Open Catalog application > Settings > Basic Information: Domain 字段。<SAML Protocol URL>
在 Auth0 控制台中复制。要查找此值,请在 Auth0 中导航至 Applications > Applications > Snowflake Open Catalog application > Settings > Advanced settings > Endpoints 选项卡:SAML Protocol URL 字段。<Certificate from Auth0>
在 Auth0 控制台中复制。要查找此值,请在 Auth0 中导航至 Applications > Applications > Snowflake Open Catalog application > Settings > Advanced Settings > Certificate 选项卡:Signing Certificates 字段。Applications > Applications > Snowflake Open Catalog application > Settings > Advanced Settings > Certificate 选项卡:Signing Certificates 字段。复制 <BEGIN CERTIFICATE> 与 <END CERTIFICATE> 之间的值。<orgname>
是您的 Snowflake 组织的名称。要查找此名称,请参阅 准备工作。<my-snowflake-open-catalog-account-name>
是您的 Snowflake Open Catalog 账户名称。要查找此名称,请参阅 准备工作。
Okta 安全集成¶
要为 Okta 创建 SAML 安全集成,请在 Snowflake CLI 中运行以下命令:
snow sql -q “CREATE SECURITY INTEGRATION <Name> TYPE = SAML2 ENABLED = TRUE SAML2_ISSUER = '<ENTITY ID>' SAML2_SSO_URL = '<IDP SSO URL>' SAML2_PROVIDER = 'OKTA' SAML2_X509_CERT='<Authentication Certificate>' SAML2_SP_INITIATED_LOGIN_PAGE_LABEL = 'OKTA SSO' SAML2_ENABLE_SP_INITIATED = TRUE SAML2_SNOWFLAKE_ACS_URL = 'https://<orgname>-<my-snowflake-open-catalog-account-name>.snowflakecomputing.cn/fed/login' SAML2_SNOWFLAKE_ISSUER_URL = 'https://<orgname>-<my-snowflake-open-catalog-account-name>.snowflakecomputing.cn';”
其中:
<Name>
指定安全集成的标识符;对于您的账户必须唯一。<ENTITY ID>
是您[在 Okta 中创建应用程序](./sso-configure-idp.md#create-an-application-in-okta-for-your-snowflake-open-catalog-account) 时复制的实体 ID 值。<IDP SSO URL>
是您在 Okta 中创建应用程序时复制的 IDP SSO URL 值。<Authentication Certificate>
是您在 Okta 中创建应用程序时复制的 IDP 身份验证证书值。<orgname>
是您的 Snowflake 组织的名称。要查找此名称,请参阅 准备工作。<my-snowflake-open-catalog-account-name>
是您的 Snowflake Open Catalog 账户名称。要查找此名称,请参阅 准备工作。
验证安全集成¶
一次只能使用一个安全集成,而且必须启用您要使用的集成。
备注
如果您设置的默认 Snowflake CLI 连接没有被授予 POLARIS_ACCOUNT_ADMIN 角色,则必须在命令中包含以下语句:USE ROLE POLARIS_ACCOUNT_ADMIN
。
如需验证您要使用的安全集成是否已启用,请运行以下命令:
snow sql -q "desc security integration <saml2-security-integration-name>;"
如果响应包含 SAML2_ENABLE_SP_INITIATED=true,则表示已启用 SAML2 安全集成。
可选:如果响应包含 SAML2_ENABLE_SP_INITIATED=false,那么若要启用它,请运行以下命令:
snow sql -q “ALTER SECURITY INTEGRATION <saml-security-integration-name> SET ENABLED = TRUE;”
在 Open Catalog 账户中创建用户¶
要使 SSO 对用户有效,必须创建一个与在 IdP 中创建的用户对应的 Open Catalog 用户。
重要
要创建用户,必须使用 Snowflake CLI。
如果使用 Open Catalog UI 创建用户,则必须指定密码,以允许用户通过 SSO 或使用 Open Catalog 凭据登录。
要创建用户,请运行以下命令:
snow sql -q "CREATE USER \"<login-name>\" EMAIL='<email>';"
其中:
<login-name>
必须与以下项之一匹配:您在 Auth0 中为用户指定的 电子邮件地址。
您在 Okta 中为用户指定的 用户名。
<email>
is the user's email address. If you're using Auth0, this value will match <login-name>。
例如:
snow sql -q "CREATE USER \"testuser123@example.com\" EMAIL='testuser123@example.com';"
要确认正确设置用户,请运行以下命令:
snow sql -q "show users;"
在响应中,LOGIN_NAME 列中的值必须与 Auth0 中的 电子邮件地址 或 Okta 中的 用户名 匹配。