Power Platform マネージド ID を使用すると、Dataverse プラグインまたはプラグイン パッケージを Azure リソースに接続して、資格情報を必要とせずにマネージド ID をサポートできます。 この記事では、Power Platform 環境でマネージド ID を設定する方法について説明します。
前提条件
- ユーザー割り当てマネージド ID (UAMI) またはアプリケーションの登録へのアクセス権を持つ Azure サブスクリプション。
- プラグインまたはプラグイン パッケージ用のツール:
- Visual Studio などの統合開発環境 (IDE) でプラグインを構築する
- プラグイン登録ツール
- SignTool.exe (署名ツール)、プラグイン アセンブリに署名する
- Power Platform CLI
- プラグイン アセンブリに署名するための有効な証明書。
マネージド ID の設定
Dataverse プラグインまたはプラグイン パッケージの Power Platform マネージド ID を構成するには、次の手順を実行します。
- 新しいアプリの登録、またはユーザー割り当てマネージド ID を作成します。
- フェデレーション ID の認証情報を構成します。
- Dataverse プラグインまたはプラグイン パッケージを作成して登録します。
必ずプラグイン アセンブリをビルドし、プラグインまたはプラグイン パッケージを登録してください。 - Dataverse でマネージド ID レコードを作成します。
- アプリケーションまたはユーザー割り当てマネージド ID (UAMI) に Azure リソースへのアクセス権を付与します。
- プラグインの統合を検証します。
新しいアプリの登録、またはユーザー割り当てマネージド ID を作成します
次のシナリオに基づいて、Microsoft Entra ID でユーザー割り当てマネージド ID またはアプリケーションを作成できます。
- Azure Key Vault などの Azure リソースに接続するプラグインに関連付けられているアプリ ID が必要な場合は、 アプリケーションの登録を使用します。 アプリ ID を使用すると、Azure リソースにアクセスするプラグインに Azure ポリシーを適用できます。
- サービス プリンシパルが Azure Key Vault などの Azure リソースにアクセスできるようにする場合は、 ユーザー割り当てマネージド ID をプロビジョニングできます。
メモ
後の手順で使用するため、次の ID を必ずキャプチャしてください。
- アプリケーション (クライアント) ID
- テナント ID
フェデレーション ID の認証情報を構成します
マネージド ID を構成するには、前のセクションで作成したユーザー割り当てマネージド ID または Microsoft Entra ID アプリケーションを Azure ポータルで開きます。
- Azure portal に移動します。
- Microsoft Entra ID に移動します。
- [アプリの登録] を選択します。
- マネージド ID の設定 で作成したアプリを開きます。
- [証明書とシークレット] に移動します。
- [ フェデレーション資格情報 ] タブを選択し、[ 資格情報の追加] を選択します。
- 発行者としてその他の発行者を選択します。
- 次の情報を入力します。
発行者
テナントの v2.0 発行者を使用します。
https://login.microsoftonline.com/{tenantID}/v2.0
Example
https://login.microsoftonline.com/5f8a1a9f-2e1a-415f-b10c-84c3736a21b9/v2.0
タイプ
[ 明示的なサブジェクト識別子] を選択します。
サブジェクト識別子
証明書の種類に一致する形式を選択します。
自己署名証明書 (開発のみ):
/eid1/c/pub/t/{encodedTenantId}/a/qzXoWDkuqUa3l6zM5mM0Rw/n/plugin/e/{environmentId}/h/{hash}信頼された発行者証明書 (運用環境で推奨):
/eid1/c/pub/t/{encodedTenantId}/a/qzXoWDkuqUa3l6zM5mM0Rw/n/plugin/e/{environmentId}/i/{issuer}/s/{certificateSubject}
セグメント参照
| セグメント | Description |
|---|---|
| eid1 | ID 形式のバージョン |
| c/pub | パブリック クラウド、Government Community Cloud (GCC)、GCC の最初のリリース ステーション用のクラウド コード。 |
| t/{encodedTenantId} | テナント ID |
| a/qzXoWDkuqUa3l6zM5mM0Rw/ | 内部のみで使用します。 変更しないでください。 |
| n/プラグイン | プラグイン コンポーネント |
| e/{environmentId} | 環境 ID |
| h/{hash} | 証明書の SHA-256 (自己署名のみ) |
| i/{issuer} s/{certificateSubject} |
信頼された発行者の詳細 |
自己署名証明書を生成する
すべてのプラグインには検証可能な ID が必要であり、署名証明書はプラグインの一意のフィンガープリントとして機能します。 次のコードは、開発またはテストのシナリオで自己署名証明書を生成するために使用できる PowerShell スニペットのサンプルです。 参考までに、 例 3 から従うことができます。
$params = @{
Type = 'Custom'
Subject = 'E=admin@contoso.com,CN=Contoso'
TextExtension = @(
'2.5.29.37={text}1.3.6.1.5.5.7.3.4',
'2.5.29.17={text}email=admin@contoso.com' )
KeyAlgorithm = 'RSA'
KeyLength = 2048
SmimeCapabilities = $true
CertStoreLocation = 'Cert:\CurrentUser\My'
}
New-SelfSignedCertificate @params
メモ
のエンコード {encodedTenantId}
- GUID を 16進数に変換します。
- 16進数→Base64URL に変換します(標準のBase64ではない形式です)。
自己署名ハッシュ
-
.cerで SHA-256 を計算します。
.pfx がある場合は、最初に.cerをエクスポートします。
CertUtil -hashfile <CertificateFilePath> SHA256 $cert = Get-PfxCertificate -FilePath "path o\your.pfx" $cert.RawData | Set-Content -Encoding Byte -Path "extracted.cer"
特殊な Azure クラウド環境
GCC でパブリック クラウド、GCC、および最初のリリース ステーションの外部にデプロイする場合は、 対象ユーザー、 発行者 URL、 およびサブジェクト プレフィックス を明示的に設定します。
| 雲 | 聴衆 | 発行者 URL | 件名プレフィックス |
|---|---|---|---|
| GCC HighとDoD | api://AzureADTokenExchangeUSGov |
https://login.microsoftonline.us |
/eid1/c/usg |
| ムーンケーキ (中国) | api://AzureADTokenExchangeChina |
https://login.partner.microsoftonline.cn |
/eid1/c/chn |
| US National (USNAT) | api://AzureADTokenExchangeUSNat |
https://login.microsoftonline.eaglex.ic.gov |
/eid1/c/uss |
| US Secure (USSec, ユーエスセキュア) | api://AzureADTokenExchangeUSSec |
https://login.microsoftonline.scloud |
/eid1/c/usn |
メモ
オーディエンスの値は大文字と小文字を区別し、正確に一致しなければなりません。
GCC (およびその他の一覧に記載されていないクラウド) のパブリック クラウド、GCC、および最初のリリース ステーションの場合、既定値は次のとおりです。
対象ユーザー api://AzureADTokenExchange、発行者 https://login.microsoftonline.com、件名プレフィックス /eid1/c/pub。
Dataverse プラグインまたはプラグイン パッケージを作成して登録する
プラグイン アセンブリを構築します
Visual Studio を使用してプラグインを作成します。 プラグインを構築する際には、新しいアプリの登録またはユーザー割り当てのマネージド ID を作成するからテナント ID を使用し、
https://{OrgName}.crm*.dynamics.com/.defaultのように組織の URL としてユーザー割り当てのマネージド ID とスコープを設定するか、さらに詳細なスコープを設定します。IManagedIdentityService を使用し、指定されたスコープのトークンを要求するトークン メソッドを取得します。
メソッドシグネチャ:
string AcquireToken(IEnumerable<string> scopes);
パッケージ化と署名
プラグイン パッケージへの署名
プラグイン パッケージをビルドする場合は、 NuGet Sign CLI を使用して、.nuspec ファイルまたは .csproj ファイルからパッケージを生成します。 パッケージを生成した後、証明書で署名します。
nuget sign YourPlugin.nupkg `
-CertificatePath MyCert.pfx `
-CertificatePassword "MyPassword" `
-Timestamper http://timestamp.digicert.com
プラグイン アセンブリへの署名
プラグイン (アセンブリ) を登録する場合は、 SignTool.exe (署名ツール) を使用して、証明書で DLL に署名します。
signtool sign /f MyCert.pfx /p MyPassword /t http://timestamp.digicert.com /fd SHA256 MyAssembly.dll
必要に応じて、RFC 3161 準拠のタイムスタンプ サーバーの URL を指定してタイムスタンプを追加できます。
メモ
自己署名証明書は、開発またはテスト目的でのみ使用します。 運用環境では自己署名証明書を使用しないでください。
プラグインの登録
プラグイン登録ツールをコンピューターにまだインストールしていない場合は、インストールします。 詳細については、Dataverse 開発ツールを参照してください。
プラグインを登録します。 詳細については、プラグイン ステップの登録を参照してください。
Dataverse でマネージド ID レコードを作成する
Dataverse でマネージド ID レコードをプロビジョニングするには、次の手順を実行します。
REST クライアント (不眠症など) で HTTP POST 要求を送信して、マネージド ID を作成します。 URL と要求本文を次の形式で使用します。
POST https://<<orgURL>>/api/data/v9.0/managedidentities必ず orgURL の部分を組織の URL に置き換えてください。
ペイロードで credentialsource が 2 に設定され、環境固有のシナリオでは サブジェクトスコープ が 1 に設定され、 ペイロードのバージョン が 1 に設定されていることを確認します。
サンプル ペイロード
{ "applicationid": "<<appId>>", //Application Id, or ClientId, or User Managed Identity "managedidentityid": "<<anyGuid>>", "credentialsource": 2, // Managed client "subjectscope": 1, //Environment Scope "tenantid": "<<tenantId>>", //Entra Tenant Id "version": 1 }手順 1 で作成したマネージド ID に関連付ける HTTP PATCH 要求を発行して、プラグイン パッケージまたはプラグイン アセンブリ レコードを更新します。
プラグイン アセンブリ
PATCH https://<<orgURL>>/api/data/v9.0/pluginassemblies(<<PluginAssemblyId>>)プラグイン パッケージ
PATCH https://<<orgURL>>/api/data/v9.0/pluginpackages(<<PluginPackageId>>)サンプル ペイロード
{ "managedidentityid@odata.bind": "/managedidentities(<<ManagedIdentityGuid>>)" }orgURL、PluginAssemblyId (または PluginPackageId)、ManagedIdentityGuid を実際の値に置き換えてください。
Azure リソースへのアクセスを、アプリケーションまたはユーザー割り当てマネージド ID に付与します
Azure Key Vault などの Azure リソースにアクセスするためにアプリケーション ID へのアクセス権を付与する必要がある場合は、そのリソースへのアプリケーションまたはユーザー割り当てマネージド ID へのアクセスを許可します。
プラグインの統合を検証します
プラグインが、マネージド ID をサポートする Azure リソースへのアクセスを安全に要求でき、個別の認証情報を必要としないことを確認してください。
よく寄せられる質問 (FAQ)
このエラーを解決するにはどうすればよいですか。
次のエラー メッセージが表示される場合:
エラーの発生 – 構成の問題が認証を妨げている。
AADSTS700213: 一致するフェデレーション ID レコードが見つかりません
この問題を解決するには、次の手順を実行します。
FIC が正しく構成され、保存されていることを確認します。
発行者/サブジェクトが、前に指定した形式と一致することを確認します。
また、エラー スタックで予期される形式を見つけることもできます。
"Power Platform にアクセスできない、または Power Platform に接続できない" というエラーを解決するにはどうすればよいですか?
Power Platform エンドポイントが到達可能で許可リストに登録されていることを確認するには、Power Platform の URL と IP アドレス範囲 を参照してください。