共用方式為


JEA 會話設定

JEA 端點會藉由建立和註冊 PowerShell 工作階段組態檔,在系統上註冊。 會話設定會定義誰可以使用 JEA 端點,以及他們可存取哪些角色。 它們也會定義套用至 JEA 會話所有使用者的全域設定。

建立工作階段組態檔

若要註冊 JEA 端點,您必須指定該端點的設定方式。 有許多選項需要考慮。 最重要的選項包括:

  • 可存取 JEA 端點的人員
  • 他們可以指派哪些角色
  • JEA 在背後使用哪些身分識別
  • JEA 端點的名稱

這些選項定義在具 .pssc 擴展名的 PowerShell 資料檔案中,被稱為 PowerShell 會話組態檔案。 會話組態檔可以使用任何文本編輯器來編輯。

執行下列命令以建立空白範本組態檔。

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

小提示

根據預設,範本檔案中只會包含最常見的組態選項。 使用 -Full 開關,在產生的 PSSC 中包含所有適用的設定。

[-SessionType RestrictedRemoteServer] 字段表示 JEA 使用會話設定進行安全管理。 此類型的會話在 NoLanguage 模式中運作,而且只能存取下列預設命令 (和別名):

  • Clear-Hostclsclear
  • Exit-PSSessionexsnexit
  • Get-Commandgcm
  • Get-FormatData
  • Get-Help
  • Measure-Objectmeasure
  • Out-Default
  • Select-Objectselect

沒有可用的 PowerShell 提供者,也沒有任何外部程式(可執行檔或腳本)。

如需語言模式的詳細資訊,請參閱 about_Language_Modes

選擇 JEA 身分識別

在幕後,JEA 需要一個身分識別(帳戶)來執行連線使用者的命令。 您可以在工作階段組態檔中定義 JEA 所使用的身分識別。

本機虛擬帳戶

當針對 JEA 端點定義的所有角色都用來管理本機電腦,且本機系統管理員帳戶足以順利執行命令時,本機虛擬帳戶會很有用。 虛擬帳戶是特定使用者唯一的暫存帳戶,只會在其PowerShell工作期間持續。 在成員伺服器或工作站上,虛擬帳戶屬於本機計算機的 Administrators 群組。 在 Active Directory 域控制器上,虛擬帳戶屬於網域的 Domain Admins 群組。

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

如果會話設定所定義的角色不需要完整的系統管理許可權,您可以指定虛擬帳戶所屬的安全組。 在成員伺服器或工作站上,指定的安全組必須是本地組,而不是來自網域的群組。

指定一或多個安全組時,虛擬帳戶不會指派給本機或網域系統管理員群組。

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

群組管理的服務帳戶

當 JEA 使用者需要存取檔案共用和 Web 服務等網路資源時,群組管理的服務帳戶 (GMSA) 是適當的身分識別。 GMSA 提供網域身分識別,用來向網域內任何計算機上的資源進行驗證。 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 時,很難追蹤用戶的動作。 每個用戶使用相同的執行身分識別。 您必須檢閱 PowerShell 工作階段文字記錄和記錄,以將個別使用者與其動作相互關聯。

  • GMSA 可以存取連線使用者不需要存取的許多網路資源。 始終嘗試限制 JEA 會話中的有效許可權,以符合最小權限原則。

備註

群組受管理的服務帳戶僅適用於加入網域的機器且用於 PowerShell 5.1 或更新版本。

如需保護 JEA 會話的詳細資訊,請參閱 安全性考慮 一文。

會話文字記錄

** 建議您配置 JEA 端點,以自動記錄使用者的會話記錄文字。 PowerShell 會話記錄包含有關連線使用者的信息、指派給他們用於執行操作的身分識別,以及使用者執行的命令。 對於需要瞭解誰對系統進行特定變更的稽核小組很有用。

若要在工作階段組態檔中設定自動轉譯,請提供應該儲存文字記錄的資料夾路徑。

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

轉錄檔由 本機系統 帳戶寫入資料夾,需要目錄的讀取和寫入權限。 標準使用者不應具有資料夾的存取權。 限制可存取稽核文字記錄的安全性系統管理員數目。

使用者磁碟驅動器

如果您的連線使用者需要將檔案複製到 JEA 端點或從 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 端點時,此字段中所包含的每個使用者或群組都會獲授與 JEA 端點的許可權。 每個使用者或群組只能包含在哈希表中做為索引鍵一次,但可以指派多個角色。 角色功能的名稱應該是角色功能檔的名稱,不含 .psrc 擴展名。

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

如果用戶屬於角色定義中的多個群組,他們就會取得每個角色的存取權。 當兩個角色授與相同 Cmdlet 的存取權時,會將最寬鬆的參數集授與給使用者。

在 [角色定義] 欄位中指定本機使用者或群組時,請務必使用計算機名稱,而不是 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或更新版本。

其他屬性

會話組態檔也可以執行角色功能檔案所能執行的一切,只要沒有提供連線使用者存取不同命令的能力即可。 如果您想要允許所有使用者存取特定 Cmdlet、函式或提供者,您可以在工作階段組態檔中正確執行此動作。 如需工作階段組態檔中支援屬性的完整清單,請執行 Get-Help New-PSSessionConfigurationFile -Full

測試會話組態檔

您可以使用 Test-PSSessionConfigurationFile Cmdlet 來測試會話設定。 如果您已手動編輯 .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 會話設定

後續步驟