将 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
    
    Copy

    响应应该如下所示:

    +------------------------------------------------------------------------------+
    | 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                                                   |
    +------------------------------------------------------------------------------+
    
    Copy

将用于 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>_。

  1. 本例将 myopencatalogconnection 连接设为默认连接,请按照本例操作:

    snow connection set-default myopencatalogconnection
    
    Copy
  2. 要确认所用的用户和角色是否正确,请运行以下命令:

    snow sql -q "Select current_user(); select current_role();"
    
    Copy

    响应将返回您的 Open Catalog 用户名,CURRENT ROLE 应为 POLARIS_ACCOUNT_ADMIN。

    +----------------+
    | CURRENT_USER() |
    |----------------|
    | JSMITH        |
    +----------------+
    select current_role();
    +-----------------------+
    | CURRENT_ROLE()        |
    |-----------------------|
    | POLARIS_ACCOUNT_ADMIN |
    +-----------------------+
    
    Copy

创建安全集成

要创建安全集成,请使用 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';
    Copy

    其中:

    • <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';
    Copy

    其中:

    • <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

  1. 如需验证您要使用的安全集成是否已启用,请运行以下命令:

    snow sql -q "desc security integration <saml2-security-integration-name>;"
    
    Copy

    如果响应包含 SAML2_ENABLE_SP_INITIATED=true,则表示已启用 SAML2 安全集成。

  2. 可选:如果响应包含 SAML2_ENABLE_SP_INITIATED=false,那么若要启用它,请运行以下命令:

    snow sql -q “ALTER SECURITY INTEGRATION <saml-security-integration-name> SET ENABLED = TRUE;
    Copy

在 Open Catalog 账户中创建用户

要使 SSO 对用户有效,必须创建一个与在 IdP 中创建的用户对应的 Open Catalog 用户。

重要

要创建用户,必须使用 Snowflake CLI。

如果使用 Open Catalog UI 创建用户,则必须指定密码,以允许用户通过 SSO 或使用 Open Catalog 凭据登录。

  • 要创建用户,请运行以下命令:

    snow sql -q "CREATE USER \"<login-name>\" EMAIL='<email>';"
    
    Copy

    其中:

    • <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';"
    
    Copy
  • 要确认正确设置用户,请运行以下命令:

    snow sql -q "show users;"
    
    Copy

    在响应中,LOGIN_NAME 列中的值必须与 Auth0 中的 电子邮件地址 或 Okta 中的 用户名 匹配。

语言: 中文