チュートリアル: Azure Virtual Desktop (クラシック) で PowerShell を使用してサービス プリンシパルとロールの割り当てを作成する

重要

この内容は、Azure Resource Manager Azure Virtual Desktop オブジェクトをサポートしていない Azure Virtual Desktop (クラシック) に適用されます。

サービス プリンシパルとは、特定の目的に使用するロールやアクセス許可を割り当てるために Microsoft Entra ID に作成できる ID です。 Azure Virtual Desktop では、次の用途でサービス プリンシパルを作成できます。

  • Azure Virtual Desktop の特定の管理タスクを自動化する。
  • Azure Virtual Desktop 用の Azure Resource Manager テンプレートを実行する際、MFA が求められるユーザーの代わりとなる資格情報として使用する。

このチュートリアルで学習する内容は次のとおりです。

  • Microsoft Entra ID にサービス プリンシパルを作成する。
  • Azure Virtual Desktop にロールの割り当てを作成します。
  • サービス プリンシパルを使用して Azure Virtual Desktop にサインインします。

前提条件

サービス プリンシパルやロール割り当てを作成する前に、次のことを行う必要があります。

  1. 手順に従って Azure Az PowerShell モジュールをインストールします。

  2. Azure Virtual Desktop PowerShell モジュールをダウンロードしてインポートします。

重要

同じ PowerShell セッションで、この記事のすべての手順を実行します。 ウィンドウを閉じてから開き直すことによって PowerShell セッションを中断すると、手順がうまくいかない場合があります。

Microsoft Entra ID でサービス プリンシパルを作成する

これらの前提条件を PowerShell セッションで満たしたら、次の PowerShell コマンドレットを実行して、マルチテナント サービス プリンシパルを Azure に作成します。

Import-Module Az.Resources
Connect-AzConnect
$aadContext = Get-AzContext
$svcPrincipal = New-AzADApplication -AvailableToOtherTenants $true -DisplayName "Azure Virtual Desktop Svc Principal"
$svcPrincipalCreds = New-AzADAppCredential -ObjectId $svcPrincipal.Id

PowerShell で資格情報を確認する

サービス プリンシパルのロールの割り当てを作成する前に、自分の資格情報を確認し、後で参照できるよう書き留めておいてください。 特にパスワードは、この PowerShell セッションを閉じた後は取得できなくなるので注意が必要です。

次に示したのは、書き留めておくべき 3 つの値と、それらを取得するために実行する必要のあるコマンドレットです。

  • Password (パスワード):

    $svcPrincipalCreds.SecretText
    
  • テナント ID:

    $aadContext.Tenant.Id
    
  • アプリケーション ID:

    $svcPrincipal.AppId
    

Azure Virtual Desktop にロールの割り当てを作成する

次に、サービス プリンシパルが Azure Virtual Desktop にサインインできるよう、ロールの割り当てを作成する必要があります。 必ずロールの割り当てを作成するアクセス許可があるアカウントでサインインしてください。

まず、PowerShell セッション内で使用する Azure Virtual Desktop PowerShell モジュールをダウンロードしてインポートします (まだ行っていない場合)。

次の PowerShell コマンドレットを実行して、Azure Virtual Desktop に接続し、テナントを表示します。

Add-RdsAccount -DeploymentUrl "https://rdbroker.wvd.microsoft.com"
Get-RdsTenant

ロールの割り当てを作成するテナントの名前を見つけたら、その名前を次のコマンドレットで使用します。

$myTenantName = "<Azure Virtual Desktop Tenant Name>"
New-RdsRoleAssignment -RoleDefinitionName "RDS Owner" -ApplicationId $svcPrincipal.AppId -TenantName $myTenantName

サービス プリンシパルでサインインする

サービス プリンシパルに対してロールの割り当てを作成したら、そのサービス プリンシパルが Azure Virtual Desktop にサインインできることを次のコマンドレットを実行して確認します。

$creds = New-Object System.Management.Automation.PSCredential($svcPrincipal.AppId, (ConvertTo-SecureString $svcPrincipalCreds.Value -AsPlainText -Force))
Add-RdsAccount -DeploymentUrl "https://rdbroker.wvd.microsoft.com" -Credential $creds -ServicePrincipal -AadTenantId $aadContext.Tenant.Id

正常にサインインできる場合は、サービス プリンシパルが正しく構成されています。

次の手順

サービス プリンシパルを作成して Azure Virtual Desktop テナント内のロールに割り当てたら、それを使用してホスト プールを作成できます。 ホスト プールについて詳しく学習するには、Azure Virtual Desktop でのホスト プールの作成に関するチュートリアルに進んでください。