Session Recording のグループ管理サービスアカウント (gMSA) サポートを構成する
Session Recording は、複数のサーバーで実行されているサービスのサービスプリンシパル名 (SPN) 管理を簡素化するために、グループ管理サービスアカウント (gMSA) をサポートしています。この機能により、セキュリティが強化され、サービスアカウントの管理が簡素化されます。
ステップ 1: ドメインコントローラーで gMSA を作成する
注:
このセクションでは、ドメインコントローラーでサーバーマネージャーを使用して gMSA を作成する方法について説明します。または、次のスクリプトを実行して同じ目的を達成することもできます。
Add-KdsRootKey -EffectiveImmediately Install-WindowsFeature -Name RSAT-AD-PowerShell NEW-ADGroup –name "gMSA" –path "DC=ajj,DC=test" -GroupCategory Security -groupscope Global Add-ADGroupMember "gMSA" -Members "Server-3$"(The dollar sign $ is must) New-ADServiceAccount IIS1SvC -DNSHostName IIS1Svc.ajj.test -PrincipalsAllowedToRetrieveManagedPassword gMSA <!--NeedCopy-->Effective time パラメーターは、キーが使用される前にすべてのドメインコントローラー (DC) に伝播する時間を確保します。Add-KdsRootKey -EffectiveImmediately を使用すると、Key Distribution Service (KDS) サービスによってすぐに使用できるように、ターゲット DC にルートキーが追加されます。ただし、他のドメインコントローラーは、レプリケーションが完了するまでルートキーを使用できません。
-
ドメインコントローラーで、Active Directory 管理センターを開きます。
アクティブ ディレクトリ 管理センター(/ja-jp/session-recording/2411/media/the-active-directory-administrative-center.png)
-
ドメインを選択し、グループを作成します。
ドメインを選択してグループを作成する(/ja-jp/session-recording/2411/media/select-the-domain-and-create-a-group.png)
-
グループに名前を付けます (gMSA を例として使用)。グループの種類をセキュリティに、グループのスコープをグローバルに設定します。メンバーサーバーを追加します。メンバーサーバーには、Session Recording サーバーと Session Recording データベースがインストールされているマシンが含まれます。
グループに名前を付けてメンバーサーバーを追加する(/ja-jp/session-recording/2411/media/name-the-group-and-add-memberservers.png)
たとえば、グループメンバーは次のように追加されます。
グループメンバーが追加されました(/ja-jp/session-recording/2411/media/a-group-member-is-added.png)
-
セキュリティグループを正常に追加した後、Active Directory 管理センターのグローバル検索を使用して検索できます。メンバーサーバーを表示し、それらすべてを再起動することを忘れないでください。
「グローバル検索」(/ja-jp/session-recording/2411/media/global-search.png)
-
New-ADServiceAccount PowerShellコマンドレットを使用してgMSAアカウントを作成します。
ドメインコントローラーで、Windows PowerShellを開き、次のコマンドを実行してgMSAを作成します。
New-ADServiceAccount $serviceAccountName -DNSHostName $DNSHostName -PrincipalsAllowedToRetrieveManagedPassword $groupName <!--NeedCopy-->ここで、
-
$serviceAccountName はgMSAの名前を指定します。この記事では、IIS1SvC を例として使用しています。
-
$DNSHostName は、$serviceAccountName の後にドメインコントローラーのドメイン名が続く形式でDNSホスト名を指定します。
-
$groupName は、管理されたパスワードを取得することを許可されたグループを指定します。この記事では、gMSA を例として使用しています。
-
ステップ2:各メンバーサーバーにgMSAをインストールする
gMSAを使用する各サーバーにgMSAをインストールする必要があります。
-
サーバーマネージャーまたは管理者権限を持つPowerShellのいずれかを使用して、Windows PowerShell用Active Directoryモジュールをインストールします。
-
サーバーマネージャーを使用する例:
Windows PowerShell 用 アクティブディレクトリ モジュールをインストールします(/ja-jp/session-recording/2411/media/install-the-active-directory-module-for-windows-powershell.png)
-
管理者権限を持つPowerShellを使用する場合は、次のコマンドを実行します。
Install-WindowsFeature -Name RSAT-AD-PowerShell <!--NeedCopy-->
-
-
Windows PowerShellを開き、次のようなコマンドを実行してgMSAをインストールします。
Install-ADServiceAccount IIS1SvC <!--NeedCopy-->次のような「アクセス拒否」エラーが発生した場合は、現在のメンバーサーバーがgMSAの許可リストに追加されており、その後サーバーが再起動されていることを確認してください。
gMSAのインストール時のアクセス拒否エラー(/ja-jp/session-recording/2411/media/access-denied-when-installing-a-mgsa.png)
-
PowerShellで次のコマンドに似たコマンドを実行して、gMSAが正常にインストールされたことを確認します。コマンドがTrueを返した場合、gMSAは正常にインストールされています。
Test-ADServiceAccount IIS1SvC <!--NeedCopy-->gMSAのインストールが正常に完了したことを確認する(/ja-jp/session-recording/2411/media/verify-the-successful-installation-of-a-mgsa.png)
ステップ3:gMSAがセッション録画データベースおよびセッション録画ログデータベースにアクセスできるようにする
-
gMSAのログインを作成します。SQL Server Management Studio (SSMS) を使用して、セッション録画データベースのSQLインスタンスに接続します。
gMSAのログインを作成する(/ja-jp/session-recording/2411/media/create-new-login-for-a-gmsa.png)
新しいログインには、<ドメインコントローラーのドメイン名>\<gMSAの名前> の形式で名前を付けます。例:
SQLインスタンスのログイン名(/ja-jp/session-recording/2411/media/sql-instance-login-name.png)
-
gMSAがセッション録画データベースおよびセッション録画ログデータベースにアクセスできるようにします。
-
レジストリを介してセッション録画データベースおよびセッション録画ログデータベースの名前を見つけます。たとえば、次のレジストリキーをダブルクリックして値データを取得します。
レジストリを介してデータベース名を見つける(/ja-jp/session-recording/2411/media/find-database-names-through-the-registry.png)
-
セッション録画データベースおよびセッション録画ログデータベースのdb_owner権限をgMSAに付与します。
セッション録画データベースのdb_owner権限を付与する(/ja-jp/session-recording/2411/media/grant-the-db-owner-permission-for-the-session-recording-database.png)
セッション録画ログデータベースのdb_owner権限を付与する(/ja-jp/session-recording/2411/media/grant-the-db-owner-permission-for-the-session-recording-logging-database.png)
注:
db_owner権限の代わりにdb_datareaderおよびdb_datawriter権限を付与する場合、gMSAにデータベースに対する実行権限も付与する必要があります。例:
use SR2311 grant execute to [name of the login created earlier] use SR2311log grant execute to [name of the login created earlier] <!--NeedCopy--> -
ステップ3: gMSAがセッション録画サーバーにアクセスできるようにする
各セッション録画サーバーで次の手順を実行します。
-
セッション録画サーバーがインストールされているマシンでInternet Information Services (IIS) マネージャーを開き、アプリケーションプールIDをgMSAに設定して、IISを再起動します。
アプリケーションプールIDをgMSAに設定する(/ja-jp/session-recording/2411/media/set-the-application-pool-identity-to-a-gmsa.png)
たとえば、次のアプリケーションプールIDはgMSAに設定されています
アプリケーションプールIDがgMSAに設定されている(/ja-jp/session-recording/2411/media/application-pool-identities-have-been-set-to-a-gmsa.png)
注:
または、Windows PowerShellを使用して、次のようなコマンドを実行してアプリケーションプールIDを設定することもできます。
Import-Module WebAdministration -ErrorAction Stop $webapps = Get-ChildItem -Path IIS:\AppPools foreach ($webapp in $webapps) { if ($webapp.Name.Contains("SessionRecording")){ $Pool = "IIS:\AppPools\" + $webapp.Name Write-Host $Pool Set-ItemProperty -Path $Pool -Name processModel -Value @{userName="AJJ \IIS1SvC$";identitytype=3} } } <!--NeedCopy--> -
セッション録画サーバーがインストールされているマシンでレジストリエディターを開き、セッション録画サーバーに対する読み取り権限をgMSAに付与します。
-
サービスアカウントオブジェクトの種類を見つけます。
サービスアカウントオブジェクトの種類を見つける(/ja-jp/session-recording/2411/media/locate-the-service-account-object-type.png)
-
gMSAの名前を入力します。
gMSAを入力する(/ja-jp/session-recording/2411/media/enter-the-gmsa.png)
-
gMSAに読み取り権限を付与します。
gMSAに読み取り権限を付与(/ja-jp/session-recording/2411/media/grant-read-permission-to-a-gmsa.png)
注:
または、以下のスクリプトと同様のスクリプトを使用して、セッションレコーディングサーバーに対する読み取り権限をgMSAに付与できます。
$RegistryKey = "HKLM:\SOFTWARE\Citrix\SmartAuditor" $NewAcl = Get-Acl -Path $RegistryKey $identity = "pahl6\IIS1SvC$" $RegistryKeyRights = "ReadPermissions" $type = "Allow" $RegistryKeyAccessRuleArgumentList = $identity, $RegistryKeyRights, $type $RegistryKeyAccessRule = New-Object System.Security.AccessControl.RegistryAccessRule -ArgumentList $RegistryKeyAccessRuleArgumentList $NewAcl.SetAccessRule($RegistryKeyAccessRule) Set-Acl -Path $RegistryKey -AclObject $NewAcl <!--NeedCopy--> -
-
gMSAをセッションレコーディングストレージフォルダーに追加し、そのフォルダーに対する読み取りおよび書き込み権限を付与します。その後、継承を有効にし、このオブジェクトからの継承可能なアクセス許可エントリですべての子オブジェクトのアクセス許可エントリを置き換えるを選択します。
gMSAにセッションレコーディングストレージフォルダーに対する読み取りおよび書き込み権限を付与 - ステップ1(/ja-jp/session-recording/2411/media/grant-read-and-write-permissions-on-the-session-recording-storage-folder-to-a-gmsa-1.png)
gMSAにセッションレコーディングストレージフォルダーに対する読み取りおよび書き込み権限を付与 - ステップ2(/ja-jp/session-recording/2411/media/grant-read-and-write-permissions-on-the-session-recording-storage-folder-to-a-gmsa-2.png)
継承を有効にする(/ja-jp/session-recording/2411/media/enable-inheritance.png)
注:
または、以下のスクリプトと同様のスクリプトを使用して、セッションレコーディングストレージフォルダーに対する読み取りおよび書き込み権限をgMSAに付与し、継承を有効にすることができます。
$path = "C:\SessionRecordings" $NewAcl = Get-Acl $path # Set properties $identity = "pahl6\IIS1SvC$" $fileSystemRights = "Modify" $type = "Allow" # Create new rule $fileSystemAccessRuleArgumentList = $identity, $fileSystemRights, $type $fileSystemAccessRule = New-Object -TypeName System.Security.AccessControl.FileSystemAccessRule $fileSystemAccessRuleArgumentList # Apply new rule $NewAcl.SetAccessRule($fileSystemAccessRule) # enable inherit $isProtected = $false $preserveInheritance = $false $NewAcl.SetAccessRuleProtection($isProtected, $preserveInheritance) Set-Acl -Path $path -AclObject $NewAcl <!--NeedCopy--> -
gMSAをセッションレコーディング承認コンソールに追加します。
-
gMSAのセキュリティ識別子(SID)を見つけます。
gMSAのSIDを見つける(/ja-jp/session-recording/2411/media/find-the-sid-for-a-gmsa.png)
-
SIDを、<セッションレコーディング サーバー インストール パス>\App_Data の下にある SessionRecordingAzManStore ファイルに書き込みます。
gMSAのSIDをファイルに書き込む(/ja-jp/session-recording/2411/media/write-gmsa-sid-to-file.png)
-
App-Dataフォルダーに対するフルコントロール権限をgMSAに付与します。

-
gMSAがセッションレコーディング認証コンソールに正常に追加されていることを確認します。

注:
または、以下のスクリプトのようなものを使用して、Session Recording Authorization ConsoleにgMSAを追加できます。
$account = "IIS1SvC" $AccountDetail = Get-ADServiceAccount -Identity $account $accountSid = $AccountDetail.SID.Value write-host $accountSid $path = "C:\Program Files\Citrix\SessionRecording\Server\App_Data\SessionRecordingAzManStore.xml" $doc = [xml](Get-Content $path) $node = $doc.AzAdminManager.AzApplication.AzRole | Where-Object {$_.Name -eq "LoggingWriter"} $element = $doc.CreateElement("Member") $element.InnerText = $accountSid $node.AppendChild($element) $doc.Save($path) <!--NeedCopy--> -