セッションレコーディングのグループ管理サービスアカウント (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 にルートキーが追加されます。ただし、他のドメインコントローラーは、レプリケーションが完了するまでルートキーを使用できません。

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

    アクティブ ディレクトリ 管理センター

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

    ドメインを選択してグループを作成する(/ja-jp/session-recording/current-release/media/select-the-domain-and-create-a-group.png)

  3. グループに名前を付けます (例として 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)

  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 を使用する場合は、次のコマンドを実行します。

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

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

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

    gMSAのインストール時のアクセス拒否エラー(/ja-jp/session-recording/current-release/media/access-denied-when-installing-a-mgsa.png)

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

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

    gMSAの正常なインストールを確認する(/ja-jp/session-recording/current-release/media/verify-the-successful-installation-of-a-mgsa.png)

ステップ3: gMSAがSession RecordingデータベースおよびSession Recordingログデータベースにアクセスできるようにする

  1. gMSA のログインを作成します。SQL Server Management Studio (SSMS) を使用して、セッションレコーディング データベースの SQL インスタンスに接続します。

    gMSAのログインを作成する(/ja-jp/session-recording/current-release/media/create-new-login-for-a-gmsa.png)

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

    SQLインスタンスのログイン名(/ja-jp/session-recording/current-release/media/sql-instance-login-name.png)

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

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

      レジストリを介してデータベース名を見つける(/ja-jp/session-recording/current-release/media/find-database-names-through-the-registry.png)

    2. gMSA に、Session Recording データベースと Session Recording ログ データベースの両方に対して、db_owner 権限を付与してください。

      セッションレコーディングデータベースのdb_owner権限を付与する(/ja-jp/session-recording/current-release/media/grant-the-db-owner-permission-for-the-session-recording-database.png)

      セッションレコーディングログデータベースのdb_owner権限を付与する(/ja-jp/session-recording/current-release/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がセッションレコーディングサーバーにアクセスできるようにする

各セッションレコーディングサーバーで次の手順を実行します。

  1. セッションレコーディングサーバーがインストールされているマシンでInternet Information Services (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. セッションレコーディングサーバーがインストールされているマシンでレジストリエディターを開き、セッションレコーディングサーバーに対する読み取り権限をgMSAに付与します。

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

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

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

      gMSAを入力する

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

      gMSAに読み取り権限を付与する(/ja-jp/session-recording/current-release/media/grant-read-permission-to-a-gmsa.png)

    注:

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

    gMSAにSession Recordingストレージフォルダーに対する読み取りおよび書き込み権限を付与する - ステップ1(/ja-jp/session-recording/current-release/media/grant-read-and-write-permissions-on-the-session-recording-storage-folder-to-a-gmsa-1.png)

    gMSAにSession Recordingストレージフォルダーに対する読み取りおよび書き込み権限を付与する - ステップ2(/ja-jp/session-recording/current-release/media/grant-read-and-write-permissions-on-the-session-recording-storage-folder-to-a-gmsa-2.png)

    継承を有効にする(/ja-jp/session-recording/current-release/media/enable-inheritance.png)

    注:

    または、以下のスクリプトを使用して、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 をセッションレコーディング承認コンソールに追加します。

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

      gMSAのSIDを見つける(/ja-jp/session-recording/current-release/media/find-the-sid-for-a-gmsa.png)

    2. SID を、<セッションレコーディング サーバーのインストールパス>\App_Data の下にある SessionRecordingAzManStore ファイルに書き込みます。

      gMSAのSIDをファイルに書き込む(/ja-jp/session-recording/current-release/media/write-gmsa-sid-to-file.png)

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

      gMSAにApp-Dataフォルダーに対するフルコントロール権限を付与する(/ja-jp/session-recording/current-release/media/grant-permission-on-the-app-data-folder-to-a-gmsa.png)

    4. Verify that the gMSA is successfully added to the Session Recording Authorization Console.

      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-->
    
セッションレコーディングのグループ管理サービスアカウント (gMSA) サポートを構成する