3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Enterprise 利用で組織外部の人とコラボレーションをする方法を考える(外部 ID で AVD 利用編)

3
Last updated at Posted at 2026-05-06

FSLogix や Azure Files のプレビュー機能について
本記事では、検証を行った2026年5月時点で、プレビュー機能として公開されている機能を利用して検証を行っています。
プレビュー機能は、正式リリース前の機能であり、仕様や挙動が変更される可能性があります。
そのため、本記事の内容を本番環境で実施する場合などは、必ず最新の公式ドキュメントをご確認いただくよう、お願いいたします。

はじめに

企業でお仕事をしているときに、組織外部の人とコラボレーションをする機会があると思います。
その時に、毎回問題になるのは、組織外部の人と、どうやってセキュアにコラボレーションをするかということです。

このコラボレーション実現の方法の一つとなり得るものとして、Azure 外部 ID に対する Azure Virtual Desktop(AVD) のサポートが、2025 年 11 月に GA されました。
参考: Azure Virtual Desktop の新機能 - Azure外部 ID に対する Virtual Desktop のサポートが一般公開されました

この外部 ID を AVD で利用するためのルールや設定などについて、複数回シリーズで紹介しています。

今回は外部 ID を利用するための AVD 関連の設定を中心に紹介していきます。

これまでの関連シリーズ

シリーズではないが関連記事

TL;DR

本記事のポイントを以下にまとめます。詳細は各セクションをご参照ください。

外部 ID で AVD を利用するための設定のポイント

# ポイント 設定箇所 設定内容
1 Microsoft Entra ID 上で RDP 認証を有効化 Microsoft Entra ID Windows Cloud Login サービスプリンシパルで RDP 認証を有効化する
2 ホストプールでシングルサインオンを構成 AVD ホストプール ホストプールのカスタム RDP プロパティにシングルサインオンを有効化する設定を追加する
3 クラウド専用 ID で Azure Files を利用するための構成 Azure Files /
Microsoft Entra アプリ
(1) Azure Files で Entra Kerberos 認証を有効化し、既定の共有レベル権限を設定する
(2) ストレージアカウントのサービスプリンシパルに管理者の同意を付与する
(3) クラウド専用グループ SID のサポートを有効化する

検証環境構築時のテンプレートについて
検証環境構築時のテンプレートは GitHub リポジトリ で公開しています。
ご自身で実装する際の参考としてご利用ください。

外部 ID ユーザーのログイン時のポイント
通常の Entra ID ログインと異なり、「組織へのサインイン」から招待先ドメインを指定するステップが必要な点に注意が必要です。

以降では、これらのポイントについて、詳細に紹介していきます。

前提事項 (外部 ID を利用するための要件・制限事項)

AVD で外部 ID を利用するためには、いくつかの要件や制限事項がありますので、まずはそれらについてまとめます。

個別の要素に関しては、公式ドキュメント(サポートされている ID と認証方法 - 外部 ID) に記載があります。

外部 ID を利用するための要件

  • セッションホストのオペレーティングシステムの要件
    • Windows 11 Enterprise、バージョン 24H2 以降で、KB5065789 以降がインストールされていること
    • Windows Server 2025 以降で、 KB5073379 以降がインストールされていること
  • セッションホストが Entra ID join していること
  • ホストプールにてシングルサインオンが構成されていること (本記事の後述参照)
  • 接続用のクライアントは Windows App または、Webブラウザー でのみ GA 済み

外部 ID を利用するための制限事項

  • 外部 ID に対する FSLogix のサポートはプレビュー段階です(2026年5月時点)
    • 外部 ID を利用する場合、Kerberos または NTLM プロトコルを利用してオンプレミスリソースの認証を利用することができないため、FSLogix のプロファイルコンテナを Azure Files などのクラウドストレージに格納する必要があります。
    • Azure Files のクラウド専用 ID サポートもプレビュー段階(2026年5月時点) です。
  • Intune で制御を行う場合、外部 ID に対してデバイス構成ポリシーを割り当てることができないため、デバイス構成ポリシーはデバイスに割り当てる必要があります

外部 ID を利用した AVD 構築の三つの設定ポイント

一般的な AVD 環境の構成方法は、多くのドキュメントで紹介されていますので、この章では、外部 ID を利用することに特化した AVD の設定のポイントについて、紹介していきます。

本記事で記載している点を一通り考慮した、AVD の外部 ID を利用するための検証環境の構築テンプレートは、以下のリポジトリにて公開しております。

検証環境用途ですので、問題が発生した場合でも責任は取りかねますが、参考にしてみてください。

また、一部に関しては、マイクロソフトの方がブログ記事(AVDで外部IDを試す!)の中で紹介いただいている内容もありますので、そちらも参考にしてみてください。

ポイント1: Microsoft Entra ID 上で RDP 認証を有効化 (設定箇所:Microsoft Entra ID)

この設定は、Entra ID joined 等の端末で、Entra ID の認証を利用して RDP ログインをするために必要な設定となります。
AVD 全体としての機能では、オンプレ の Active Directory Domain Service(AD DS) 等を利用したログインも可能ですが、外部 ID を利用する場合は、Entra ID の認証を利用してログインする必要があるため、この設定が必要となります。

具体的には、Microsoft Graph PowerShell SDK を利用して設定を行いますが、いくつか前提などがありますので、前提・必要モジュールのインストール、および設定の方法をまとめます。

前提

Microsoft Graph PowerShell SDK がインストールされていること。
Microsoft Graph PowerShell SDK のインストールに関しては、Install the Microsoft Graph PowerShell SDK に記載があります。
現時点で日本語訳が無いようですので、ポイントだけ要約します。

環境要件:

  • PowerShell 5.1 以降がインストールされていること (個人的には、PowerShell 7 以降をお勧めします)
  • .NET Framework 4.7.2 以降がインストールされていること
  • Install-Module PowerShellGet コマンドを実行して、PowerShellGetを最新バージョンに更新しておくこと

Microsoft Graph PowerShell SDK のインストール

以下のコマンドで Microsoft Graph PowerShell SDK をインストールします。

# 実行ポリシーが remote signed かそれよりも緩い設定になっている必要があります。
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

# もしインストールするスコープを 全てのユーザーにしたい場合は、-Scope AllUsers を指定してください
Install-Module Microsoft.Graph -Scope CurrentUser -Repository PSGallery -Force

RDP 認証の有効化の実行

以下のコマンド群を用いて、Microsoft Entra ID 上で RDP 認証を有効化します。

Import-Module Microsoft.Graph.Authentication
Import-Module Microsoft.Graph.Applications

# Microsoft Graph へログイン
Connect-MgGraph -Scopes "Application.Read.All","Application-RemoteDesktopConfig.ReadWrite.All"

# Windows Cloud Login サービスプリンシパルのオブジェクトIDを取得 (後続のコマンドで利用)
$WCLspId = (Get-MgServicePrincipal -Filter "AppId eq '270efc09-cd0d-444b-a71f-39af4910ec45'").Id

# RDP 認証が有効化されているかを確認し、もし有効化されていない場合は有効化する
$desktopSecurityConf = Get-MgServicePrincipalRemoteDesktopSecurityConfiguration -ServicePrincipalId $WCLspId
if ($desktopSecurityConf.IsRemoteDesktopProtocolEnabled -ne $true) {
  Update-MgServicePrincipalRemoteDesktopSecurityConfiguration -ServicePrincipalId $WCLspId -IsRemoteDesktopProtocolEnabled
}

# RDP 認証の設定を確認
Get-MgServicePrincipalRemoteDesktopSecurityConfiguration -ServicePrincipalId $WCLspId

# もし正しく設定ができている場合は、以下のように、IsRemoteDesktopProtocolEnabled が True になっていることが確認できます。 
#Id IsRemoteDesktopProtocolEnabled
#-- ------------------------------
#id True

ポイント2: ホストプールでシングルサインオンを構成 (設定箇所:AVD ホストプール)

ホストプールでシングルサインオンを構成します。こちらも、外部 ID を利用して AVD を利用するためには必要な設定となります。

この設定は、bicep テンプレートを利用して、ホストプールをデプロイする際に、customRdpProperty プロパティに enablerdsaadauth:i:1 を追加することでも構成可能です。

Bicep テンプレートでの構成例
Bicep テンプレートでの構成例に関しては、AVD 外部 ID (Entra B2B) + FSLogix on Azure Files 検証環境(GitHub リポジトリ) で公開中のテンプレートの中で、利用しておりますので、こちらの hostPool リソースの構成例をご確認ください。

以降は、bicep テンプレートを利用せずに、既存のホストプールに対して、Azure CLI を利用して customRdpPropertyenablerdsaadauth:i:1 を追加する方法となります。

resourceGroup="<リソースグループ名>"
hostPool="<ホストプール名>"

# 実際に設定する RDP プロパティ値。この値でシングルサインオンを構成します。
addCustomProperties="enablerdsaadauth:i:1"

# 現在の RDP プロパティ値を取得。(既存の構成を残すために利用します)
currentCustomProperties=$(az desktopvirtualization hostpool show \
     --name $hostPool \
     --resource-group $resourceGroup \
     --query [customRdpProperty] \
     --output tsv)

# 実装で検証したところ、末尾にセミコロンが入るようだが、念のため既存値に末尾セミコロンが無い場合に備える
if [[ -n "$currentCustomProperties" && "${currentCustomProperties: -1}" != ";" ]]; then
  currentCustomProperties="${currentCustomProperties};"
fi
# 既存のプロパティと新しい設定を追加した新プロパティを作成
customProperties="$currentCustomProperties$addCustomProperties"

# リソースの構成を更新
az desktopvirtualization hostpool update \
     --name $hostPool \
     --resource-group $resourceGroup \
     --custom-rdp-property "$customProperties"

ポイント3: クラウド専用 ID で Azure Files を利用するための構成 (設定箇所:Azure Files および Microsoft Entra ID)

Azure Files をクラウド専用 IDで利用するためには、いくつかの構成が必要となります。
具体的な設定方法は、以前の私のブログ記事(Azure Files のクラウド専用 ID による ID ベース認証を試してみる) で詳細を説明していますので、詳細はそちらをご参照ください。

なお、概略としては以下の通りとなります。

以降の手順に関しては、Microsoft の公式ドキュメントにおいて、Azure Portal での作業がメインとなっていますが、IaC (Infrastructure as Code) を実現するために、同じ設定となるように私が検証・確認した、Bicep や Azure CLI、PowerShell などを利用する手順をメインに紹介していきます。

1. Microsoft Entra の Kerberos 認証を有効化する

公式ドキュメントで公開されている手順は、こちら となります。Azure Portalから設定が可能です。

また、Azure リソースの設定になるため、Bicep 等のテンプレートを利用して自動化することも可能です。

以下が、Bicep を利用して Microsoft Entra の Kerberos 認証を有効化するためのコード例となります。具体的には、コメントが記載されている部分が、Microsoft Entra Kerberos 認証を有効化するための設定となります。

// directoryServiceOptions: 'AADKERB' により Entra Kerberos 認証 (クラウド専用 ID) を有効化。
resource profileStorageAccount 'Microsoft.Storage/storageAccounts@2023-05-01' = {
  name: profileStorageAccountName
  location: location
  tags: tags
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
  properties: {
    accessTier: 'Hot'
    allowBlobPublicAccess: false
    allowSharedKeyAccess: true
    minimumTlsVersion: 'TLS1_2'
    supportsHttpsTrafficOnly: true
    networkAcls: {
      bypass: 'AzureServices'
      defaultAction: 'Allow'
    }
    azureFilesIdentityBasedAuthentication: {
      // Microsoft Entra Kerberos 認証 (クラウド専用 ID) を有効化するための設定
      directoryServiceOptions: 'AADKERB'
      // クラウド専用 ID (Preview) では default share-level permission のみ利用可能 (個別 RBAC 割り当て不可) のため、
      // FSLogix がプロファイル VHDX を読み書きできるよう Elevated Contributor を既定権限として付与。
      defaultSharePermission: 'StorageFileDataSmbShareElevatedContributor'
    }
  }
}

2. Azure Files に関連するMicrosoft Entra アプリケーションに管理者の同意を付与する

ストレージアカウント側で、Microsoft Entra Kerberos認証を有効化した後、ストレージアカウントを表すサービスプリンシパルに対して、権限を付与する必要があります。

公式ドキュメント上では、Azure Portal 上での操作方法のみが記載されておりますが、以下のコマンドでも実行可能です。

STORAGE_ACCOUNT="<Storage Account Name>"

OID=$(az ad sp list --display-name "[Storage Account] ${STORAGE_ACCOUNT}.file.core.windows.net" --query "[0].id" -o tsv)
APP_ID=$(az ad sp show --id ${OID} --query appId -o tsv)

# Microsoft Graph API (00000003-0000-0000-c000-000000000000) に対して、
# User.Read, profile, openid のスコープを許可
az ad app permission grant --id ${APP_ID} --api 00000003-0000-0000-c000-000000000000 --scope User.Read profile openid

3. Microsoft Entra アプリケーション上でクラウド専用グループのサポートを有効にする

最後に、Microsoft Entra アプリケーション上で、クラウド専用グループのサポートを有効にします。
公式ドキュメント上では、Microsoft Graph PowerShell SDKを利用する形となっていますが、Azure CLI を利用したい場合は、以下のコマンドでも実行可能です。

STORAGE_ACCOUNT="<Storage Account Name>"

OID=$(az ad sp list --display-name "[Storage Account] ${STORAGE_ACCOUNT}.file.core.windows.net" --query "[0].id" -o tsv)
APP_ID=$(az ad sp show --id ${OID} --query appId -o tsv)

# アプリケーションにタグを追加して、KDCでクラウドグループSIDを有効にする
az ad app update --id ${APP_ID} --set tags='["kdc_enable_cloud_group_sids"]'

外部 ID を利用して Windows App からログイン

普段から AVD を利用しているユーザーにとっては、AVD へアクセスする際のログインフローが変わります。
そのため、普段通りの方法ではログインできずに戸惑う可能性があるかと思います。

通常の内部 ID (Entra ID上のアカウントなど) でログインする際は、特に意識しないといけないことはないですが、外部 ID でログインする場合は、組織へのサインイン が必要になることがポイントになります。

具体的には、以下の手順となります。

  1. Windows App を起動
  2. ログイン画面が出てくるので、サインインオプション を選択
    MSA-login1.png
  3. 組織へのサインイン を選択
    MSA-login2.png
  4. 招待先のドメインを入力 (例: contoso.onmicrosoft.com)
    MSA-login3.png

ポイント
ここでは、外部 ID として招待されているテナントのドメイン名を入力します。

  1. 再度ログイン画面が表示されるので、外部 ID のアカウントでログインを行う
    MSA-login4.png

ポイント
外部 ID を利用してログインを行う場合は、最初に、サインインオプション を選択したうえで、組織へのサインイン を選択し、招待先のドメインを指定する必要がある点が、わかりづらい点となります。

まとめ

今回は、AVD で外部 ID を利用するための設定のポイントについて、紹介しました。

外部 ID で AVD を利用するには、いくつかの注意点や設定が必要となること、FSLogix と併用する場合には、プレビュー機能の利用が必要なことなど、いくつかのポイントがあります。
一方で、こういった組織外の人とのコラボレーションの手段として、AVD を利用できるようになることは、利便性の向上やセキュリティの向上など、多くのメリットがあるかと思います。

今後も、AVD の外部 ID サポートに関しては、機能のアップデートや、より便利に利用するための設定方法などが出てくる可能性がありますので、引き続き、最新の情報を追いかけていきたいと思います。

参考

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?