将 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>
。
要查找您的 Snowflake 组织名称 (
<orgname>
),请参阅查找账户的组织和账户名称 <https://docs.snowflake.com/en/user-guide/admin-account-identifier.html#label-account-name-find>
_。要查找您的 Snowflake Open Catalog 账户名称 (
<my-snowflake-open-catalog-account-name>
),请参阅 :doc:/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 账户添加连接。
添加一个连接 <https://docs.snowflake.com/en/developer-guide/snowflake-cli/connecting/configure-connections#add-a-connection>
_,使用如下值。对于所有其他参数,按 Enter 键跳过指定参数值。连接配置参数
值
Name for this connection
指定连接名称,例如
myopencatalogconnection
。Account name
按如下格式指定您的 Snowflake 组织名称,后接您的 Open Catalog 账户名称:
<orgname>-<my-snowflake-open-catalog-account-name>
。例如
ABCDEFG-MYACCOUNT1
。要查找这些名称,请参阅 :ref:
label-before_you_begin
。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 连接设置为默认连接¶
为确保您使用的连接始终具有所需的 POLARIS_ACCOUNT_ADMIN 角色,您可以将为 Open Catalog 创建的 Snowflake CLI 连接设置为默认连接。有关默认连接的更多信息,请参阅 设置默认连接 <https://docs.snowflake.com/en/developer-guide/snowflake-cli/connecting/configure-connections#set-the-default-connection>
_。
本例将
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 CLI 连接运行 CREATE SECURITY INTEGRATION 命令。您可以创建一个 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 字段。复制 <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 中的 用户名 匹配。