セッションレコーディングのグループ管理サービスアカウント (gMSA) サポートを構成する
Session Recording は、複数のサーバーで実行されるサービスのサービスプリンシパル名 (SPN) 管理を簡素化するために、Group Managed Service Accounts (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/the-active-directory-administrative-center.png)
-
ドメインを選択し、グループを作成します。
ドメインを選択してグループを作成する (/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モジュールをインストールします。
-
Server Manager を使用する例を次に示します。

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

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

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

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

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


注:
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に設定されています

注:
または、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にセッションレコーディングサーバーに対する読み取り権限を付与します。
-
サービスアカウントオブジェクトの種類を見つけます。

-
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 をセッションレコーディング承認コンソールに追加します。
-
gMSAのセキュリティ識別子(SID)を見つけます。

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

-
gMSAにApp-Dataフォルダーに対するフルコントロール権限を付与します。
「App-Data」フォルダーに対するフルコントロール権限をgMSAに付与します(/ja-jp/session-recording/current-release/media/grant-permission-on-the-app-data-folder-to-a-gmsa.png)
-
gMSAがセッション録画承認コンソールに正常に追加されていることを確認します。
gMSAがセッション録画承認コンソールに正常に追加されていることを確認します(/ja-jp/session-recording/current-release/media/verify-that-a-gmsa-is-successfully-added-to-the-session-recording-authorization-console.png)
注:
または、次のようなスクリプトを使用して、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--> -