Azure Logic Apps でマネージド ID を使用して Azure リソースへのアクセスと接続を認証する

適用対象: Azure Logic Apps (従量課金プラン + Standard)

資格情報、シークレット、または Microsoft Entra トークンの提供、格納、管理を回避する場合は、マネージド ID を使用して、ロジック アプリ ワークフローから Microsoft Entra で保護されたリソースへのアクセスまたは接続を認証できます。 Azure Logic Apps では、Microsoft Entra ID で保護されているリソースへのアクセスを認証する必要がある場合、一部のコネクタ操作ではマネージド ID の使用がサポートされます。 この ID は Azure で管理され、認証情報が安全に保たれます。この機密情報をユーザー側で管理する必要がないからです。 詳細については、「Azure リソースのマネージド ID とは」を参照してください。

Azure Logic Apps では、次のマネージド ID の種類がサポートされています。

次の一覧では、これらのマネージド ID の種類の違いについて説明します。

  • ロジック アプリ リソースでは、一意のシステム割り当て ID を 1 つのみ有効にして使用できます。

  • ロジック アプリ リソースは、他のロジック アプリ リソースのグループ間で同じユーザー割り当て ID を共有できます。

このガイドでは、次のタスクを完了する方法について説明します。

  • ロジック アプリ リソースのシステム割り当て ID を有効にして設定します。 このガイドでは、認証に ID を使用する方法を示す例を示します。

  • ユーザー割り当て ID を作成して設定します。 このガイドでは、Azure portal または Azure Resource Manager テンプレート (ARM テンプレート) を使用してこの ID を作成する方法と、認証に ID を使用する方法について説明します。 Azure PowerShell、Azure CLI、Azure REST API については、次のドキュメントを参照してください。

    ツール ドキュメント
    Azure PowerShell ユーザー割り当て ID を作成する
    Azure CLI ユーザー割り当て ID を作成する
    Azure REST API ユーザー割り当て ID を作成する

前提条件

  • Azure アカウントとサブスクリプション。 サブスクリプションをお持ちでない場合には、無料の Azure アカウントにサインアップしてください。 マネージド ID とアクセスする必要があるターゲット Azure リソースの両方で、同じ Azure サブスクリプションを使用する必要があります。

  • アクセスするターゲット Azure リソース。 このリソースでは、マネージド ID がロジック アプリまたは接続の代わりにそのリソースにアクセスするために必要なロールを追加する必要があります。 ロールをマネージド ID に追加するには、対応する Microsoft Entra テナント内の ID にロールを割り当てることができる、Microsoft Entra 管理者のアクセス許可が必要です。

  • マネージド ID がサポートされているトリガーまたはアクションを使用するロジック アプリのリソースおよびワークフロー。

従量課金と Standard のロジック アプリのマネージド ID の違い

ロジック アプリのリソースの種類に基づいて、システム割り当て ID、ユーザー割り当て ID のいずれか、または両方を同時に有効にできます。

ロジック アプリ 環境 マネージド ID のサポート
従量課金 - マルチテナント Azure Logic Apps - ロジック アプリでは、システム割り当て ID またはユーザー割り当て ID のいずれかを有効にできます。両方は有効にできません。

- ロジック アプリのリソース レベルと接続レベルでマネージド ID を使用できます。

- ユーザー割り当て ID を作成し、有効にした場合、ロジック アプリで一度に 1 つのみのユーザー割り当て ID を持つことができます。
Standard - シングルテナントの Azure Logic Apps

- App Service Environment v3 (ASEv3)

- Azure Arc 対応 Logic Apps
- 既定で有効になっているシステム割り当て ID と、ユーザー割り当て ID の両方を同時に有効にできます。 また、ロジック アプリに複数のユーザー割り当て ID を追加することもできます。 ただし、ロジック アプリで一度に使用できるマネージド ID は 1 つだけです。

- ロジック アプリのリソース レベルと接続レベルでマネージド ID を使用できます。

Azure Logic Apps でのマネージド ID の制限については、「ロジック アプリのマネージド ID に関する制限」を参照してください。 ロジック アプリのリソースの種類が従量課金と Standard の環境の詳細については、次のドキュメントを参照してください。

マネージド ID を使用できる場合

Azure Logic Apps では、Microsoft Entra ID による OAuth をサポートする特定の組み込み型のマネージド コネクタ操作だけが、マネージド ID を認証で使用できます。 次の表は、一部のサンプルのみを示しています。 詳しい一覧については、次のドキュメントを参照してください。

従量課金ロジック アプリ ワークフローについて、次の表に、マネージド ID 認証をサポートするコネクタの例を示します。

コネクタの種類 サポートされているコネクタ
組み込み - Azure API Management
- Azure App Services
- Azure Functions
- HTTP
- HTTP および Webhook

: HTTP 操作では、システム割り当て ID を使用して Azure ファイアウォールの内側にある Azure Storage アカウントへの接続を認証できます。 ただし、HTTP 操作では、同じ接続の認証に、ユーザー割り当て ID はサポートされていません。
マネージド - Azure App Service
- Azure Automation
- Azure Blob Storage
- Azure Container Instance
- Azure Cosmos DB
- Azure Data Explorer
- Azure Data Factory
- Azure Data Lake
- Azure Digital Twins
- Azure Event Grid
- Azure Event Hubs
- Azure IoT Central V2
- Azure Key Vault
- Azure Monitor ログ
- Azure キュー
- Azure Resource Manager
- Azure Service Bus
- Azure Sentinel
- Azure Table Storage
- Azure VM
- SQL Server

Azure portal でシステム割り当て ID を有効にする

従量課金ロジック アプリ リソースでは、システム割り当て ID を手動で有効にする必要があります。

  1. Azure portal で、従量課金ロジック アプリ リソースを開きます。

  2. ロジック アプリのメニューの [設定] で、 [ID] を選択します。

  3. [ID] ページの [システム割り当て] で、[オン]>[保存] を選びます。 確認を求めるメッセージが表示されたら、 [はい] を選択します。

    スクリーンショットは、Azure portal、従量課金ロジック アプリ、ID ページ、選択したオプション ([オン] と [保存]) が表示された [システム割り当て] タブを示しています。

    Note

    マネージド ID を 1 つだけ持つことができるというエラーが表示される場合、ロジック アプリのリソースは既にユーザー割り当て ID に関連付けられています。 システム割り当て ID を追加する前に、まず、ロジック アプリ リソースからユーザー割り当て ID を削除する必要があります。

    これで、ロジック アプリ リソースでシステム割り当て ID を使用できます。 この ID は、Microsoft Entra ID に登録され、オブジェクト ID で表されます。

    スクリーンショットは、従量課金ロジック アプリ、ID ページ、システム割り当て ID のオブジェクト ID を示しています。

    プロパティ 説明
    オブジェクト (プリンシパル) ID <identity-resource-ID> Microsoft Entra テナント内のロジック アプリのシステム割り当て ID を表すグローバル一意識別子 (GUID)。
  4. 次に、このガイドの後半にある、システム割り当て ID にリソースへのアクセス権を付与する手順に従います。

ARM テンプレートでシステム割り当て ID を有効にする

ロジック アプリの作成とデプロイを自動化するために、ARM テンプレートを使用できます。 テンプレートでロジック アプリのリソースのシステム割り当て ID を有効にするには、次のように、テンプレートのロジック アプリのリソース定義に identity オブジェクトと type 子プロパティを追加します。

{
   "apiVersion": "2016-06-01",
   "type": "Microsoft.logic/workflows",
   "name": "[variables('logicappName')]",
   "location": "[resourceGroup().location]",
   "identity": {
      "type": "SystemAssigned"
   },
   "properties": {},
   <...>
}

Azure によってロジック アプリのリソース定義が作成されると、identity オブジェクトは次に示す他のプロパティを取得します。

"identity": {
   "type": "SystemAssigned",
   "principalId": "<principal-ID>",
   "tenantId": "<Entra-tenant-ID>"
}
プロパティ (JSON) 説明
principalId <principal-ID> Microsoft Entra テナント内のロジック アプリを表すマネージド ID のサービス プリンシパル オブジェクトのグローバル一意識別子 (GUID)。 この GUID は、"オブジェクト ID" (objectID) として表されることがあります。
tenantId <Microsoft-Entra-ID-tenant-ID> ロジック アプリが現在メンバーとなっている Microsoft Entra テナントを表すグローバル一意識別子 (GUID)。 Microsoft Entra テナント内では、サービス プリンシパルはロジック アプリ インスタンスと同じ名前です。

Azure portal でユーザー割り当て ID を作成する

従量課金ロジック アプリ リソースまたは Standard ロジック アプリ リソースでユーザー割り当て ID を有効にする前に、まずその ID を別の Azure リソースとして作成する必要があります。

  1. Azure portal 検索ボックスで「マネージド ID」と入力します。 結果の一覧から [マネージド ID] を選択します。

    スクリーンショットは、[マネージド ID] という名前のオプションが選択されている Azure portal を示しています。

  2. [マネージド ID] ページのツールバーで、[作成] を選択します。

  3. 次の例のようにマネージド ID に関する情報を指定し、[確認と作成] を選択します。次に例を示します。

    スクリーンショットは、[ユーザー割り当てマネージド ID の作成] というページにマネージド ID の詳細が表示された状態を示しています。

    プロパティ 必要 説明
    サブスクリプション はい <Azure サブスクリプション名> Azure サブスクリプション名
    リソース グループ はい <Azure リソース グループ名>< Azure リソース グループ名です。 新しいグループを作成するか、既存のグループを選択します。 この例では、fabrikam-managed-identities-RG という名前の新しいグループを作成します。
    リージョン はい <Azure リージョン>< リソースに関する情報の保存先となる Azure リージョン。 この例では米国西部を使用します。
    名前 はい <user-assigned-identity-name> ユーザー割り当て ID に付与する名前。 この例では、Fabrikam-user-assigned-identity を使用します。

    Azure は、情報を検証した後、マネージド ID を作成します。 これで、ユーザー割り当て ID をロジック アプリ リソースに追加できるようになりました。

ユーザー割り当て ID を Azure portal のロジック アプリに追加する

  1. Azure portal で、従量課金ロジック アプリ リソースを開きます。

  2. ロジック アプリのメニューの [設定] で、 [ID] を選択します。

  3. [ID] ページで、[ユーザー割り当て] を選択し、[追加] を選択します。

    スクリーンショットは、[追加] のオプションが選択された、従量課金ロジック アプリと ID のページを示しています。

  4. [ユーザー割り当てマネージド ID の追加] ペインで、こちらの手順を実行します。

    1. [サブスクリプションの選択] の一覧から、Azure サブスクリプションを選択します。

    2. そのサブスクリプションのすべてのマネージド ID を示す一覧から、目的のユーザー割り当て ID を選択します。 一覧をフィルター処理するには、 [ユーザー割り当て済みマネージド ID] 検索ボックスに、ID またはリソース グループの名前を入力します。

      スクリーンショットは、従量課金ロジック アプリと、ユーザー割り当て ID が選択されている状態を示しています。

    3. 終了したら、 [追加] を選択します。

      Note

      マネージド ID を 1 つだけ持つことができるというエラーが表示される場合、ロジック アプリは既にシステム割り当て ID に関連付けられています。 ユーザー割り当て ID を追加できるようにするには、まず、システム割り当て ID を無効にする必要があります。

    これで、ロジック アプリがユーザー割り当て ID に関連付けられました。

    スクリーンショットは、ユーザー割り当て ID が関連付けられている従量課金ロジック アプリを示しています。

  5. 次に、このガイドの後半にある、ID にリソースへのアクセス権を付与する手順に従います。

ARM テンプレートでユーザー割り当て ID を作成する

ロジック アプリの作成とデプロイを自動化するために、ARM テンプレートを使用できます。 これらのテンプレートでは、認証に対してユーザー割り当て ID がサポートされます。

テンプレートの resources セクションでは、ロジック アプリのリソース定義に次の項目が必要です。

  • type プロパティが UserAssigned に設定されている identity オブジェクト

  • ユーザー割り当てリソースと名前を指定する、子 userAssignedIdentities オブジェクト

この例は、従量課金ロジック アプリ リソース、HTTP PUT 要求のワークフロー定義、パラメーター化されていない identity オブジェクトを示しています。 PUT 要求への応答と後続の GET 操作にも、この identity オブジェクトが含まれています。

{
   "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
   "contentVersion": "1.0.0.0",
   "parameters": {<template-parameters>},
   "resources": [
      {
         "apiVersion": "2016-06-01",
         "type": "Microsoft.logic/workflows",
         "name": "[variables('logicappName')]",
         "location": "[resourceGroup().location]",
         "identity": {
            "type": "UserAssigned",
            "userAssignedIdentities": {
               "/subscriptions/<Azure-subscription-ID>/resourceGroups/<Azure-resource-group-name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<user-assigned-identity-name>": {}
            }
         },
         "properties": {
            "definition": {<logic-app-workflow-definition>}
         },
         "parameters": {},
         "dependsOn": []
      },
   ],
   "outputs": {}
}

テンプレートにマネージド ID のリソース定義も含まれている場合は、identity オブジェクトをパラメーター化できます。 次の例は、子 userAssignedIdentities オブジェクトが、テンプレートの variables セクションで定義した userAssignedIdentityName 変数を参照する方法を示しています。 この変数は、ユーザー割り当て ID のリソース ID を参照しています。

{
   "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
   "contentVersion": "1.0.0.0",
   "parameters": {
      "Template_LogicAppName": {
         "type": "string"
      },
      "Template_UserAssignedIdentityName": {
         "type": "securestring"
      }
   },
   "variables": {
      "logicAppName": "[parameters(`Template_LogicAppName')]",
      "userAssignedIdentityName": "[parameters('Template_UserAssignedIdentityName')]"
   },
   "resources": [
      {
         "apiVersion": "2016-06-01",
         "type": "Microsoft.logic/workflows",
         "name": "[variables('logicAppName')]",
         "location": "[resourceGroup().location]",
         "identity": {
            "type": "UserAssigned",
            "userAssignedIdentities": {
               "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities/', variables('userAssignedIdentityName'))]": {}
            }
         },
         "properties": {
            "definition": {<logic-app-workflow-definition>}
         },
         "parameters": {},
         "dependsOn": [
            "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities/', variables('userAssignedIdentityName'))]"
         ]
      },
      {
         "apiVersion": "2018-11-30",
         "type": "Microsoft.ManagedIdentity/userAssignedIdentities",
         "name": "[parameters('Template_UserAssignedIdentityName')]",
         "location": "[resourceGroup().location]",
         "properties": {}
      }
  ]
}

ID にリソースへのアクセス権を付与する

ロジック アプリのマネージド ID を認証に使用する前に、ID を使用するターゲットの Azure リソースで ID のアクセスを設定します。 アクセスを設定する方法は、ターゲット リソースによって異なります。

Note

あるマネージド ID が同じサブスクリプション内のある Azure リソースにアクセスできる場合、その ID はそのリソースにのみアクセスできます。 ただし、マネージド ID をサポートする一部のトリガーとアクションでは、ターゲット リソースが含まれている Azure リソース グループを最初に選ぶ必要があります。 ID にそのリソース グループ レベルでのアクセス権がない場合は、ターゲット リソースへのアクセス権があっても、そのグループ内のリソースは表示されません。

この動作に対応するには、リソースだけではなく、リソース グループにも ID アクセス権を付与する必要があります。 同様に、ターゲット リソースを選ぶ前にサブスクリプションを選ぶ必要がある場合は、そのサブスクリプションへの ID アクセス権を付与する必要があります。

場合によっては、関連付けられているリソースにアクセスするために ID が必要な場合があります。 たとえば、ロジック アプリのマネージド ID があり、ワークフローから同じロジック アプリのアプリケーション設定を更新するためにアクセス権を必要としているとします。 関連付けられているロジック アプリへのアクセス権をその ID に付与する必要があります。

たとえば、マネージド ID を使用して Azure Blob ストレージ アカウントまたは Azure キー コンテナーにアクセスするには、Azure ロールベースのアクセス制御 (Azure RBAC) を設定し、ストレージ アカウントまたはキー コンテナーのそれぞれに対するその ID の適切なロールを割り当てる必要があります。

このセクションの手順では、Azure portalAzure Resource Manager テンプレート (ARM テンプレート) を使用してロールベースのアクセスを割り当てる方法について説明します。 Azure PowerShell、Azure CLI、Azure REST API については、次のドキュメントを参照してください。

ツール ドキュメント
Azure PowerShell ロールの割り当てを追加する
Azure CLI ロールの割り当てを追加する
Azure REST API ロールの割り当てを追加する

Azure キー コンテナーの場合は、キー コンテナーに対するマネージド ID のためのアクセス ポリシーを作成し、そのキー コンテナーに対するその ID の適切なアクセス許可を割り当てることもできます。 このセクションの後の手順では、Azure portal を使用してこのタスクを完了する方法について説明します。 Resource Manager テンプレート、PowerShell、Azure CLI の場合は、次のドキュメントを参照してください。

ツール ドキュメント
Azure Resource Manager テンプレート (ARM テンプレート) Key Vault アクセス ポリシー リソースの定義
Azure PowerShell Key Vault アクセス ポリシーを割り当てる
Azure CLI Key Vault アクセス ポリシーを割り当てる

Azure portal を使用してマネージド ID にロールベースのアクセスを割り当てる

認証にマネージド ID を使用するには、Azure ストレージ アカウントなどの一部の Azure リソースで、その ID をターゲット リソースに対する適切なアクセス許可を持つロールに割り当てる必要があります。 Azure キー コンテナーなどの他の Azure リソースでは、複数のオプションがサポートされます。そのため、ロールベースのアクセスか、その ID のターゲット リソースに対する適切なアクセス許可を持つアクセス ポリシーを選択することができます。

  1. Azure portalで、ID を使用する予定のリソースを開きます。

  2. リソースのメニューで [アクセス制御 (IAM)]>[追加]>[ロールの割り当ての追加] を選択します。

    Note

    [ロールの割り当ての追加] オプションが無効な場合は、ロールを割り当てるためのアクセス許可がありません。 詳細については、「Microsoft Entra 組み込みロール」を参照してください。

  3. 必要なロールをマネージド ID に割り当てます。 [ロール] タブで、現在のリソースへの必要なアクセス権を自分の ID に付与するロールを割り当てます。

    この例では、ストレージ BLOB データ共同作成者という名前のロールを割り当てます。これには、Azure Storage コンテナー内の BLOB への書き込みアクセスが含まれます。 特定のストレージ コンテナー ロールの詳細については、Azure Storage コンテナー内の BLOB にアクセスできるロールに関するページを参照してください。

  4. 次に、ロールを割り当てるマネージド ID を選択します。 [アクセスの割り当て先] で、[マネージド ID]>[メンバーを追加する] を選択します。

  5. マネージド ID の種類に基づいて、次の値を選択または指定します。

    Azure サービス インスタンス サブスクリプション メンバー
    システム割り当て ロジック アプリ <Azure サブスクリプション名> <your-logic-app-name>
    ユーザー割り当て 該当なし <Azure サブスクリプション名> <your-user-assigned-identity-name>

    ロールの割り当ての詳細については、Azure portal を使用したロールの割り当てに関するページを参照してください。

完了したら、その ID を使用して、マネージド ID をサポートするトリガーとアクションのアクセスを認証できます

このタスクに関する一般的な情報については、「マネージド ID アクセスを Azure リソースまたは別のリソースに割り当てる」を参照してください。

Azure portal を使用してアクセス ポリシーを作成する

認証にマネージド ID を使用するために、他の Azure リソースでは、その ID のターゲット リソースに対する適切なアクセス許可を持つアクセス ポリシーの作成もサポートされるか、必要とされます。 Azure ストレージ アカウントなどの他の Azure リソースでは、代わりに、ターゲット リソースに対する適切なアクセス許可を持つロールにその ID を割り当てる必要があります。

  1. Azure portal で、ID を使用するターゲット リソースを開きます。 この例では、ターゲット リソースとして Azure キー コンテナーを使用します。

  2. リソースのメニューで、[アクセス ポリシー]>[作成] を選択し、[アクセス ポリシーの作成] ペインを開きます。

    Note

    リソースに [アクセス ポリシー] オプションがない場合、代わりに、ロールの割り当てを割り当ててください

    スクリーンショットは、Azure portal と、[アクセス ポリシー] ウィンドウが開かれているキー コンテナーの例を示しています。

  3. [アクセス許可] タブで、ID がターゲット リソースにアクセスするために必要なアクセス許可を選択します。

    たとえば、Azure Key Vault マネージド コネクタのシークレットを一覧表示する操作で ID を使用するためには、ID は [一覧表示] のアクセス許可が必要です。 そのため、[シークレットのアクセス許可] 列で [一覧表示] を選択します。

    スクリーンショットは、[アクセス許可] タブと、[一覧表示] アクセス許可が選択されている状態を示しています。

  4. 準備ができたら、 [次へ] を選択します。 [プリンシパル] タブで、この例のユーザー割り当て ID であるマネージド ID を見つけて選択します。

  5. 省略可能な [アプリケーション] ステップをスキップし、[次へ] を選択して、アクセス ポリシーの作成を完了します。

次のセクションでは、マネージド ID とトリガーまたはアクションを使用してアクセスを認証する方法を示します。 その例は、RBAC と Azure ストレージ アカウントを例として使用することでマネージド ID のアクセスを設定した、前のセクションの手順の続きです。 ただし、認証にマネージド ID を使用する一般的な手順は同じです。

マネージド ID を利用してアクセスを認証する

ロジック アプリのリソースに対してマネージド ID を有効にし、その ID に Azure ターゲット リソースまたはサービスへのアクセス権を付与したら、その ID をマネージド ID がサポートされているトリガーとアクションで使用できます。

重要

システム割り当て ID を使用する Azure 関数がある場合は、先に Azure Functions の認証を有効にします。

次の手順では、Azure portal を使用して、トリガーまたはアクションでマネージド ID を使用する方法を示します。 トリガーまたはアクションの基になる JSON 定義でマネージド ID を指定する方法については、「マネージド ID 認証」をご覧ください。

  1. Azure portal で、従量課金ロジック アプリ リソースを開きます。

  2. まだ行っていない場合は、マネージド ID がサポートされているトリガーまたはアクションを追加します。

    Note

    すべてのコネクタ操作で認証の種類を追加できるわけではありません。 詳細については、「認証がサポートされているトリガーおよびアクションの認証の種類」を参照してください。

  3. 追加したトリガーまたはアクションで、次の手順に従います。

    • マネージド ID 認証をサポートする組み込みコネクタの操作

      これらの手順は、例として HTTP アクションを使用して続けます。

      1. [高度なパラメーター] の一覧で、[認証] プロパティがまだ表示されていない場合はこのプロパティを追加します。

        スクリーンショットは、組み込みアクションを伴う従量課金ワークフローと、[認証] のオプションが選択された [高度なパラメーター] という名前の一覧が開かれている状態を示しています。

        これで、[認証] プロパティと [認証の種類] 一覧の両方がアクションに表示されます。

        スクリーンショットは、追加の [認証] プロパティと、[認証の種類] 一覧が表示されている [高度なパラメーター] のセクションを示しています。

      2. [認証の種類] 一覧から、[マネージド ID] を選択します。

        スクリーンショットは、組み込みアクションを伴う従量課金ワークフロー、開かれた [認証の種類] 一覧、[マネージド ID] について選択したオプションを示しています。

        [認証] セクションには、次のオプションが表示されます。

        • 特定のマネージド ID を選択できる [マネージド ID] 一覧

        • 特定のトリガーとアクションに表示される [対象ユーザー] プロパティ。これにより、Azure ターゲット リソースまたはサービスのリソース ID を設定できます。 そうしないと、既定では、[対象ユーザー] プロパティに Azure Resource Manager のリソース ID である https://management.azure.com/ リソース ID が使用されます。

      3. [マネージド ID] 一覧から、使用する ID を選択します。次に例を示します。

        スクリーンショットは、[認証の種類] 一覧と [対象ユーザー] プロパティが表示された [認証] セクションを示しています。

        Note

        既定で選択されているオプションは、マネージド ID が有効になっていない場合でも、[システム割り当てマネージド ID] です。

        マネージド ID を正常に使用するには、まずロジック アプリでその ID を有効にする必要があります。 従量課金ロジック アプリでは、システム割り当てマネージド ID またはユーザー割り当てマネージド ID のいずれかを使用できますが、両方は使用できません。

      詳細については、「例: マネージド ID を使用して組み込みのトリガーまたはアクションを認証する」を参照してください。

    • マネージド ID 認証をサポートするマネージド コネクタの操作

      1. [接続の作成] ペインの [認証] 一覧で、[マネージド ID] を選択します。次に例を示します。

        スクリーンショットは、Azure Resource Manager アクションと、[マネージド ID] について選択されたオプションが表示された従量課金ワークフローを示しています。

      2. 次のページで、[接続名] に、接続に使用する名前を入力します。

      3. 認証タイプには、マネージド コネクタに基づいて次のいずれかのオプションを選びます。

        • 単一認証: これらのコネクタは、1 つの認証の種類 (この場合はマネージド ID) のみをサポートします。

          1. [マネージド ID] 一覧から、現在有効になっているマネージド ID を選択します。

          2. 準備ができたら、[新規作成] を選択します。

        • 複数認証: これらのコネクタは複数認証タイプをサポートしますが、選択できるのは 1 種類のみです。

          これらの手順は、例として Azure Blob Storage アクションを使用して続けます。

          1. [認証の種類] 一覧から、[Logic Apps マネージド ID] を選択します。

            スクリーンショットは、従量課金ワークフロー、接続を作成するためのボックス、Logic Apps マネージド ID について選択されたオプションを示しています。

          2. 準備ができたら、[新規作成] を選択します。

        詳細については、「例: マネージド ID を使用してマネージド コネクタのトリガーまたはアクションを認証する」を参照してください。

例:マネージド ID を使用して組み込みのトリガーまたはアクションを認証する

組み込みの HTTP トリガーまたはアクションでは、ロジック アプリのリソースに対して有効にしたシステム割り当て ID を使用できます。 一般に、HTTP トリガーまたはアクションでは、次のプロパティを使用して、アクセスするリソースまたはエンティティを指定します。

プロパティ Required 説明
方法 はい 実行する操作によって使用される HTTP メソッド
URI はい ターゲットの Azure リソースまたはエンティティにアクセスするためのエンドポイント URL。 URI 構文には、通常、ターゲットの Azure リソースまたはサービスのリソース ID が含まれています。
ヘッダー いいえ コンテンツ タイプなど、送信要求に含める必要がある (または含めたい) ヘッダーの値
クエリ いいえ 要求に含める必要がある任意のクエリ パラメーター。 たとえば、特定の操作または実行する操作の API バージョンのクエリ パラメーターなどです。
認証 はい Azure のターゲット リソースまたはサービスへのアクセスの認証に使用する認証の種類

具体的な例として、以前に ID 用のアクセスを設定した Azure Storage アカウントの BLOB に対して Snapshot Blob 操作を実行するとします。 しかし、Azure Blob Storage コネクタでは現在、この操作が提供されていません。 代わりに、HTTP アクションまたは別の BLOB サービス REST API 操作を使用して、この操作を実行できます。

重要

Azure Blob Storage コネクタとマネージド ID を使ってファイアウォールの内側にある Azure Storage アカウントにアクセスするには、信頼された Microsoft サービスによるアクセスを許可する例外を使ってストレージ アカウントを設定する必要もあります。

Snapshot Blob 操作を実行するには、HTTP アクションで次のプロパティを指定します。

プロパティ 必須 値の例 説明
URI はい https://<storage-account-name>/<folder-name>/{name} この構文を使用する Azure Global (パブリック) 環境内の Azure Blob Storage ファイルのリソース ID
Method はい PUT Snapshot Blob 操作で使用する HTTP メソッド
ヘッダー Azure Storage の場合 x-ms-blob-type = BlockBlob

x-ms-version = 2024-05-05

x-ms-date = formatDateTime(utcNow(),'r')
Azure Storage の操作には、x-ms-blob-typex-ms-version、および x-ms-date ヘッダー値が必要です。

重要: Azure Storage の発信 HTTP トリガーおよびアクションの要求では、ヘッダーに x-ms-version プロパティと実行する操作の API バージョンが必要です。 x-ms-date は現在の日付である必要があります。 それ以外の場合、ワークフローは 403 FORBIDDEN エラーで失敗します。 現在の日付を必要な形式で取得するには、例の値で式を使用します。

詳しくは、次のドキュメントをご覧ください。

- 要求ヘッダー - Snapshot Blob
- Azure Storage サービスのバージョン管理
クエリ スナップショット BLOB 操作の場合のみ comp = snapshot 操作のクエリ パラメーターの名前と値。
  1. ワークフロー デザイナーで必要なトリガーを追加し、HTTP アクションを追加します。

    次の例では、BLOB のスナップショット操作に使用する、前述のすべてのプロパティ値を使用したサンプル HTTP アクションを示します。

    スクリーンショットは、Azure portal、従量課金ワークフロー、リソースにアクセスするように設定された HTTP アクションを示しています。

  2. HTTP アクションに Authentication プロパティを追加します。 [高度なパラメーター] 一覧から [認証] を選択します。

    スクリーンショットは、HTTP アクションを伴う従量課金ワークフローと、[認証] という名前のプロパティが選択された [高度なパラメーター] 一覧が開かれている状態を示しています。

    HTTP アクションに [認証] セクションが表示されます。

    Note

    すべてのトリガーとアクションで認証の種類を追加できるわけではありません。 詳細については、「認証がサポートされているトリガーおよびアクションの認証の種類」を参照してください。

  3. [認証の種類] 一覧から、[マネージド ID] を選択します。

    スクリーンショットは、従量課金ワークフロー、HTTP アクション、[マネージド ID] のオプションが選択された [認証の種類] プロパティを示しています。

  4. [マネージド ID] の一覧から、シナリオに基づいて使用可能なオプションを選択します。

    • システム割り当て ID を設定した場合は、[システム割り当てマネージド ID] を選択します。

      スクリーンショットは、従量課金ワークフロー、HTTP アクション、[マネージド ID] プロパティでシステム割り当てマネージド ID のオプションが選ばれた状態を示しています。

    • ユーザー割り当て ID を設定する場合は、その ID を選択します。

      スクリーンショットは、従量課金ワークフロー、HTTP アクション、[マネージド ID] プロパティでユーザー割り当て ID が選ばれた状態を示しています。

    この例では、 [システム割り当てマネージド ID] を使用して先に進みます。

  5. 一部のトリガーとアクションでは、[対象ユーザー] プロパティが表示されます。これにより、対象の Azure リソースまたはサービスのリソース ID を設定できます。

    たとえば、グローバル Azure クラウド内の Key Vault リソースへのアクセスを認証するには、[対象ユーザー] プロパティをリソース ID https://vault.azure.net とまったく同じように設定する必要があります。

    [対象ユーザー] プロパティを設定しないと、既定では、[対象ユーザー] プロパティが Azure Resource Manager のリソース ID である https://management.azure.com/ リソース ID を使用します。

    重要

    ターゲット リソース ID は、Microsoft Entra ID が想定する値と正確に一致するようにしてください。 そうしないと、400 Bad Request エラーまたは 401 Unauthorized エラーが発生する可能性があります。 つまり、リソース ID の末尾にスラッシュがある場合は、必ずそれも含めてください。 そうでない場合は含めないでください。

    たとえば、すべての Azure Blob Storage アカウントのリソース ID には、末尾のスラッシュが必要です。 ただし、特定のストレージ アカウントのリソース ID については、末尾のスラッシュは必要ありません。 Microsoft Entra ID をサポートしている Azure サービスのリソース ID に関する記事をご覧ください。

    この例では、[対象ユーザー] プロパティを https://storage.azure.com/ に設定して、認証に使用されるアクセス トークンをすべてのストレージ アカウントに対して有効にしています。 ただし、特定のストレージ アカウントに対してルート サービス URL (https://<your-storage-account>.blob.core.windows.net) を指定することもできます。

    スクリーンショットは、従量課金ワークフロー、HTTP アクション、[対象ユーザー] プロパティにターゲット リソース ID が設定された状態を示しています。

    Azure Storage の Microsoft Entra ID を使用してアクセスを承認する方法の詳細については、次のドキュメントを参照してください。

  6. 必要な方法でワークフローの構築を続行します。

例:マネージド ID を使用してマネージド コネクタのトリガーまたはアクションを認証する

Azure Resource Manager のマネージド コネクタには、ロジック アプリのリソースに対して有効にしたマネージド ID を使用できるリソースの読み取りという名前のアクションがあります。 この例では、マネージド コネクタを使用してシステム割り当てマネージド ID を使用する方法を示します。

  1. ワークフロー デザイナーで、「リソースの読み取り」という名前の Azure Resource Manager アクションを追加します。

  2. [接続の作成] ペインで、[認証] 一覧の [マネージド ID] を選択し、[サインイン] を選択します。

    Note

    他のコネクタでは、代わりに [認証の種類] 一覧に [Logic Apps マネージド ID] が表示されるため、このオプションを選択します。

    スクリーンショットは、従量課金ワークフロー、Azure Resource Manager アクション、開かれた [認証] 一覧、[マネージド ID] について選択したオプションを示しています。

  3. 接続の名前を指定し、使用するマネージド ID を選択します。

    システム割り当て ID を有効にした場合、[マネージド ID] 一覧では [システム割り当てマネージド ID] 自動的に選ばれます。 代わりにユーザー割り当て ID を有効にした場合は、ユーザー割り当て ID が自動的に選択されます。

    この例では、 [システム割り当てマネージド ID] だけを選ぶことができます。

    スクリーンショットは、従量課金ワークフロー、Azure Resource Manager アクション、接続名が入力され、システム割り当てマネージド ID のオプションが選択されている状態を示しています。

    Note

    接続を作成または変更しようとしたときにマネージド ID が有効でない場合、またはマネージド ID が有効な接続がまだ存在する状態でマネージド ID が削除された場合は、ID を有効にして、ターゲット リソースへのアクセスを許可する必要があると通知するエラーが表示されます。

  4. 準備ができたら、[新規作成] を選択します。

  5. デザイナーは、接続を正常に作成すると、マネージド ID 認証を使用して動的な値、コンテンツ、またはスキーマをフェッチすることができます。

  6. 必要な方法でワークフローの構築を続行します。

マネージド ID を使用するロジック アプリのリソース定義と接続

マネージド ID を有効にして、使用する接続は、マネージ ID を使用する場合のみ動作する特殊な接続の種類です。 実行時には、ロジック アプリのリソースで有効になっているマネージド ID がその接続で使用されます。 Azure Logic Apps は、ワークフロー内のマネージド コネクタ操作がマネージド ID を使用するように設定されているかどうか、マネージド ID を使用してコネクタ操作で指定されたターゲット リソースにアクセスするために必要なすべてのアクセス許可があるかどうかを確認します。 この確認が成功すると、Azure Logic Apps でマネージド ID に関連付けられている Microsoft Entra トークンが取得され、その ID を使用してターゲット Azure リソースへのアクセスが認証され、ワークフロー内の構成済み操作が実行されます。

従量課金ロジック アプリ リソースでは、接続構成は、リソース定義の parameters オブジェクトに保存されます。これには、$connections オブジェクトが含まれ、この中に、接続のリソース ID へのポインターと、ユーザー割り当て ID が有効になっている場合はそのマネージド ID のリソース ID が入っています。

この例は、ロジック アプリでシステム割り当て ID を有効にした場合の parameters オブジェクト構成を示しています。

"parameters": {
   "$connections": {
      "value": {
         "<action-name>": {
            "connectionId": "/subscriptions/<Azure-subscription-ID>/resourceGroups/<resource-group-name>/providers/Microsoft.Web/connections/<connector-name>",
            "connectionName": "<connector-name>",
            "connectionProperties": {
               "authentication": {
                  "type": "ManagedServiceIdentity"
               }
            },
            "id": "/subscriptions/<Azure-subscription-ID>/providers/Microsoft.Web/locations/<Azure-region>/managedApis/<managed-connector-type>"
         }
      }
   }
}

この例は、ロジック アプリでユーザー割り当てマネージド ID を有効にした場合の parameters オブジェクト構成を示しています。

"parameters": {
   "$connections": {
      "value": {
         "<action-name>": {
            "connectionId": "/subscriptions/<Azure-subscription-ID>/resourceGroups/<resource-group-name>/providers/Microsoft.Web/connections/<connector-name>",
            "connectionName": "<connector-name>",
            "connectionProperties": {
               "authentication": {
                  "type": "ManagedServiceIdentity",
                  "identity": "/subscriptions/<Azure-subscription-ID>/resourceGroups/<resource-group-name>/providers/microsoft.managedidentity/userassignedidentities/<managed-identity-name>"
               }
            },
            "id": "/subscriptions/<Azure-subscription-ID>/providers/Microsoft.Web/locations/<Azure-region>/managedApis/<managed-connector-type>"
         }
      }
   }
}

API 接続とマネージド ID の ARM テンプレート

ARM テンプレートを使用してデプロイを自動化し、ワークフローにマネージド ID を使用するマネージド コネクタによって作成される API 接続が含まれる場合、追加のステップを実行します。

ARM テンプレートでは、基になるコネクタのリソース定義は、お使いのロジック アプリ リソースが従量課金か Standard か、コネクタに表示されるオプションが単一認証かまたは複数認証かによって異なります。

次の例は、従量課金ロジック アプリ リソースに適用され、基になるコネクタ リソース定義が、単一認証コネクタと複数認証コネクタとの間でどのように異なるかを示しています。

単一認証

この例は、1 種類の認証のみをサポートし、定義に次の属性を含む従量課金ロジック アプリ ワークフローのマネージド ID を使用する、コネクタ アクションの基になる接続リソース定義を示しています。

  • 従量課金ロジック アプリの場合、kind プロパティは V1 に設定されます。

  • parameterValueType プロパティが Alternative に設定されている。

{
    "type": "Microsoft.Web/connections",
    "apiVersion": "[providers('Microsoft.Web','connections').apiVersions[0]]",
    "name": "[variables('connections_<connector-name>_name')]",
    "location": "[parameters('location')]",
    "kind": "V1",
    "properties": {
        "alternativeParameterValues": {},
        "api": {
            "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'azureautomation')]"
        },
        "authenticatedUser": {},
        "connectionState": "Enabled",
        "customParameterValues": {},
        "displayName": "[variables('connections_<connector-name>_name')]",
        "parameterValueSet": {},
        "parameterValueType": "Alternative"
    }
},

複数認証

この例では、複数の認証の種類をサポートし、定義に次の属性が含まれる従量課金ロジック アプリ ワークフローでマネージド ID を使用する、コネクタ アクションの基になる接続リソース定義を示しています。

  • 従量課金ロジック アプリの場合、kind プロパティは V1 に設定されます。

  • parameterValueSet オブジェクトには、managedIdentityAuth に設定された name プロパティと、空のオブジェクトに設定された values プロパティが含まれます。

{
    "type": "Microsoft.Web/connections",
    "apiVersion": "[providers('Microsoft.Web','connections').apiVersions[0]]",
    "name": "[variables('connections_<connector-name>_name')]",
    "location": "[parameters('location')]",
    "kind": "V1",
    "properties": {
        "alternativeParameterValues":{},
        "api": {
            "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'azureblob')]"
        },
        "authenticatedUser": {},
        "connectionState": "Enabled",
        "customParameterValues": {},
        "displayName": "[variables('connections_<connector-name>_name')]",
        "parameterValueSet":{
            "name": "managedIdentityAuth",
            "values": {}
        },
        "parameterValueType": "Alternative"
    }
}

API 接続の認証に対する高度な制御を設定する

Standard ロジック アプリ ワークフローで、マネージド コネクタによって作成された API 接続を使用する場合、Azure Logic Apps は、次の 2 つの接続を使用して、メール アカウント、キー コンテナーなどのターゲット リソースと通信します。

ロジック アプリとトークン ストアの間の認証を使用した 1 番目の接続と、トークン ストアとターゲット リソースの間の 2 番目の接続を示す概念図。

  • 接続 1 は、内部トークン ストアの認証を使用して設定されます。

  • 接続 2 は、ターゲット リソースの認証を使用して設定されます。

ただし、従量課金ロジック アプリ ワークフローで API 接続を使用すると、接続 1 は、構成オプションなしで抽象化されます。 Standard ロジック アプリ リソースでは、ロジック アプリとワークフローを詳細に制御できます。 既定では、接続 1 は、システム割り当て ID を使用するために自動的に設定されます。

API 接続の認証を細かく制御する必要がある場合は、必要に応じて、接続 1 の認証を既定のシステム割り当て ID から、ロジック アプリに追加したユーザー割り当て ID に変更できます。 この認証は各 API 接続に適用されます。そのため、システム割り当て ID とユーザー割り当て ID を、異なる接続で同じターゲット リソースへ混在させることができます。

各 API 接続に関する情報を格納する Standard ロジック アプリの connections.json ファイルでは、次のように各接続定義に 2 つの authentication セクションがあります。

"keyvault": {
   "api": {
      "id": "/subscriptions/<Azure-subscription-ID>/providers/Microsoft.Web/locations/<Azure-region>/managedApis/keyvault"
   },
   "authentication": {
      "type": "ManagedServiceIdentity",
   },
   "connection": {
      "id": "/subscriptions/<Azure-subscription-ID>/resourceGroups/<resource-group-name>/providers/Microsoft.Web/connections/<connector-name>"
   },
   "connectionProperties": {
      "authentication": {
         "audience": "https://vault.azure.net",
         "type": "ManagedServiceIdentity"
      }
   },
   "connectionRuntimeUrl": "<connection-runtime-URL>"
}
  • 最初の authentication セクションは、接続番号 1 にマップされます。

    このセクションには、内部トークン ストアとの通信に使用される認証を記述します。 以前は、このセクションは Azure にデプロイされ構成可能なオプションがないアプリに対して常に ManagedServiceIdentity に設定されていました。

  • 2 番めの authentication セクションは、接続番号 2 にマップされます。

    このセクションには、その接続に対して選択した認証の種類に基づいて変動する、ターゲット リソースとの通信に使用される認証を記述します。

トークン ストアの認証を変更する理由

シナリオによっては、複数のロジック アプリ リソース間で同じ API 接続を共有して使用しますが、各ロジック アプリ リソースのシステム割り当て ID をターゲット リソースのアクセス ポリシーに追加しない場合があります。

その他のシナリオでは、ロジック アプリにシステム割り当て ID を完全に設定したくない場合があります。そのため、認証をユーザー割り当て ID に変更し、システム割り当て ID を完全に無効にできます。

トークン ストアの認証を変更する

  1. Azure portal で、Standard ロジック アプリ リソースを開きます。

  2. リソース メニューで、[ワークフロー]の下の [接続] を選択します。

  3. [接続] ペインで [JSON ビュー] を選択します。

    Azure portal、Standard ロジック アプリ リソースを示すスクリーンショット。[接続] ウィンドウで [JSON ビュー] が選択されています。

  4. JSON エディターで、managedApiConnections セクションを探します。このセクションには、ロジック アプリ リソース内のすべてのワークフローにわたる API 接続が含まれています。

  5. ユーザー割り当てマネージド ID を追加する接続を見つけます。

    たとえば、ワークフローに Azure Key Vault 接続があるとします。

    "keyvault": {
       "api": {
          "id": "/subscriptions/<Azure-subscription-ID>/providers/Microsoft.Web/locations/<Azure-region>/managedApis/keyvault"
       },
       "authentication": {
          "type": "ManagedServiceIdentity"
       },
       "connection": {
          "id": "/subscriptions/<Azure-subscription-ID>/resourceGroups/<resource-group-name>/providers/Microsoft.Web/connections/<connector-name>"
       },
       "connectionProperties": {
          "authentication": {
             "audience": "https://vault.azure.net",
             "type": "ManagedServiceIdentity"
          }
       },
       "connectionRuntimeUrl": "<connection-runtime-URL>"
    }
    
  6. 接続定義で、次の手順を実行します。

    1. 最初の authentication セクションを見つけます。 この authentication セクションに identity プロパティがない場合、ロジック アプリはシステム割り当て ID を暗黙的に使用します。

    2. この手順の例を使用して、identity プロパティを追加します。

    3. プロパティ値を、ユーザー割り当て ID のリソース ID に設定します。

    "keyvault": {
       "api": {
          "id": "/subscriptions/<Azure-subscription-ID>/providers/Microsoft.Web/locations/<Azure-region>/managedApis/keyvault"
       },
       "authentication": {
          "type": "ManagedServiceIdentity",
          // Add "identity" property here
          "identity": "/subscriptions/<Azure-subscription-ID>/resourcegroups/<resource-group-name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identity-resource-ID>"
       },
       "connection": {
          "id": "/subscriptions/<Azure-subscription-ID>/resourceGroups/<resource-group-name>/providers/Microsoft.Web/connections/<connector-name>"
       },
       "connectionProperties": {
          "authentication": {
             "audience": "https://vault.azure.net",
             "type": "ManagedServiceIdentity"
          }
       },
       "connectionRuntimeUrl": "<connection-runtime-URL>"
    }
    
  7. Azure portal でターゲット リソースに移動し、ターゲット リソースのニーズに基づいてユーザー割り当てマネージド ID へのアクセスを許可します

    たとえば、Azure Key Vault の場合、キー コンテナーのアクセス ポリシーに ID を追加します。 Azure Blob Storage の場合、ID に必要なロールをストレージ アカウントに割り当てます。

マネージド ID を無効にする

認証にマネージド ID の使用することを止めるには、まず、ターゲット リソースに対する ID のアクセス権を削除します。 次に、ロジック アプリのリソースで、システム割り当て ID をオフにするか、ユーザー割り当て ID を削除します。

ロジック アプリのリソースでマネージド ID を無効にすると、その ID がアクセス権を持っていた Azure リソースへのアクセスを要求する機能がその ID から削除されます。

Note

システム割り当て ID を無効にした場合、そのロジック アプリのワークフローが使用していたすべての接続は、直ちにその ID を再び有効にした場合でも、実行時に機能しなくなります。 このような動作が生じるのは、ID を無効にするとそのオブジェクト ID が削除されるためです。 ID を有効にするたびに、異なる一意のオブジェクト ID を持つ ID が Azure によって生成されます。 この問題を解決するには、現在のシステム割り当て ID に対する現在のオブジェクト ID を使用するように、接続を再作成する必要があります。

システム割り当て ID を無効にするのは、できるだけ避けてください。 Azure リソースへの ID のアクセス権を削除する場合は、ターゲット リソースから ID のロールの割り当てを削除します。 ロジック アプリのリソースを削除すると、マネージド ID が Microsoft Entra ID から自動的に削除されます。

このセクションの手順では、Azure portalAzure Resource Manager テンプレート (ARM テンプレート) を使用する方法について説明します。 Azure PowerShell、Azure CLI、Azure REST API については、次のドキュメントを参照してください。

ツール ドキュメント
Azure PowerShell 1. ロールの割り当てを削除する
2. ユーザー割り当て ID を削除する
Azure CLI 1. ロールの割り当てを削除する
2. ユーザー割り当て ID を削除する
Azure REST API 1. ロールの割り当てを削除する
2. ユーザー割り当て ID を削除する

詳細については、「Azure ロールの割り当ての削除」を参照してください。

Azure portal でマネージド ID を無効にする

マネージド ID のアクセス権を削除するには、ターゲット リソースから ID のロールの割り当てを削除してから、マネージド ID を無効にします。

ロールの割り当てを削除する

次の手順では、マネージド ID からターゲット リソースへのアクセス権を削除します。

  1. Azure portal で、マネージド ID のアクセス権を削除するターゲット Azure リソースに移動します。

  2. ターゲット リソースのメニューから [アクセス制御 (IAM)] を選択します。 ツール バーで、 [ロールの割り当て] を選択します。

  3. ロールの一覧で、削除するマネージド ID を選択します。 ツール バーの [削除] を選択します。

    ヒント

    [削除] オプションが無効になっている場合は、ご自分にアクセス許可がない可能性があります。 リソースのロールを管理するためのアクセス許可の詳細については、Microsoft Entra ID での管理者ロールのアクセス許可に関する記事をご覧ください。

ロジック アプリのリソースのマネージド ID を無効にする

  1. Azure portal で、ロジック アプリ リソースを開きます。

  2. ロジック アプリ リソース メニューの [設定] で、[ID] を選択してから、お使いの ID の手順に従います。

    • [システム割り当て済み]>[オン]>[保存] を選択します。 確認を求めるメッセージが表示されたら、 [はい] を選択します。

    • [ユーザー割り当て済み] とマネージド ID を選択し、 [削除] を選択します。 確認を求めるメッセージが表示されたら、 [はい] を選択します。

ARM テンプレートでマネージド ID を無効にする

ARM テンプレートを使用してロジック アプリのマネージド ID を作成した場合は、identity オブジェクトの type 子プロパティを None に設定します。

"identity": {
   "type": "None"
}