セッションレコーディングのグループ管理サービスアカウント (gMSA) サポートを構成する
Session Recording は、複数のサーバーで実行されているサービス向けにサービスプリンシパル名 (SPN) の管理を簡素化するために、Group Managed Service Account (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/current-release/media/select-the-domain-and-create-a-group.png)
-
グループに名前を付けます (gMSA を例として使用)。グループの種類をセキュリティに設定し、グループのスコープをグローバルに設定します。メンバーサーバーを追加します。メンバーサーバーには、Session Recording サーバーと Session Recording データベースがインストールされているマシンが含まれます。
グループに名前を付け、メンバーサーバーを追加します(/ja-jp/session-recording/current-release/media/name-the-group-and-add-memberservers.png)
たとえば、グループメンバーは次のように追加されます。
グループメンバーが追加されました(/ja-jp/session-recording/current-release/media/a-group-member-is-added.png)
-
セキュリティグループを正常に追加した後、Active Directory 管理センターのグローバル検索を使用して検索できます。メンバーサーバーを表示でき、すべてを再起動することを忘れないでください。
グローバル検索(/ja-jp/session-recording/current-release/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モジュールをインストールします。
-
サーバーマネージャーを使用する例:

-
管理者権限でPowerShellを使用する場合は、次のコマンドを実行します。
Install-WindowsFeature -Name RSAT-AD-PowerShell <!--NeedCopy-->
-
-
Windows PowerShellを開き、gMSAをインストールするために、次のようなコマンドを実行します。
Install-ADServiceAccount IIS1SvC <!--NeedCopy-->次のような「アクセス拒否」エラーが発生した場合は、現在のメンバーサーバーがgMSAの許可リストに追加されており、その後サーバーが再起動されていることを確認してください。

-
PowerShellで次のコマンドに似たコマンドを実行して、gMSAが正常にインストールされたことを確認します。コマンドがTrueを返した場合、gMSAは正常にインストールされています。
Test-ADServiceAccount IIS1SvC <!--NeedCopy-->
ステップ3:gMSAがSession RecordingデータベースおよびSession Recordingログデータベースにアクセスできるようにする
-
gMSA のログインを作成します。Session Recording データベースの SQL インスタンスに接続するには、SQL Server Management Studio (SSMS) を使用してください。

新しいログインに、<ドメインコントローラーのドメイン名>\<gMSAの名前> の形式で名前を付けます。例:

-
gMSAがSession RecordingデータベースおよびSession Recordingログデータベースにアクセスできるようにします。
-
レジストリを介してSession RecordingデータベースおよびSession Recordingログデータベースの名前を見つけます。たとえば、次のレジストリキーをダブルクリックして値データを取得します。

-
gMSAに、セッションレコーディングデータベースとログデータベースのdb_owner権限を付与します。


注:
db_datareaderおよびdb_datawriter権限をdb_owner権限の代わりに付与する場合、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がSession Recordingサーバーにアクセスできるようにする
各Session Recordingサーバーで次の手順を完了します。
-
Session RecordingサーバーがインストールされているマシンでInternet Information Services(IIS)マネージャーを開き、アプリケーションプールIDをgMSAに設定して、IISを再起動します。

たとえば、次のアプリケーションプールIDはgMSAに設定されています。

注:
または、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--> -
Session Recordingサーバーがインストールされているマシンでレジストリエディターを開き、Session Recordingサーバーに対する読み取り権限をgMSAに付与します。
-
サービスアカウントオブジェクトの種類を見つけます。

-
gMSAの名前を入力します。

-
gMSAに読み取り権限を付与します。

注:
または、以下のスクリプトと同様のスクリプトを使用して、Session Recordingサーバーに対する読み取り権限を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をSession Recordingストレージフォルダーに追加し、そのフォルダーに対する読み取り権限と書き込み権限を付与します。その後、継承を有効にし、このオブジェクトからの継承可能なアクセス許可エントリで、すべての子オブジェクトのアクセス許可エントリを置き換えるを選択します。



注:
または、以下のスクリプトと同様のスクリプトを使用して、Session Recordingストレージフォルダーに対する読み取りおよび書き込み権限を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をSession Recording承認コンソールに追加してください。
-
gMSAのセキュリティ識別子 (SID) を見つけます。

-
Write the SID to the SessionRecordingAzManStore file under <Session Recording server installation path>\App_Data.

-
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--> -