Session Recording

Session Recordingでグループ管理サービスアカウント(gMSA)の構成をサポート

Session Recordingは、グループ管理サービスアカウント(gMSA)をサポートしているため、複数のサーバーで実行されているサービスのサービスプリンシパル名(SPN)の管理がシンプルになります。 この機能により、セキュリティが強化され、よりシンプルにサービスアカウントを管理できるようになります。

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

有効な時間のパラメーターは、キーが使用される前にすべてのドメインコントローラー(DC)に伝播される時間を許可します。 Add-KdsRootKey -EffectiveImmediatelyを使用すると、キー配布サービス(KDS)ですぐに使用できるように、ターゲットDCにルートキーが追加されます。 ただし、レプリケーションが完了するまで、他のドメインコントローラーはルートキーを使用できません。

  1. ドメインコントローラーで、Active Directory管理センターを開きます。

    Active Directory管理センター

  2. ドメインを選択してグループを作成します。

    ドメインを選択してグループを作成する

  3. グループに名前を付けます(例ではgMSAを使用します)。 [Group type][Security]に、[Group scope][Global]に設定します。 ここにメンバーサーバーを追加します。 メンバーサーバーには、Session RecordingサーバーとSession Recordingデータベースがインストールされているマシンが含まれます。

    グループに名前を付けてメンバーサーバーを追加する

    たとえば、グループメンバーは以下のように追加されます:

    グループメンバーが追加されました

  4. セキュリティグループを正常に追加すると、Active Directory管理センターのグローバル検索を使用してそのセキュリティグループを検索できるようになります。 メンバーサーバーを表示し、それらすべてを再起動することを忘れないでください。

    グローバル検索

  5. 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をインストールする必要があります。

  1. 管理者権限を持つサーバーマネージャーまたはPowerShellを使用して、Windows PowerShell用のActive Directoryモジュールをインストールします。

    • サーバーマネージャーの使用例:

      Windows PowerShellのActive Directoryモジュールをインストールする

    • 管理者権限でPowerShellを使用する場合は、次のコマンドを実行します:

         Install-WindowsFeature -Name RSAT-AD-PowerShell
       <!--NeedCopy-->
      
  2. Windows PowerShellを開き、次のようなコマンドを実行してgMSAをインストールします。

      Install-ADServiceAccount IIS1SvC
    <!--NeedCopy-->
    

    次のような「アクセスが拒否されました」エラーが発生した場合は、現在のメンバーサーバーがgMSAの許可リストに追加され、その後サーバーが再起動されていることを確認してください。

    gMSAのインストール時にアクセスが拒否されましたエラーが発生する

  3. PowerShellで次のようなコマンドを実行して、gMSAが正常にインストールされたことを確認します。 コマンドがTrueを返す場合、gMSAは正常にインストールされています。

      Test-ADServiceAccount IIS1SvC
     <!--NeedCopy-->
    

    gMSAのインストールが成功したことを確認する

手順3:gMSAがSession RecordingデータベースとSession Recordingログデータベースにアクセスできるようにする

  1. gMSAのログインを作成します。 SQL Server Management Studio(SSMS)を使用して、Session RecordingデータベースのSQLインスタンスに接続します。

    gMSAのログインを作成する

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

    SQLインスタンスのログイン名

  2. gMSAがSession RecordingデータベースとSession Recordingログデータベースにアクセスできるようにします。

    1. レジストリを使用して、Session RecordingデータベースとSession Recordingログデータベースの名前を見つけます。 たとえば、次のレジストリキーをダブルクリックして値データを取得します。

      レジストリでデータベース名を検索する

    2. gMSAに、Session RecordingデータベースとSession Recordingログデータベースのdb_owner権限を付与します。

      Session Recordingデータベースのdb_owner権限を付与する

      Session Recordingログデータベースのdb_owner権限を付与する

    注:

    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がSession Recordingサーバーにアクセスできるようにする

各Session Recordingサーバーで次の手順を実行します:

  1. Session Recordingサーバーがインストールされているマシンでインターネットインフォメーション サービス(IIS)マネージャーを開き、アプリケーションプールIDをgMSAに設定して、IISを再起動します。

    アプリケーションプールIDをgMSAに設定する

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

    アプリケーションプール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-->
    
  2. Session Recordingサーバーがインストールされているマシンでレジストリエディターを開き、Session Recordingサーバーの読み取り権限をgMSAに付与します。

    1. サービスアカウントのオブジェクトタイプを見つけます。

      サービスアカウントのオブジェクトタイプを見つける

    2. gMSAの名前を入力します。

      gMSAを入力する

    3. 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-->
    
  3. gMSAをSession Recordingストレージフォルダーに追加し、フォルダーに対する読み取りおよび書き込み権限を付与します。 その後、継承を有効にして、[Replace all child object permission entries with inheritable permission entries from this object]を選択します。

    Session Recordingストレージフォルダーの読み取りおよび書き込み権限をgMSAに付与する - 手順1

    Session Recordingストレージフォルダーの読み取りおよび書き込み権限をgMSAに付与する - 手順2

    継承を有効にする

    注:

    または、次のようなスクリプトを使用して、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-->
    
  4. gMSAをSession Recording承認コンソールに追加します。

    1. gMSAのセキュリティ識別子(SID)を見つけます。

      gMSAのSIDを見つける

    2. SIDを<Session Recordingサーバーのインストールパス>\App_Dataの下のSessionRecordingAzManStoreファイルに書き込みます。

      gMSA SIDをファイルに書き込む

    3. gMSAにApp-Data フォルダーに対するフルコントロール権限を付与します。

      gMSAにApp-Dataフォルダーのフルコントロール権限を付与する

    4. gMSAがSession Recording承認コンソールに正常に追加されたことを確認します。

      gMSAがSession Recording承認コンソールに正常に追加されたことを確認する

    注:

    または、次のようなスクリプトを使用して、gMSAをSession Recording承認コンソールに追加できます:

      $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-->
    
Session Recordingでグループ管理サービスアカウント(gMSA)の構成をサポート