フェデレーション認証に複数のIDプロバイダーを使用する

ユーザーが複数のIDプロバイダー(IdPs)で認証できるようにSnowflakeを構成できます。

複数の IdPs を使用するフェデレート環境の実装は、次の手順で構成されます。

  1. 識別子優先ログインフローを有効にする (このトピック内)。

  2. 各IDプロバイダーを構成する

  3. IdP ごとに1つずつ、 複数の SAML セキュリティ統合を作成する

  4. IdPs とユーザーを関連付ける (このトピック内)。

注釈

複数の IdPs を使用する環境を実装するときは、次の点に注意してください。

  • 各 IdP には、対応する SAML セキュリティ統合が必要です。非推奨の SAML_IDENTITY_PROVIDER パラメーターを使用する既存の単一 IdP 環境がある場合は、 SYSTEM$MIGRATE_SAML_IDP_REGISTRATION 関数を使用して SAML セキュリティ統合に移行する必要があります。

  • 現在、複数のIDプロバイダーの使用をサポートしているのは、Snowflakeドライバーのサブセットのみです。これらのドライバーには、 JDBC、 ODBC、Pythonが含まれます。

識別子優先ログインを有効にする

アカウントのフェデレーション環境で複数の IdPs が使用されている場合、Snowflakeはユーザーに認証オプションを提示する 前に どの IdPs がユーザーに関連付けられているかを判別できる必要があります。このフローでは、Snowflakeはユーザーにメールアドレスまたはユーザー名のみの入力を要求し、ユーザーを特定した後に認証方法を表示します。認証オプションとして表示されるのは、ユーザーに関連付けられた IdPs だけです。

複数の IdPs を使用する場合は、識別子優先ログインフローを有効にする必要があります。識別子優先ログインを有効にするには、 ENABLE_IDENTIFIER_FIRST_LOGIN パラメーターを TRUE に設定します:

  1. Snowsight にサインインします。

  2. ナビゲーションメニューで Projects » Worksheets を選択します。

  3. 次の SQL ステートメントを実行します:

    USE ROLE ACCOUNTADMIN;
    ALTER ACCOUNT SET ENABLE_IDENTIFIER_FIRST_LOGIN = true;
    
    Copy

識別子優先のログインフローの詳細については、 識別子優先ログイン を参照ください。

ユーザーを IdPs と関連付ける

複数の IdPs がある環境では、ユーザーと IdP を関連付ける方法を選択できます。IdP に関連付けられたセキュリティ統合の使用、認証ポリシーの使用、または2つの方法を組み合わせて使用することもできます。

セキュリティ統合:

各 IdP に関連する SAML2 セキュリティ統合の ALLOWED_USER_DOMAINSALLOWED_EMAIL_PATTERNS プロパティを使用します。この構成では、 IdP が認証オプションとして表示されるのは、 EMAIL がセキュリティ統合のメールアドレスドメインまたはパターンに一致する場合のみです。

認証ポリシー:

認証ポリシーSECURITY_INTEGRATIONS プロパティを使用して、ユーザーが使用できるセキュリティ統合を指定します。この構成では、認証ポリシーはアカウント全体または個々のユーザーに割り当てられます。ユーザーは、認証ポリシーで指定されているセキュリティ統合に関連付けられた IdPs でのみ認証できます。

ユーザーが使用を許可されているIDプロバイダーのみを表示する場合は、複数の認証ポリシーを作成し、適切なポリシーをユーザーに割り当てます。

認証ポリシーを使って複数の IdPs を実装する例については、 アカウントで複数のIDプロバイダーからの認証を許可する をご参照ください。

組み合わせ:

セキュリティ統合と認証ポリシーの方法を組み合わせて、複数の IdPs がある環境でのユーザーの認証方法をさらに細かく調整できます。

両方の方法を使用する場合、Snowflakeはまず、ユーザーのログインを管理する認証ポリシーに関連付けられているセキュリティ統合を評価します。Snowflakeがセキュリティ統合を識別すると、ユーザの EMAILALLOWED_USER_DOMAINS および ALLOWED_EMAIL_PATTERNS プロパティに基づいて、いずれかの統合に一致します。Snowflakeは、ユーザーの EMAIL に一致するセキュリティ統合の IdP オプションのみを表示します。

同じ発行者 ID を使用する Microsoft Entra ID で、複数の SAML2 セキュリティ統合を使用します。

このセクションでは、Snowflakeと Microsoft Entra ID を設定して、公開または非公開の発行者 URL の両方を使用して、 SSO からユーザを認証できるようにする手順を説明します。このエクスペリエンスを実装するために、 Microsoft Entra ID で2つの異なる SAML2 セキュリティ統合を使用することができます。各発行者 URL に異なるアプリケーション ID を付加することで、 Microsoft Entra ID を設定し、パブリックとプライベートの発行者 URLs を区別することができます。

続行する前に、 識別子優先ログインフロー を有効にする必要があります。

同じ発行者 ID を使用して、 Microsoft Entra ID で複数の SAML2 セキュリティ統合を使用する方法については、以下のセクションに従ってください:

Microsoft Entra Identifier URLs にアプリケーション IDs を付加するように Microsoft Entra ID を設定します

  1. Microsoft Azure にログインします。

  2. Azure services の下で、 Microsoft Entra ID を選択します。

  3. 左側のナビゲーションで Manage » Enterprise applications を選択します。

  4. アプリケーションを選択します。

  5. 左側のナビゲーションで Manage » Single sign-on を選択します。

  6. Attributes & Claims で、 Edit を選択します。

  7. Additional claims の下で、 Advanced settings を展開します。

  8. Advanced SAML claims options の横で、 Edit を選択します。

    右側のパネルが表示されます。

  9. Append application ID to issuer を選択します。

ログイン URL 、Microsoft Entraの識別子、およびアプリケーション ID を収集します

  1. Microsoft Entra ID を設定していることを確認してください。

  2. 左側のナビゲーションで Manage » Single sign-on を選択します。

  3. Set up <your application name> の下で、以下の値を保存しておきます:

    • Login URL

    • Microsoft Entra Identifier

  4. 左側のナビゲーションで、 Overview を選択します

  5. Properties の下で、 Application ID を保存しておきます。

  6. 追加で使用する場合は、これを繰り返します。

パブリックおよびプライベート SAML2 セキュリティの統合を作成します

  1. Microsoft Entra ID を設定していることを確認してください。

  2. ログイン URL 、Microsoft Entra識別子、およびアプリケーション ID を収集したことを確認してください。

  3. Snowsight にサインインします。

  4. ナビゲーションメニューで Projects » Worksheets を選択します。

  5. CREATE INTEGRATION 権限を持つロールに切り替えます。

  6. 以下の SQL ステートメントを実行して、 SAML2 セキュリティ統合を作成します:

    CREATE OR REPLACE SECURITY INTEGRATION entra_id_public
      TYPE = SAML2
      ENABLED = TRUE
      SAML2_ISSUER = '<microsoft_entra_identifier>/<application_id>'
      SAML2_SSO_URL = '<login_url>'
      SAML2_PROVIDER = 'CUSTOM'
      SAML2_X509_CERT = 'MIIC...TAs/'
      SAML2_SP_INITIATED_LOGIN_PAGE_LABEL = 'Entra ID SSO Public'
      SAML2_ENABLE_SP_INITIATED = TRUE
      SAML2_SNOWFLAKE_ACS_URL = 'https://<organization_name>-<account_name>.snowflakecomputing.com/fed/login'
      SAML2_SNOWFLAKE_ISSUER_URL = 'https://<organization_name>-<account_name>.snowflakecomputing.com';
    
    Copy

    以下のプレースホルダーは、 先ほど集めた値に置き換えられています:

    プレースホルダー

    値の例

    < login_url >

    https://login.microsoftonline.com/91ccae45-d439-xxxx-xxxx-e22c06bfe4f9/saml2

    < microsoft_entra_identifier >

    https://sts.windows.net/91ccae45-d439-xxxx-xxxx-e22c06bfe4f9

    < application_id >

    456xyz00-4567-4567-4567-4567xyz5678

    <組織名>

    EXAMPLE-USER12_AA12

    <アカウント名>

    MSMITH

  7. SAML2_ISSUER パラメータのMicrosoft Entra Identifierにプライベートアプリケーション ID を追加して、別の SAML2 セキュリティ統合を作成します。