Microsoft Entra ID を使用した自動ユーザー プロビジョニング用に Snowflake を構成する

この記事では、Snowflake に対してユーザーとグループを自動的にプロビジョニングおよびプロビジョニング解除するように Microsoft Entra ID を構成するために Snowflake と Microsoft Entra ID で実行する手順について説明します。 このサービスが実行する内容、しくみ、よく寄せられる質問の重要な詳細については、Microsoft Entra ID での SaaS アプリ ユーザー プロビジョニングの自動化に関する記事を参照してください。

サポートされている機能

  • Snowflake でユーザーを作成する
  • アクセスが不要になったユーザーを Snowflake で削除する
  • Microsoft Entra ID と Snowflake の間でユーザー属性の同期を維持します。
  • Snowflake でグループとグループメンバーシップをプロビジョニングする
  • Snowflake へのシングル サインオンを許可する (推奨)
  • 有効期間が長いベアラー トークン認証がサポートされています。

[前提条件]

この記事で説明するシナリオでは、次の前提条件が既にあることを前提としています。

手順 1: プロビジョニングデプロイメントを計画する

  1. プロビジョニング サービスのしくみを確認します。
  2. プロビジョニングのスコープに含めるユーザーを決定します。
  3. Microsoft Entra ID と Snowflake の間でマップするデータを決定します。

手順 2: Microsoft Entra ID を使ったプロビジョニングをサポートするように Snowflake を構成する

Microsoft Entra ID を使った自動ユーザー プロビジョニング用に Snowflake を構成する前に、Snowflake でクロスドメイン ID 管理システム (SCIM) プロビジョニングを有効にする必要があります。

  1. 管理者として Snowflake にサインインし、Snowflake ワークシート インターフェイスまたは SnowSQL から次を実行します。

    use role accountadmin;
    
     create role if not exists aad_provisioner;
     grant create user on account to role aad_provisioner;
     grant create role on account to role aad_provisioner;
    grant role aad_provisioner to role accountadmin;
     create or replace security integration aad_provisioning
         type = scim
         scim_client = 'azure'
         run_as_role = 'AAD_PROVISIONER';
     select system$generate_scim_access_token('AAD_PROVISIONING');
    
  2. ACCOUNTADMIN ロールを使用します。

    SCIM アクセス トークンが強調表示された、Snowflake UI のワークシートのスクリーンショット。

  3. カスタム ロール AAD_PROVISIONER を作成します。 Microsoft Entra ID によって Snowflake に作成されたすべてのユーザーとロールは、スコープが絞り込まれた AAD_PROVISIONER ロールによって所有されています。

    カスタム ロールを示すスクリーンショット。

  4. ACCOUNTADMIN ロールで、AAD_PROVISIONER カスタム ロールを使用してセキュリティ統合を作成します。

    セキュリティ統合を示すスクリーンショット。

  5. 認証トークンを作成してクリップボードにコピーし、後で使用できるように安全に保存します。 SCIM REST API 要求ごとにこのトークンを使用し、要求ヘッダーに配置します。 アクセス トークンは 6 か月後に期限切れになり、このステートメントで新しいアクセス トークンを生成できます。

    トークンの生成を示すスクリーンショット。

Microsoft Entra アプリケーション ギャラリーから Snowflake を追加して、Snowflake へのプロビジョニングの管理を開始します。 シングル サインオン (SSO) のために Snowflake を以前に設定している場合は、同じアプリケーションを使用できます。 ただし、最初に統合をテストするときは、別のアプリを作成することをお勧めします。 ギャラリーからアプリケーションを追加する方法の詳細をご覧ください

手順 4: プロビジョニングのスコープに含まれるユーザーを定義する

Microsoft Entra プロビジョニング サービスを使用すると、アプリケーションへの割り当てに基づいて、またはユーザーまたはグループの属性に基づいてプロビジョニングされるユーザーをスコープできます。 割り当てに基づいてアプリにプロビジョニングされるユーザーのスコープを設定する場合は、 手順を使用してユーザーとグループをアプリケーションに割り当てることができます。 ユーザーまたはグループの属性のみに基づいてプロビジョニングする対象を決定する場合、スコープフィルターを使用できます。

  • 小規模から始めます。 すべてのユーザーとグループにロールアウトする前に、少数のユーザーとグループでテストします。 プロビジョニングのスコープが割り当てられたユーザーとグループに設定されている場合は、1 つまたは 2 つのユーザーまたはグループをアプリに割り当てることで、これを制御できます。 スコープがすべてのユーザーとグループに設定されている場合は、 属性ベースのスコープ フィルターを指定できます。

  • 追加のロールが必要な場合は、 アプリケーション マニフェストを更新 して新しいロールを追加できます。

手順 5:Snowflake への自動ユーザー プロビジョニングを構成する

このセクションでは、Snowflake でユーザーとグループを作成、更新、無効化するように Microsoft Entra プロビジョニング サービスを構成する手順について説明します。 Microsoft Entra ID では、ユーザーとグループの割り当てに基づいて構成を行うことができます。

Microsoft Entra ID で Snowflake の自動ユーザー プロビジョニングを構成するには、次の操作を実行します。

  1. クラウド アプリケーション管理者以上として Microsoft Entra 管理センターにサインインします。

  2. Entra ID>エンタープライズアプリケーションに移動します。

    [エンタープライズ アプリケーション] ウィンドウを示すスクリーンショット。

  3. アプリケーションの一覧で、 [Snowflake] を選択します。

    アプリケーションの一覧を示すスクリーンショット。

  4. [プロビジョニング] タブを選択します。

    [プロビジョニング] オプションが強調表示されている [管理] オプションのスクリーンショット。

  5. [ + 新しい構成] を選択します。

    [プロビジョニング] タブの [自動] のスクリーンショット。

  6. [管理者資格情報] セクションの [テナント URL] ボックスと [シークレット トークン] ボックスに、先ほど取得した SCIM 2.0 ベース URL と認証トークンをそれぞれ入力します。

    Snowflake SCIM エンドポイントは、/scim/v2/ が追加された Snowflake アカウント URL で構成されます。 たとえば、Snowflake アカウント名が acme で、Snowflake アカウントが east-us-2 Azure リージョンにある場合、テナント URL の値は https://acme.east-us-2.azure.snowflakecomputing.com/scim/v2 になります。

  7. [ テスト接続] を選択して、Microsoft Entra ID が Snowflake に接続できることを確認します。 接続に失敗した場合は、Snowflake アカウントに必要な管理者アクセス許可があることを確認してから、もう一度やり直してください。

    プロビジョニング テスト接続のスクリーンショット。

  8. [ 作成] を選択して構成を作成します。

  9. [概要] ページで [プロパティ] を選択します。

  10. [編集] アイコンを選択してプロパティを編集します。 通知メールを有効にし、検疫メールを受信する電子メールを提供します。 誤削除防止を有効にします。 [適用] を選択して変更を保存します。

    プロビジョニングプロパティのスクリーンショット。

  11. 左側のパネルで [属性マッピング ] を選択し、ユーザーを選択 します

  12. [属性マッピング] セクションで、Microsoft Entra ID から Snowflake に同期されるユーザー属性を確認します。 [照合] プロパティとして選択されている属性は、更新処理で Snowflake のユーザー アカウントとの照合に使用されます。 [保存] ボタンをクリックして変更をコミットします。

    特性 タイプ
    活動中 ブール値
    displayName
    emails[type eq "work"].value
    ユーザー名
    name.givenName
    name.familyName
    externalId
    urn:ietf:params:scim:schemas:extension:2.0:User:type ユーザー管理 - Snowflake ドキュメント

    グループ表示名の編集がロック解除されました。 以前は、Snowflake のグループの表示名を変更できなかったので、ユーザーがマッピングを編集することができませんでした。 編集可能になりました。

    Snowflake では、SCIM プロビジョニング中にカスタム拡張機能ユーザー属性がサポートされました。

    • DEFAULT_ROLE
    • DEFAULT_WAREHOUSE
    • デフォルト_セカンダリー_ロール
    • SNOWFLAKE NAME AND LOGIN_NAME FIELDS TO BE DIFFERENT

    Microsoft Entra SCIM ユーザーのプロビジョニングで Snowflake カスタム拡張機能属性を設定する方法についてはこちらで説明されています。

  13. [グループ] を選びます。

  14. [属性マッピング] セクションで、Microsoft Entra ID から Snowflake に同期されるグループ属性を確認します。 [照合] プロパティとして選択されている属性は、更新処理で Snowflake のグループとの照合に使用されます。 [保存] ボタンをクリックして変更をコミットします。

    特性 タイプ
    displayName
    members リファレンス
  15. スコープ フィルターを構成するには、スコープ フィルターに関する記事に記載されている次の手順 参照してください。

  16. オンデマンド プロビジョニングを使用して、少数のユーザーとの同期を検証してから、組織内でより広範にデプロイします。

  17. プロビジョニングの準備ができたら、[概要] ページから [プロビジョニングの開始] を選択します。

手順 6: デプロイを監視する

プロビジョニングを構成したら、次のリソースを使用してデプロイを監視します。

  1. プロビジョニング ログを使用して、どのユーザーが正常にプロビジョニングされたか、または正常にプロビジョニングされなかったかを判断する
  2. 進行状況バーを確認して、プロビジョニング サイクルの状態と完了までの近さを確認します
  3. プロビジョニング構成が異常な状態にあると思われる場合、アプリケーションは検疫に入ります。 検疫状態についての詳細は、アプリケーションプロビジョニングの隔離状態に関する記事をご覧ください。

コネクタの制限事項

Snowflake で生成される SCIM トークンの有効期間は 6 か月です。 プロビジョニングの同期を引き続き機能させるには、有効期限が切れる前にこれらのトークンを更新する必要があることに注意してください。

グループの PIM を使用した Just-In-Time (JIT) アプリケーション アクセス

グループのPrivileged Identity Management (PIM) を使用すると、Snowflake 内のグループへの Just-In-Time アクセスを提供し、Snowflake の特権グループに永続的にアクセスできるユーザーの数を減らすことができます。

シングル サインオン (SSO) とプロビジョニング用にエンタープライズ アプリケーションを構成する

Snowflake で永続的な管理者以外のアクセスを設定するには、次の手順を実行します。

  1. Snowflake をテナントに追加し、このチュートリアルの前の手順で説明したようにプロビジョニング用に構成し、プロビジョニングを開始します。
  2. Snowflake のシングル サインオン を構成します。
  3. すべてのユーザーがアプリケーションにアクセスできるようにする グループ を作成します。
  4. Snowflake アプリケーションにグループを割り当てます。
  5. テスト ユーザーを、すべてのユーザー アクセス用に作成したグループの直接メンバーとして割り当てるか、アクセス パッケージを使用してグループへのアクセスを提供します。 このグループは、Snowflake で永続的な管理者以外のアクセスを提供します。

グループに対して PIM を有効にする

Just-In-Time 管理者アクセス権を付与するには、次の手順を実行します。

  1. Microsoft Entra IDで 2 つ目のグループを作成します。 このグループは、Snowflake の管理者アクセス許可へのアクセスを提供します。
  2. グループを Microsoft Entra PIM の管理下に置きます。
  3. ロールがメンバーに設定されている PIM のグループの対象としてテスト ユーザーを割り当てます。
  4. 2 番目のグループを Snowflake アプリケーションに割り当てます。
  5. オンデマンド プロビジョニングを使用して、Snowflake にグループを作成します。
  6. Snowflake にサインインし、2 番目のグループに管理者タスクを実行するために必要なアクセス許可を割り当てます。

PIM でグループの対象となったエンド ユーザーは、グループ メンバーシップをアクティブ化することで、Snowflake 内のグループへの JIT アクセスを取得できるようになりました。

重要な考慮事項

  • ユーザーがアプリケーションにプロビジョニングされるまでにかかる時間
    • Microsoft Entra ID において、Privileged Identity Management (PIM) を使用してグループ メンバーシップをアクティブ化することなく、ユーザーをグループに追加する場合:
      • グループ メンバーシップは、次の同期サイクルの間に、アプリケーションでプロビジョニングされます。 同期サイクルは 40 分ごとに実行されます。
    • ユーザーが Microsoft Entra ID PIM でグループ メンバーシップをアクティブ化する場合:
      • グループ メンバーシップがプロビジョニングされるまでには 2~10 分かかります。 要求量が多い期間中、要求は 10 秒あたり 5 つの要求の割合で調整されます。
      • 特定のアプリケーションのグループ メンバーシップをアクティブにしようとするユーザーのうち、10 秒の期間内の最初の 5 人については、2 から 10 分以内にアプリケーションでグループ メンバーシップがプロビジョニングされます。
      • 特定のアプリケーションのグループ メンバーシップをアクティブにしようとするユーザーのうち、10 秒の期間内の 6 人目以降については、次の同期サイクルの間にアプリケーションでグループ メンバーシップがプロビジョニングされます。 同期サイクルは 40 分ごとに実行されます。 エンタープライズアプリケーションごとにスロットリングの制限が設けられています。
  • ユーザーが Snowflake で必要なグループにアクセスできない場合は、「トラブルシューティングの ヒント 」セクション、PIM ログ、プロビジョニング ログを確認して、グループ メンバーシップが正常に更新されたことを確認します。 ターゲット アプリケーションの設計方法によっては、グループ メンバーシップがアプリケーションで有効になるのに余分な時間がかかる場合があります。
  • Azure Monitor を使用して、エラーのアラートを作成できます。
  • 非アクティブ化は、通常の増分サイクル中に行われます。 オンデマンド プロビジョニングによってすぐには処理されません。

トラブルシューティングのヒント

現在、Microsoft Entra プロビジョニング サービスは特定の IP 範囲で動作します。 必要に応じて、他の IP 範囲を制限し、これらの特定の IP 範囲をアプリケーションの許可リストに追加できます。 この手法により、Microsoft Entra プロビジョニング サービスからアプリケーションへのトラフィック フローが可能になります。

変更ログ

  • 2020 年 7 月 21 日: (アクティブな属性を使用して) すべてのユーザーに対して論理的な削除を有効化。
  • 2022 年 10 月 12 日: Snowflake SCIM 構成を更新しました。

その他のリソース