web-dev-qa-db-ja.com

ARMテンプレートデプロイでのマネージドサービスIDの参照

新しいMSI機能を使用してMicrosoft.Webリソースをデプロイすると、作成されたユーザーのprincipalId GUIDがデプロイメント後に表示されます。以下のスクリーンショットは、ARMテンプレートの構造を示しています。

enter image description here

これをフェッチする最良の方法は何ですかGUID後で(たとえば)Data Lake Storeでアクセス権を割り当てることができるようにするためにパイプラインで?)

既存のARMテンプレート関数を使用することは可能ですか?

26
soderstromOlov

私はこれだけで苦労しました。私にとってうまくいった解決策は、コメントの奥深くにあります here

基本的に、MSIサポートで作成しているリソースをターゲットとする変数を作成します。次に、変数を使用して、特定のtenantIdおよびprincipalId値をフェッチできます。理想的ではありませんが、動作します。私の例では、Function AppのKey Vault権限を構成しています。

変数を作成するには、以下の構文を使用します。

"variables": {
    "identity_resource_id": "[concat(resourceId('Microsoft.Web/sites', variables('appName')), '/providers/Microsoft.ManagedIdentity/Identities/default')]"
}

TenantIdとprincipalIdの実際の値を取得するには、次の構文でそれらを参照します。

{
    "tenantId": "[reference(variables('identity_resource_id'), '2015-08-31-PREVIEW').tenantId]",
    "objectId": "[reference(variables('identity_resource_id'), '2015-08-31-PREVIEW').principalId]"
}

これが同じ問題を抱えている人を助けることを願っています!

53
Sonoilmedico

以下にいくつかのサンプルテンプレートを示します。 https://github.com/rashidqureshi/MSI-Samples a)ARMリソースへのRBACアクセスを許可する方法b) MSIのOIDを使用してkeyvaultのアクセスポリシーを作成する方法

1
rashid