はじめに
Windowsのユーザープロファイルを管理する方法にFSLogixがあります。
FSLogixはホスト間でプロファイルを共有することができます。
Azure Virtual Desktop(AVD)のマルチセッションで使う想定として構築してみます。
FSLogixは色々な構成をとることが出来るのですが今回は以下の構成としています。
- プロファイルを保存するストレージはAzure Files
- Azure Files、セッションホストのドメイン参加はActive Directory Domain Services(AD DS)
- AD DSのアカウントはMicrosoft Entra ConnectでEntra IDに連携
- Active DirectoryはAzure VMで構築
事前設定
今回の構成ではADをEntra IDに同期させる必要があります。
以下の設定は完了していることを前提に記載していきます。
- ADのVM、AVD、およびセッションホストは構築済み
- Microsoft Entra ConnectでEntra IDに同期済み
- Azure Files作成済み
Azure FilesのAD DS認証を設定する
前提条件の設定
公式ドキュメントに以下の前提条件があります。
認証設定前に各種インストールを行います。
- .NET Framework 4.7.2 以降 がインストールされていない場合は、今すぐインストールします。 これは、AzFilesHybrid モジュールを正常にインポートするために必要です。
- Azure PowerShell (Az モジュール) と Az.Storage がインストールされていることを確認します。 AzFilesHybrid を使用するには、少なくとも Az.PowerShell 2.8.0 以降と Az.Storage 4.3.0 以降が必要です。
- Active Directory PowerShell モジュールをインストールします。
ただし、Windows 10/11等でAD DS認証作業をする場合、前提条件3つ目はモジュールのインストールではなくオプション機能の追加でRSATを追加します。
下図下段の Active Directory Domain Servicesおよびライトウェイトディレクトリサービスツール
だけで良さそうですが、今回は2つ追加しています。
AD DS認証有効化
AzFilesHybridモジュールをインストールします。
以下からダウンロードして任意の場所に解凍します。
Azure FilesのAD DS認証を有効化するスクリプトを準備します。
こちらにあるコードをコピーして値を変更し、ps1ファイルを作成します。
作成したファイルは前手順のAzFilesHybridモジュールを配置したフォルダ内に保存し実行します。
OUの指定は不要だったので -OrganizationalUnitDistinguishedName
をコメントアウトしています。
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser
.\CopyToPSPath.ps1
Import-Module -Name AzFilesHybrid
Connect-AzAccount
$SubscriptionId = "xxxxxxxxx-xxxxxxx"
$ResourceGroupName = "rg-tamura"
$StorageAccountName = "xxxxxx"
$SamAccountName = "xxxxxxxx"
$DomainAccountType = "ComputerAccount" # Default is set as ComputerAccount
## $OuDistinguishedName = "<ou-distinguishedname-here>"
Select-AzSubscription -SubscriptionId $SubscriptionId
Join-AzStorageAccount `
-ResourceGroupName $ResourceGroupName `
-StorageAccountName $StorageAccountName `
-SamAccountName $SamAccountName `
-DomainAccountType $DomainAccountType `
## -OrganizationalUnitDistinguishedName $OuDistinguishedName
Debug-AzStorageAccountAuth -StorageAccountName $StorageAccountName -ResourceGroupName $ResourceGroupName -Verbose
AD DS認証の有効化確認
実行後、AD DS認証の設定が有効になったことを確認します。
# Get the target storage account
$storageaccount = Get-AzStorageAccount `
-ResourceGroupName "rg-tamura" `
-Name "xxxxxx"
# List the directory service of the selected service account
$storageAccount.AzureFilesIdentityBasedAuth.DirectoryServiceOptions
# List the directory domain information if the storage account has enabled AD DS authentication for file shares
$storageAccount.AzureFilesIdentityBasedAuth.ActiveDirectoryProperties
Azure Portalでも確認。
ADのコンピュータアカウントにストレージアカウントが登録されていることを確認します。
ぼかしていますが下図2行目の方がストレージアカウント名になってます。
共有設定
セッションホストにストレージアカウントをネットワークドライブとしてマウントします。
その後、AVDユーザがプロファイルを作成できるように共有にアクセス設定をします。
icacls z: /grant "tamu.jp\AVDUser:(M)"
icacls z: /grant "Creator Owner:(OI)(CI)(IO)(M)"
icacls z: /remove "Authenticated Users"
icacls z: /remove "Builtin\Users"
FSLogixを使うユーザ(グループ)のロールをストレージアカウントに設定します。
共有レベルのアクセス許可を設定します。
プロファイルコンテナー設定
セッションホストにプロファイルコンテナーを使用する設定をします。
FSLogixインストール
Windows 10/11 Azure Marketplaceのイメージの場合、プリインストールされている場合があります。
今回試したところプリインストールされていたので次の手順に進みます。
プロファイルコンテナー有効化
$regPath = "HKLM:\SOFTWARE\FSLogix\profiles"
New-ItemProperty -Path $regPath -Name Enabled -PropertyType DWORD -Value 1 -Force
New-ItemProperty -Path $regPath -Name VHDLocations -PropertyType MultiString -Value \\xxxxxx.file.core.windows.net\winprofile -Force
2台セッションホストを作っていたので2台とも上記設定をしています。
結果確認
複数のセッションホストで同じプロファイルを参照できています。
ユーザのドキュメントに同じファイルがあることを確認しました。
ストレージアカウントにプロファイルが保存されていることを確認出来ました。