Microsoft Entra サービス プリンシパルを使用して、ブラウザーを開いたり、キャッシュされたユーザー アカウントを使用したりせずに、Power Apps CLI を認証します。 この認証方法は、継続的インテグレーションおよび継続的デリバリー (CI/CD) パイプラインや、既存のコード アプリに更新プログラムを発行するその他の自動化されたプロセスに役立ちます。
更新プログラムを発行するには、サービス プリンシパルがターゲットの Power Platform 環境にアクセスし、コード アプリへのアクセス権を 編集 する必要があります。 環境レベルのアクセス許可だけでは、既存のアプリを更新するアクセス許可は付与されません。 アプリ共有とサービス プリンシパル認証は個別の機能ですが、アプリの共有は、サービス プリンシパルとして更新プログラムを発行するための前提条件です。
Important
アプリ 作成者は、サービス プリンシパルが最初の更新プログラムを発行する前に、サービス プリンシパルとアプリを共有する必要があります。 共有は 1 回限りの前提条件であり、定期的な発行プロセスの一部ではありません。 サービス プリンシパル自体にアクセス権を付与することはできません。
[前提条件]
既に公開済みの Power Apps コード アプリ
アプリを共有するアクセス許可を持つアプリ 作成者アカウント
ターゲットの Power Platform 環境にアクセスできるMicrosoft Entra サービス プリンシパル
これらのサービス プリンシパル値:
- アプリケーション (クライアント) ID
- クライアント シークレット
- ディレクトリ(テナント)ID
- エンタープライズ アプリケーション オブジェクト ID
サービス プリンシパル識別子について
Microsoft Entra IDは、アプリの登録とそのサービス プリンシパルに対していくつかの識別子を提供します。 各操作に正しい識別子を使用します。
| 識別子 | 検索する場所 | 使用方法 |
|---|---|---|
| アプリケーション (クライアント) ID | アプリの登録 |
PA_CLI_SP_CLIENT_ID 環境変数を設定します。 |
| ディレクトリ(テナント)ID | アプリの登録 |
PA_CLI_SP_TENANT_ID 環境変数を設定します。 |
| エンタープライズ アプリケーション オブジェクト ID | エンタープライズ アプリケーション |
pa app share --principalに渡します。 |
前提条件: サービス プリンシパルとアプリを共有する
アプリにサービス プリンシパルの 編集 アクセス権が既にある場合は、このセクションをスキップします。 それ以外の場合は、アプリ メーカーのコンピューターからこれらの手順を 1 回実行します。 CI/CD パイプラインに共有コマンドを含めないでください。
Important
アプリケーション (クライアント) ID、ディレクトリ (テナント) ID、クライアント シークレットが見つかるMicrosoft Entra 管理センターのアプリの登録に表示されるオブジェクト ID は使用しないでください。 代わりに、エンタープライズ アプリケーションに表示されるオブジェクト ID を使用してください。
または、アプリケーション (クライアント) ID がわかっている場合は、Azure CLI az ad sp show コマンドを使用してエンタープライズ アプリケーション オブジェクト ID を取得します。
az ad sp show --id <application-client-id> --query id --output tsv
アプリ 作成者としてサインインし、コード アプリを共有する
アプリを共有するときにサービス プリンシパル認証を有効にしないでください。
pa auth login コマンドを使用して、アプリ メーカー アカウントを使用して対話形式でサインインします。
pa auth login --account <maker-email>
pa auth status コマンドを使用して、アプリ 作成者アカウントがアクティブであることを確認します。
pa auth status
アプリ フォルダーで、 コマンドを使用してサービス プリンシパルに編集アクセス権を付与します:
pa app share --principal <enterprise-application-object-id> --access edit
edit アクセス レベルは、pa app push コマンドを使用してアプリを更新するアクセス許可をサービス プリンシパルに付与します。
更新せずにアプリを再生するアクセス許可を付与するには、 --access playを使用します。
pa app share --principal <enterprise-application-object-id> --access play
サービス プリンシパルとして更新を公開する
アプリにサービス プリンシパルの 編集 アクセス権が付与されたら、サービス プリンシパルを使用して CI/CD パイプラインまたはローカル コンピューターから更新プログラムを発行します。 更新ごとにこの手順を繰り返します。 サービス プリンシパルのアクセス権が削除されない限り、アプリを再び共有する必要はありません。
サービス プリンシパル認証を構成する
更新プログラムの発行に使用する CI/CD ジョブまたはターミナル セッションで、サービス プリンシパル認証環境変数を設定します。 これらの変数により、キャッシュされた対話型アカウントを使用する代わりに、CLI がサービス プリンシパルとして認証されます。
$env:PA_CLI_USE_SP_AUTH = "true"
$env:PA_CLI_SP_CLIENT_ID = "<application-client-id>"
$env:PA_CLI_SP_CLIENT_SECRET = "<client-secret>"
$env:PA_CLI_SP_TENANT_ID = "<tenant-id>"
変数を設定したら、ビルドを実行し、そのターミナル セッションまたは CI/CD ジョブからコマンドを発行します。
更新プログラムをビルドして発行する
プロジェクト用に構成されたコマンドを使用してアプリをビルドします。 例えば次が挙げられます。
npm run build
pa app push コマンドを使用して、コンパイル済みアプリを非インターアクティブ モードで発行する
pa app push --non-interactive
CLI は環境変数のサービス プリンシパル資格情報を使用し、ブラウザーを開いたり、キャッシュされた対話型アカウントを使用したりしません。
コマンドが完了すると、 0 の終了コードは、更新プログラムが発行されたことを示します。 0 以外の終了コードは、コマンドが失敗したことを示します。