PowerShell を使用したサービス プリンシパル アプリケーションの作成

ユーザー名とパスワードによる認証は、特に多要素認証の台頭により、多くの場合理想的ではありません。 このような場合、サービス プリンシパル (またはクライアント資格情報フロー) 認証が推奨されます。 これを行うには、新しいサービス プリンシパル アプリケーションを独自の Microsoft Entra テナントに登録し、その同じアプリケーションを Power Platform に登録します。

管理者管理アプリケーションの登録

まず、クライアント アプリケーションを Microsoft Entra テナントに登録する必要があります。 この設定については、PowerShell で同じアプリケーション セットアップが必要なため、Power Platform API の認証の記事を確認してください。

クライアント アプリケーションを Microsoft Entra ID に登録した後、Microsoft Power Platform にも登録する必要があります。 現在、Power Platform 管理センターを介してこれを行う方法はありません。Power Platform API または Power Platform 管理者用 PowerShell を介してプログラムで実行する必要があります。 サービス プリンシパルはそれ自体を登録できません。設計上、アプリケーションは 管理者ユーザー名とパスワードのコンテキスト で登録する必要があります。 これにより、テナントの管理者であるユーザーがアプリケーションを作成できます。

新しい管理アプリケーションを登録するには、次のスクリプトを使用します。

$appId = "CLIENT_ID_FROM_AZURE_APP"

# Login interactively with a tenant administrator for Power Platform
Add-PowerAppsAccount -Endpoint prod -TenantID $tenantId 

# Register a new application, this gives the SPN / client application same permissions as a tenant admin
New-PowerAppManagementApp -ApplicationId $appId

サービス プリンシパルとして要求を行う

Microsoft Power Platform に登録されたので、サービス プリンシパル自体として認証できます。 次のスクリプトを使用して、環境リストを照会します。

$appId = "CLIENT_ID_FROM_AZURE_APP"
$secret = "SECRET_FROM_AZURE_APP"
$tenantId = "TENANT_ID_FROM_AZURE_APP"

Add-PowerAppsAccount -Endpoint prod -TenantID $tenantId -ApplicationId $appId -ClientSecret $secret -Verbose
Get-AdminPowerAppEnvironment

サービス プリンシパルの制限

現在、サービス プリンシパル認証は、環境管理、テナント設定、および Power Apps 管理に対して動作します。 フローに関連するコマンドレットは、Microsoft Entra ID のサービス プリンシパル ID にライセンスを割り当てることができないため、ライセンスが不要な状況でサービス プリンシパル認証でサポートされます。

サービス プリンシパル アプリケーションは、Power Platform 内で、Power Platform 管理者ロールが割り当てられた通常のユーザーの場合と同様に処理されます。 機能を制限するために、詳細なロールとアクセス許可を割り当てることはできません。 これはプラットフォーム サービスがサービス プリンシパルによって行われた要求を処理する方法であるため、アプリケーションには Microsoft Entra ID で特別なロールが割り当てられません。