Azure Logic Apps を使用した API 駆動型インバウンド プロビジョニング

このチュートリアルでは、Azure Logic Apps ワークフローを使用して Microsoft Entra ID の API 駆動型インバウンド プロビジョニングを実装する方法について説明します。 このチュートリアルの手順を使用して、人事データを含む CSV ファイルを一括要求ペイロードに変換して、Microsoft Entra のプロビジョニング /bulkUpload API エンドポイントに送信できます。 この記事では、同じ統合パターンがレコードの任意のシステムでどのように使用できるかに関するガイダンスも提供します。

統合シナリオ

業務要件

お客様のレコードのシステムでは、ワーカー データを含む CSV ファイルのエクスポートが定期的に生成されます。 CSV ファイルからデータを読み取り、ターゲット ディレクトリにユーザー アカウントを自動的にプロビジョニングする統合を実装する必要があります (ハイブリッド ユーザーの場合はオンプレミスの Active Directory、クラウド専用ユーザーの場合は Microsoft Entra ID)。

実装要件

実装の観点から:

  • Azure Logic Apps ワークフローを使用して、Azure ファイル共有で使用可能な CSV ファイル エクスポートからデータを読み取り、受信プロビジョニング API エンドポイントに送信する必要があります。
  • Azure Logic Apps ワークフローでは、レコードのシステムとターゲット ディレクトリの間で ID データを比較する複雑なロジックを実装したくはありません。
  • Microsoft Entra プロビジョニング サービスを使用して、IT マネージド プロビジョニング ルールを適用して、ターゲット ディレクトリ (オンプレミスの Active Directory または Microsoft Entra ID) でアカウントを自動的に作成、更新、有効化、無効化する必要があります。

Graphic of Azure Logic Apps-based integration.

統合シナリオのバリエーション

このチュートリアルでは CSV ファイルをレコードのシステムとして使用しますが、サンプル Azure Logic Apps ワークフローをカスタマイズして、レコードの任意のシステムからデータを読み取ることができます。 Azure Logic Apps には、統合ワークフローで使用可能な組み込みトリガーとアクションを備えた、さまざまな組み込みコネクタマネージド コネクタが用意されています。

Logic Apps ワークフローを使用して API 駆動型インバウンド プロビジョニングを実装できるエンタープライズ統合シナリオのバリエーションの一覧を次に示します。

# レコードのシステム Logic Apps を使用したソース データの読み取りに関する統合ガイダンス
1 SFTP サーバーに格納されているファイル SFTP サーバーに格納されているファイルからデータを読み取るために、組み込みの SFTP コネクタまたはマネージド SFTP SSH コネクタのいずれかを使用します。
2 [データベース テーブル] Azure SQL サーバーまたはオンプレミスのSQL Serverを使用している場合は、SQL Server コネクタを使用してテーブル データを読み取ります。
Oracle Database を使用している場合は、Oracle Database コネクタを使用してテーブル データを読み取ってください。
3 オンプレミスおよびクラウドでホストされる SAP S/4 HANA または
従来のオンプレミスの SAP システム (R/3 や ECC など)
SAP コネクタを使用して、SAP システムから ID データを取得します。 このコネクタを構成する方法の例については、Azure Logic Apps と SAP コネクタを使用した一般的な SAP 統合シナリオに関するページを参照してください。
4 IBM MQ IBM MQ コネクターを使用して、キューからプロビジョニング メッセージを受信します。
5 Dynamics 365 Human Resources Dataverse コネクタを使用して、Microsoft Dynamics 365 Human Resources で使用される Dataverse テーブルからデータを読み取ります。
6 REST API を公開するすべてのシステム Logic Apps コネクタ ライブラリにレコードのシステムのコネクタが見つからない場合は、独自のカスタム コネクタを作成して、レコードのシステムからデータを読み取ることができます。

ソース データを読み取った後、前処理ルールを適用し、レコードのシステムからの出力をMicrosoft Entra をプロビジョニングする bulkUpload API エンドポイントに送信できる一括要求に変換します。

重要

API 駆動型インバウンド プロビジョニングと Logic Apps 統合ワークフローをコミュニティと共有する場合は、ロジック アプリ テンプレートを作成し、それを使用する方法に関する手順を文書化し、GitHub リポジトリ entra-id-inbound-provisioning に含めるための pull request を送信します。

このチュートリアルの使用方法

Microsoft Entra のインバウンド プロビジョニング GitHub リポジトリで公開されている Logic Apps デプロイ テンプレートでは、複数のタスクが自動化されます。 これには、大きな CSV ファイルを処理し、一括要求をチャンクして要求ごとに 50 個のレコードを送信するためのロジックもあります。 これをテストし、自分の統合要件に従ってカスタマイズする方法を次に示します。

注意

サンプルの Azure Logic Apps ワークフローは、実装の参照のために "現状のまま" 提供されています。 関連する質問があるか、拡張する場合は、GitHub プロジェクト リポジトリを使用してください。

# 自動化タスク 実装ガイダンス 高度なカスタマイズ
1 CSV ファイルからワーカー データを読み取る。 Logic Apps ワークフローでは、Azure 関数を使用して、Azure ファイル共有に格納されている CSV ファイルを読み取ります。 Azure 関数は、CSV データを JSON 形式に変換します。 CSV ファイル形式が異なる場合は、ワークフロー の "JSON の解析" と "SCIMUser の構築" の手順を更新します。 レコードのシステムが異なる場合は、「統合シナリオのバリエーション」セクションで提供されている、適切なコネクタを使用して Logic Apps ワークフローをカスタマイズする方法に関するガイダンスを確認してください。
2 データを前処理して SCIM 形式に変換する。 既定では、Logic Apps ワークフローは CSV ファイル内の各レコードを SCIM コア ユーザーとエンタープライズ ユーザー表現に変換します。 カスタム SCIM スキーマ拡張機能を使用する予定がある場合は、カスタム SCIM スキーマ拡張機能を含むように「SCIMUser の構築」の手順を更新します。 高度な書式設定とデータ検証のために C# コードを実行する場合は、カスタム Azure Functionsを使用します。
3 適切な認証方法の使用 サービス プリンシパルを使用するか、マネージド ID を使用して受信プロビジョニング API にアクセスできます。 適切な認証方法を使用して、「API エンドポイントに SCIMBulkPayload を送信する」手順を更新します。 -
4 オンプレミスの Active Directory または Microsoft Entra ID でアカウントをプロビジョニングする。 API 駆動型インバウンド プロビジョニング アプリを構成します。 これにより、一意の /bulkUpload API エンドポイントが生成されます。 「API エンドポイントに SCIMBulkPayload を送信する」手順を更新して、適切な bulkUpload API エンドポイントを使用します。 カスタム SCIM スキーマで一括要求を使用する場合、プロビジョニング アプリ スキーマを拡張してカスタム SCIM スキーマ属性を含めます。
5 プロビジョニング ログをスキャンして、失敗したレコードのプロビジョニングを再試行します。 この自動化は、サンプル Logic Apps ワークフローにまだ実装されていません。 実装するには、プロビジョニング ログ Graph API を参照してください。 -
6 運用環境に Logic Apps ベースの自動化をデプロイする。 API 駆動型プロビジョニング フローを確認して要件を満たすように Logic Apps ワークフローをカスタマイズしたら、お使いの環境で自動化をデプロイします。 -

手順 1: CSV ファイルをホストする Azure Storage アカウントを作成する

このセクションに記載されている手順は省略可能です。 既存のストレージ アカウントが既にある場合、または SharePoint サイトや BLOB ストレージなどの別のソースから CSV ファイルを読み取る場合は、任意のコネクタを使用するようにロジック アプリを更新します。

  1. Azure portal に少なくともクラウド アプリケーション管理者としてサインインします。
  2. "ストレージ アカウント" を検索し、新しいストレージ アカウントを作成します。 Screenshot of creating new storage account.
  3. リソース グループを割り当てて、名前を付けます。 Screenshot of resource group assignment.
  4. ストレージ アカウントの作成後、リソースに移動します。
  5. [ファイル共有] メニュー オプションをクリックして、新しいファイル共有を作成します。 Screenshot of creating new file share.
  6. ファイル共有の作成が成功したことを確認します。 Screenshot of file share created.
  7. アップロード オプションを使用して、サンプルの CSV ファイルをファイル共有にアップロードします。
  8. CSV ファイル内の列のスクリーンショットを次に示します。 Screenshot of columns in Excel.

手順 2: Azure 関数 CSV2JSON コンバーターを構成する

  1. Azure portal ログインに関連付けられているブラウザーで、GitHub リポジトリ URL - https://github.com/joelbyford/CSVtoJSONcore を開きます。

  2. [Azure へのデプロイ] リンクをクリックして、この Azure 関数を Azure テナントにデプロイします。 Screenshot of deploying Azure Function.

  3. この Azure 関数をデプロイするリソース グループを指定します。 Screenshot of configuring Azure Function resource group.

    "This region has quota of 0 instances" というエラーが表示される場合は、別のリージョンを選択してみてください。

  4. App Service としての Azure 関数のデプロイが成功したことを確認します。

  5. リソース グループに移動し、WebApp 構成を開きます。 "実行中" 状態であることを確認します。 Web アプリに関連付けられている既定のドメイン名をコピーします。 Screenshot of Azure Function Web App domain name.

  6. Postman クライアントを開き、CSVtoJSON エンドポイントが想定どおりに動作するかどうかをテストします。 前の手順でコピーしたドメイン名を貼り付けます。 "テキスト/csv" の Content-Type を使用し、要求本文のサンプル CSV ファイルをエンドポイント https://[your-domain-name]/csvtojson に投稿します。 Screenshot of Postman client calling the Azure Function.

  7. Azure 関数のデプロイが成功した場合、応答で、状態 200 OK の JSON バージョンの CSV ファイルが取得されます。

    Screenshot of Azure Function response.

  8. Logic Apps でこの Azure 関数を呼び出せるようにするには、WebApp の CORS 設定にアスタリスク (*) を入力し、構成を "保存" します。 Screenshot of Azure Function CORS setting.

手順 3: API 駆動型インバウンド ユーザー プロビジョニングを構成する

手順 4: Azure Logic Apps ワークフローを構成する

  1. 下のボタンをクリックして、CSV2SCIMBulkUpload という Logic Apps ワークフロー用の Azure Resource Manager テンプレートをデプロイします。

    Deploy to Azure

  2. [インスタンスの詳細] で、強調表示されている項目を更新し、前の手順の値をコピーして貼り付けます。 Screenshot of Azure Logic Apps instance details.

  3. Azurefile_access Key パラメーターについては、Azure ファイル ストレージ アカウントを開き、[セキュリティとネットワーク] の下にあるアクセス キーをコピーします。
    Screenshot of Azure File access keys.

  4. [確認と作成] オプションをクリックしてデプロイを開始します。

  5. デプロイが完了すると、次のメッセージが表示されます。 Screenshot of Azure Logic Apps deployment complete.

手順 5: システム割り当てマネージド ID を構成する

  1. Logic Apps ワークフローの [設定] -> [ID] ブレードにアクセスします。
  2. システム割り当てマネージド ID を有効にします。 Screenshot of enabling managed identity.
  3. マネージド ID の使用を確認するプロンプトが表示されます。 [はい] をクリックします。
  4. 一括アップロードを実行するアクセス許可をマネージド ID に付与します。

手順 6: ワークフローの手順を確認して調整する

  1. デザイナー ビューで Logic Apps を開きます。 Screenshot of Azure Logic Apps designer view.

  2. ワークフローの各ステップの構成を確認して、正しいことを確認します。

  3. [パスを使用してファイルの内容を取得] ステップを開いて、テナント内の Azure File Storage を参照するように修正します。 Screenshot of get file content.

  4. 必要に応じて接続を更新します。

  5. [Convert CSV to JSON] (CSV を JSON に変換) ステップが適切な Azure 関数 Web アプリ インスタンスを指していることを確認します。 Screenshot of Azure Function call invocation to convert from CSV to JSON.

  6. CSV ファイルの内容またはヘッダーが異なる場合は、Azure 関数への API 呼び出しから取得できる JSON 出力で、[Parse JSON] (JSON の解析) ステップを更新します。 手順 2 の Postman 出力を使用します。 Screenshot of Parse JSON step.

  7. [Construct SCIMUser] (SCIMUser のコンストラクト) ステップで、CSV フィールドが処理に使用される SCIM 属性に正しくマップされていることを確認します。

    Screenshot of Construct SCIM user step.

  8. [Send SCIMBulkPayload to API endpoint] (SCIMBulkPayload を API エンドポイントに送信) ステップで、適切な API エンドポイントと認証メカニズムを使用していることを確認します。

    Screenshot of invoking bulk upload API with managed identity.

手順 7: トリガーを実行して Logic Apps ワークフローをテストする

  1. Logic Apps デザイナーの "一般提供" バージョンで、[トリガーの実行] をクリックしてワークフローを手動で実行します。 Screenshot of running the Logic App.
  2. 実行が完了したら、各イテレーションで Logic Apps が実行したアクションを確認します。
  3. 最後のイテレーションでは、Logic Apps によってインバウンド プロビジョニング API エンドポイントにデータがアップロードされます。 202 Accept 状態コードを探します。 一括アップロード要求をコピーして貼り付けて、確認できます。 Screenshot of the Logic Apps execution result.

次のステップ