このエントリは2026/02/10現在の情報に基づいています。将来の機能追加や変更に伴い、記載事項からの乖離が発生する可能性があります。
問い合わせ
お初の人から以下のような問い合わせが届いた。
現在Logic AppsからFunctionsを呼び出すために(Functionsコネクターではなく)HTTPコネクターを使っている。呼び出し元を制限したいのだが、どうすればよいか?設定自体は通常のREST API呼び出しと同様に構成すればいいことは理解しており、所属するEntra IDテナントの任意のID、任意のクライアントアプリケーションからのアクセスであれば動作することは確認済みである。Logic AppsではSystem Assigned Managed Identityを使っているので、このManaged Identityを使って制限したい。
呼び出し元が同一Entra IDテナントであることがわかればOK、というのであれば、自テナントの任意のクライアントアプリ、任意のIDからだけ許可すればよい。とはいえ実際には呼び出し元を制限するのがふつうなので、どうしたらよいか、という問い合わせである。
この主があえてHTTPコネクターを使っているのは、同一Entra IDの別サブスクリプション上にあるFunctionsを呼び出す場合、Logic Appsのコネクターの制限で呼び出したいFunctionsを指定できないため、だそうな。
ふつうなら
Easy Authだけで完結させたいなら、クライアントアプリケーション、IDの要件を設定すればよい。この問い合わせ主の例ではSystem Assigned Managed Identityの情報を追加する。
| ラベル | 設定 |
|---|---|
| Client application requirement (クライアントアプリケーションの要件) | Allow requests from specific client applications(特定のクライアント アプリケーションからの要求を許可する)を選択し、System assigned managed identityのApplication (client) IDを指定 |
| Identity requirement (ID の要件) | Allow requests from specific identities(特定のIDを許可する)を選択し、System assigned managed identityのPrincipal ID (Object ID) を指定 |

Azure CLIで取得するなら以下のような感じ。
# Principal IDPRINCIPAL_ID=$(az resource show -g <Resource Group> \ -n <LogicApp name> \ --resource-type Microsoft.Logic/workflows \ --query identity.principalId -o tsv)# Principal IDからApp IDを取得az ad sp show --id "$PRINCIPAL_ID" --query appId -o tsv
もう一つの方法
Easy Authだけで管理してもいいのだが、呼び出し元が多くなると管理が面倒である。Entra IDで特定のアプリケーションからの呼び出しのみを許可する方法もあるので、そちらも紹介しておいた。
1. Easy Authの設定
Easy Auth 側は、Entra IDのみ自テナントのみに制限、その他の「任意」にする。
| 設定項目 | 設定値 |
|---|---|
| Client application requirement (クライアントアプリケーションの要件) | Allow requests from any application(任意のアプリケーションからの要求を許可する)を選択 |
| Identity requirement (ID の要件) | Allow requests from any identity(任意のIDを許可する)を選択 |

2. Entra IDの設定
(1) アプリ登録 > Functions のアプリを選択
(2)【ローカルディレクトリのマネージド アプリケーション】をクリック

(3) エンタープライズアプリケーションに遷移するので、管理 > プロパティ で【割り当てが必要ですか?】を「はい」に変更
(4) Easy Authを構成したFunctionsを呼び出せるLogic Appsを設定する。Portalからは追加できないようなので、以下のAzure CLIもしくはREST APIを使う。今回はDefaultのAppRoleを使っているが、カスタムのAppRoleを定義しているなら、当該AppRoleのIDを使う必要がある。
# Functions' Object IDSP_ID="<Functions' Object ID appeared in Enterprise App>"# Object ID retrieved from Managed Identity asssigned to Logic AppsMI_ID="<Object ID retrieved from Managed Identity asssigned to Logic Apps>"# Default AppRole ID (Default Access)ROLE_ID="00000000-0000-0000-0000-000000000000"# Azure CLIaz ad sp app-role-assignment add \ --assignee-object-id "$MI_ID" \ --assignee-principal-type ServicePrincipal \ --resource-id "$SP_ID" \ --app-role-id "$ROLE_ID"# invoke REST APIaz rest --method POST \ --uri "https://graph.microsoft.com/v1.0/servicePrincipals/$SP_ID/appRoleAssignments" \ --body "{ \"principalId\": \"$MI_ID\", \"resourceId\": \"$SP_ID\", \"appRoleId\": \"$ROLE_ID\" }"
Logic Apps HTTPコネクターの構成
いずれの方式をとったとしても同じ。重要なのは、Advanced parameters(詳細パラメーター)でAuthenticationを選択し、以下のように構成する点。
| 設定項目 | 設定値 |
|---|---|
| Authentication type | Managed Identity |
| Managed Identity(マネージドID) | Logic Appsに割り当てたManaged Identity(今回だとSystem assigned managed identity) |
| Audience | FunctionsのAPI ID (スコープは付けない) 【例】api://012e34ef-c567-890e-1fc2-fc34567bfd8d |

両方式の違い
それぞれ観点が違うので、ニーズに合わせて選択する必要があるが、大まかにいうと、Easy Authだけで管理するのは小規模な場合で、呼び出し元の個数が増えるならEntra IDに管理を任せるのが推奨。
| 観点 | Easy Auth で制御 | Entra ID (割り当て必須) で制御 |
|---|---|---|
| 設定場所 | Functions の認証ブレード | Entra ID エンタープライズ アプリ |
| 制御の粒度 | appId + テナント単位 | appRoleAssignment 単位 |
| 複数クライアントの追加 | UI で appId を列挙 | ロール割り当てを追加 |
| 監査ログ | App Service ログ | Entra ID サインインログ |
| IaC管理 | ARM/Bicep: authsettingsV2 | Microsoft Graph API |