SSO を使用するようSnowflake Open Catalogを構成する

このトピックでは、 SAML ベースの SSO を使用するようにSnowflake Open Catalogを構成する方法を説明します。

Snowflake Open Catalogを構成して SSO を使用する前に、Open Catalog用に IdP を構成する必要があります。手順については、以下のトピックをご参照ください。

始める前に

SSO のためにSnowflake Open Catalogを設定には、Snowflake組織名とOpen Catalogアカウント名を含む、完全な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 を押して、パラメーターの値の指定をスキップします。

    接続構成パラメーター

    この接続の名前

    接続の名前を指定します(例: myopencatalogconnection)。

    アカウント名

    Snowflake組織名の後にOpen Catalogのアカウント名をこの形式で指定します。

    <orgname>-<my-snowflake-open-catalog-account-name>

    例えば、 ABCDEFG-MYACCOUNT1 です。

    これらの名前を調べるには、 はじめに_ をご参照ください。

    ユーザー名

    Open Catalogのユーザー名を指定します(例: jsmith)。

    パスワード [任意]

    Open Catalogの接続を作成する場合、このパラメーターはオプション ではありません

    Open Catalogのパスワードを入力してください(例: MyPassword123456789)。

    接続のロール [任意]

    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.com                 |
    | 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.com/fed/login'
        saml2_snowflake_issuer_url = 'https://<orgname>-<my-snowflake-open-catalog-account-name>.snowflakecomputing.com'
        saml2_requested_nameid_format = 'urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress';
    Copy

    条件:

    • <Name> は、セキュリティ統合の識別子を指定します。アカウントに対して一意である必要があります。

    • <Auth0 Domain> はAuth0コンソールにコピーされます。この値を見つけるには、Auth0でアプリケーション> アプリケーション > Snowflake Open Catalogアプリケーション > 設定 > 基本情報: ドメイン フィールドに移動します。

    • <SAML プロトコル URL> が、Auth0コンソールにコピーされます。この値を見つけるには、Auth0でアプリケーション > アプリケーション > Snowflake Open Catalogアプリケーション > 設定 > 詳細設定 > エンドポイントタブ: SAML プロトコル URL フィールドに移動します。

    • <Auth0からの証明書> がAuth0コンソールにコピーされます。この値を見つけるには、Auth0でアプリケーション > アプリケーション > Snowflake Open Catalogアプリケーション > 設定 >詳細設定 > 証明書タブ: 証明書の署名 にフィールドに移動します。<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.com/fed/login'
        SAML2_SNOWFLAKE_ISSUER_URL = 'https://<orgname>-<my-snowflake-open-catalog-account-name>.snowflakecomputing.com';
    Copy

    条件:

    • <Name> は、セキュリティ統合の識別子を指定します。アカウントに対して一意である必要があります。

    • <ENTITY ID> は、 Oktaでアプリケーションを作成した際にコピーしたエンティティ ID です。

    • <IDP SSO URL> はOktaでアプリケーションを作成する際にコピーした IDP SSO URL の値です。

    • <認証証明書> は、Oktaでアプリケーションを作成する際にコピーした IDP 認証証明書の値です。

    • <orgname> はSnowflakeの組織名です。この名前を見つけるには、 始める前にをご参照ください。

    • <my-snowflake-open-catalog-account-name> はSnowflake Open Catalogのアカウント名です。この名前を見つけるには、 始める前にをご参照ください。

セキュリティ統合の検証

一度に使用できるセキュリティ統合は1つだけで、使用する統合は有効になっている必要があります。

注釈

設定した既定の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> はユーザーのメールアドレスです。Auth0を使用している場合、この値は<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の ユーザー名 と一致する必要があります。