次の方法で共有


JEA セッション構成

JEA エンドポイントは、PowerShell セッション構成ファイルを作成して登録することで、システムに登録されます。 セッション構成では、JEA エンドポイントを使用できるユーザーと、アクセス権を持つロールを定義します。 また、JEA セッションのすべてのユーザーに適用されるグローバル設定も定義します。

セッション構成ファイルを作成する

JEA エンドポイントを登録するには、そのエンドポイントの構成方法を指定する必要があります。 考慮すべき多くのオプションがあります。 最も重要なオプションは次のとおりです。

  • JEA エンドポイントにアクセスできるユーザー
  • 割り当てられる可能性のある役割
  • JEA が内々で使用するID
  • JEA エンドポイントの名前

これらのオプションは、PowerShell セッション構成ファイルと呼ばれる .pssc 拡張子を持つ PowerShell データ ファイルで定義されます。 セッション構成ファイルは、任意のテキスト エディターを使用して編集できます。

次のコマンドを実行して、空のテンプレート構成ファイルを作成します。

New-PSSessionConfigurationFile -SessionType RestrictedRemoteServer -Path .\MyJEAEndpoint.pssc

ヒント

テンプレート ファイルには、既定で最も一般的な構成オプションのみが含まれています。 -Full スイッチを使用して、生成された PSSC に該当するすべての設定を含めます。

-SessionType RestrictedRemoteServer フィールドは、セッション構成がセキュリティで保護された管理のために JEA によって使用されることを示します。 この種類のセッションは NoLanguage モードで動作し、次の既定のコマンド (およびエイリアス) にのみアクセスできます。

  • Clear-Host (clsclear)
  • Exit-PSSession (exsnexit)
  • Get-Command (gcm)
  • Get-FormatData
  • Get-Help
  • Measure-Object (measure)
  • Out-Default
  • Select-Object (select)

PowerShell プロバイダーは使用できません。また、外部プログラム (実行可能ファイルまたはスクリプト) もありません。

言語モードの詳細については、「 about_Language_Modes」を参照してください。

JEA ID を選択する

JEA では、接続されたユーザーのコマンドを実行するときに使用する ID (アカウント) がバックグラウンドで必要です。 セッション構成ファイルで JEA が使用する ID を定義します。

ローカル仮想アカウント

ローカル仮想アカウントは、JEA エンドポイントに定義されているすべてのロールを使用してローカル コンピューターを管理し、ローカル管理者アカウントでコマンドを正常に実行できる場合に便利です。 仮想アカウントは、特定のユーザーに固有の一時的なアカウントであり、PowerShell セッションの期間中のみ有効です。 メンバー サーバーまたはワークステーションでは、仮想アカウントはローカル コンピューターの Administrators グループに属します。 Active Directory ドメイン コントローラーでは、仮想アカウントはドメインの Domain Admins グループに属します。

# Setting the session to use a virtual account
RunAsVirtualAccount = $true

セッション構成で定義されているロールに完全な管理特権が必要ない場合は、仮想アカウントが属するセキュリティ グループを指定できます。 メンバー サーバーまたはワークステーションでは、指定されたセキュリティ グループは、ドメインのグループではなく、ローカル グループである必要があります。

1 つ以上のセキュリティ グループが指定されている場合、仮想アカウントはローカルまたはドメイン管理者グループに割り当てられません。

# Setting the session to use a virtual account that only belongs to the NetworkOperator and NetworkAuditor local groups
RunAsVirtualAccount = $true
RunAsVirtualAccountGroups = 'NetworkOperator', 'NetworkAuditor'

仮想アカウントには、ローカル サーバー セキュリティ ポリシーのサービスとしてのログオン権限が一時的に付与されます。 指定された VirtualAccountGroups のいずれかが既にポリシーでこの権限を付与されている場合、個々の仮想アカウントはポリシーに追加および削除されなくなります。 これは、ドメイン コントローラーのセキュリティ ポリシーのリビジョンが厳密に監査されるドメイン コントローラーなどのシナリオで役立ちます。 これは、2018 年 11 月以降のロールアップが適用された Windows Server 2016 と、2019 年 1 月以降のロールアップが適用された Windows Server 2019 でのみ使用できます。

グループ管理サービス アカウント

グループ管理サービス アカウント (GMSA) は、JEA ユーザーがファイル共有や Web サービスなどのネットワーク リソースにアクセスする必要がある場合に使用する適切な ID です。 GMSA を使用すると、ドメイン内の任意のコンピューター上のリソースに対する認証に使用されるドメイン ID が提供されます。 GMSA が提供する権限は、アクセスしているリソースによって決まります。 マシンまたはサービスの管理者が GMSA にこれらの権限を明示的に付与していない限り、コンピューターまたはサービスに対する管理者権限はありません。

# Configure JEA sessions to use the GMSA in the local computer's ___domain
# with the sAMAccountName of 'MyJEAGMSA'
GroupManagedServiceAccount = 'Domain\MyJEAGMSA'

GMSA は、必要な場合にのみ使用する必要があります。

  • GMSA を使用すると、ユーザーの行動を追跡するのが難しくなります。 すべてのユーザーが同じ実行 ID を共有します。 個々のユーザーとそのアクションを関連付けるために、PowerShell セッションのトランスクリプトとログを確認する必要があります。

  • GMSA は、接続しているユーザーがアクセスする必要がない多くのネットワーク リソースにアクセスできる場合があります。 JEA セッションで有効なアクセス許可を制限して、最小限の特権の原則に従ってください。

グループ管理サービス アカウントは、PowerShell 5.1 以降を使用してドメインに参加しているマシンでのみ使用できます。

JEA セッションのセキュリティ保護の詳細については、セキュリティに 関する考慮事項 の記事を参照してください。

セッション トランスクリプト

ユーザーのセッションのトランスクリプトを自動的に記録するように JEA エンドポイントを構成することをお勧めします。 PowerShell セッショントランスクリプトには、接続しているユーザー、割り当てられた ID としての実行、およびユーザーが実行するコマンドに関する情報が含まれています。 これらは、システムに対して特定の変更を加えたユーザーを理解する必要がある監査チームにとって役立ちます。

セッション構成ファイルで自動文字起こしを構成するには、トランスクリプトを格納するフォルダーへのパスを指定します。

TranscriptDirectory = 'C:\ProgramData\JEAConfiguration\Transcripts'

トランスクリプトは、ディレクトリへの読み取りと書き込みアクセスが必要な ローカル システム アカウントによってフォルダーに書き込まれます。 標準ユーザーはフォルダーにアクセスできません。 トランスクリプトを監査するアクセス権を持つセキュリティ管理者の数を制限します。

ユーザードライブ

接続しているユーザーが JEA エンドポイント間でファイルをコピーする必要がある場合は、セッション構成ファイルでユーザー ドライブを有効にすることができます。 ユーザー ドライブは、接続しているユーザーごとに一意のフォルダーにマップされる PSDrive です。 このフォルダーを使用すると、ユーザーは完全なファイル システムへのアクセスを許可したり、FileSystem プロバイダーを公開したりすることなく、システム間でファイルをコピーできます。 ユーザー ドライブの内容は、ネットワーク接続が中断される可能性がある状況に対応するために、セッション間で永続的です。

MountUserDrive = $true

既定では、ユーザー ドライブでは、ユーザーごとに最大 50 MB のデータを格納できます。 ユーザーが UserDriveMaximumSize フィールドで使用できるデータの量を制限できます。

# Enables the user drive with a per-user limit of 500MB (524288000 bytes)
MountUserDrive = $true
UserDriveMaximumSize = 524288000

ユーザー ドライブ内のデータを永続的にしない場合は、システムでスケジュールされたタスクを構成して、毎晩フォルダーを自動的にクリーンアップできます。

ユーザー ドライブは、PowerShell 5.1 以降でのみ使用できます。

PSDrive の詳細については、「 PowerShell ドライブの管理」を参照してください。

ロールの定義

セッション構成ファイル内のロール定義は、 ユーザー とロールのマッピングを定義 します。 このフィールドに含まれるすべてのユーザーまたはグループには、登録時に JEA エンドポイントへのアクセス許可が付与されます。 各ユーザーまたはグループは、1 回だけハッシュテーブルにキーとして含めることができますが、複数のロールを割り当てることができます。 ロール機能の名前は、 .psrc 拡張子を付けずにロール機能ファイルの名前にする必要があります。

RoleDefinitions = @{
    'CONTOSO\JEA_DNS_ADMINS'    = @{ RoleCapabilities = 'DnsAdmin', 'DnsOperator', 'DnsAuditor' }
    'CONTOSO\JEA_DNS_OPERATORS' = @{ RoleCapabilities = 'DnsOperator', 'DnsAuditor' }
    'CONTOSO\JEA_DNS_AUDITORS'  = @{ RoleCapabilities = 'DnsAuditor' }
}

ユーザーがロール定義内の複数のグループに属している場合は、それぞれのロールにアクセスできます。 2 つのロールが同じコマンドレットへのアクセスを許可すると、最も制限の緩いパラメーター セットがユーザーに付与されます。

ロール定義フィールドでローカル ユーザーまたはグループを指定する場合は、 localhost やワイルドカードではなく、必ずコンピューター名を使用してください。 $Env:COMPUTERNAME変数を調べることで、コンピューター名を確認できます。

RoleDefinitions = @{
    'MyComputerName\MyLocalGroup' = @{ RoleCapabilities = 'DnsAuditor' }
}

ロールの機能検索順序

上記の例に示すように、ロール機能はロール機能ファイルのベース名によって参照されます。 ファイルのベース名は拡張子のないファイル名です。 同じ名前のシステムで複数のロール機能を使用できる場合、PowerShell は暗黙的な検索順序を使用して、有効なロール機能ファイルを選択します。 JEA では、同じ名前のすべてのロール機能ファイルにアクセス できるわけではありません

JEA は、 $Env:PSModulePath 環境変数を使用して、ロール機能ファイルをスキャンするパスを決定します。 これらの各パス内で、JEA は "RoleCapabilities" サブフォルダーを含む有効な PowerShell モジュールを検索します。 モジュールのインポートと同様に、JEA は Windows に付属するロール機能を同じ名前のカスタム ロール機能に優先します。

その他の名前付けの競合については、Windows がディレクトリ内のファイルを列挙する順序によって優先順位が決まります。 順序はアルファベット順であるとは限りません。 指定された名前と一致する最初のロール機能ファイルが、接続しているユーザーに使用されます。 ロール機能の検索順序は決定論的ではないので、ロール機能には一意のファイル名を含めることを 強くお勧めします

条件付きアクセス規則

RoleDefinitions フィールドに含まれるすべてのユーザーとグループには、JEA エンドポイントへのアクセス権が自動的に付与されます。 条件付きアクセス規則を使用すると、このアクセスを絞り込み、割り当てられているロールに影響を与えない追加のセキュリティ グループにユーザーが属することを要求できます。 これは、Just-In-Time 特権アクセス管理ソリューション、スマートカード認証、またはその他の多要素認証ソリューションを JEA と統合する場合に便利です。

条件付きアクセス規則は、セッション構成ファイルの RequiredGroups フィールドで定義されます。 ここで、"And" キーと "Or" キーを使用してルールを構築するハッシュテーブル (必要に応じて入れ子) を指定できます。 このフィールドの使用方法の例を次に示します。

# Example 1: Connecting users must belong to a security group called "elevated-jea"
RequiredGroups = @{ And = 'elevated-jea' }

# Example 2: Connecting users must have signed on with 2 factor authentication or a smart card
# The 2 factor authentication group name is "2FA-logon" and the smart card group
# name is "smartcard-logon"
RequiredGroups = @{ Or = '2FA-logon', 'smartcard-logon' }

# Example 3: Connecting users must elevate into "elevated-jea" with their JIT system and
# have logged on with 2FA or a smart card
RequiredGroups = @{ And = 'elevated-jea', @{ Or = '2FA-logon', 'smartcard-logon' }}

条件付きアクセス規則は、PowerShell 5.1 以降でのみ使用できます。

その他のプロパティ

セッション構成ファイルでは、接続しているユーザーにさまざまなコマンドへのアクセス権を付与する機能がなくても、ロール機能ファイルで実行できるあらゆる操作を実行することもできます。 すべてのユーザーに特定のコマンドレット、関数、またはプロバイダーへのアクセスを許可する場合は、セッション構成ファイルで直接アクセスできます。 セッション構成ファイルでサポートされているプロパティの完全な一覧については、 Get-Help New-PSSessionConfigurationFile -Full実行します。

セッション構成ファイルのテスト

セッション構成は、 Test-PSSessionConfigurationFile コマンドレットを使用してテストできます。 .pssc ファイルを手動で編集した場合は、セッション構成ファイルをテストすることをお勧めします。 テストでは、構文が正しいことを確認します。 セッション構成ファイルがこのテストに失敗した場合、システムに登録できません。

サンプル セッション構成ファイル

次の例は、JEA のセッション構成を作成して検証する方法を示しています。 ロール定義は、利便性と読みやすさのために、 $roles 変数に作成および格納されます。 これは必須ではありません。

$roles = @{
    'CONTOSO\JEA_DNS_ADMINS'    = @{ RoleCapabilities = 'DnsAdmin', 'DnsOperator', 'DnsAuditor' }
    'CONTOSO\JEA_DNS_OPERATORS' = @{ RoleCapabilities = 'DnsOperator', 'DnsAuditor' }
    'CONTOSO\JEA_DNS_AUDITORS'  = @{ RoleCapabilities = 'DnsAuditor' }
}

$parameters = @{
    SessionType = 'RestrictedRemoteServer'
    Path = '.\JEAConfig.pssc'
    RunAsVirtualAccount = $true
    TranscriptDirectory = 'C:\ProgramData\JEAConfiguration\Transcripts'
    RoleDefinitions = $roles
    RequiredGroups = @{ Or = '2FA-logon', 'smartcard-logon' }
}
New-PSSessionConfigurationFile @parameters
Test-PSSessionConfigurationFile -Path .\JEAConfig.pssc # should yield True

セッション構成ファイルの更新

ユーザーからロールへのマッピングなど、JEA セッション構成のプロパティを変更するには、 登録を解除する必要があります。 次に、更新されたセッション構成ファイルを使用して、JEA セッション構成を 再登録 します。

次のステップ