共用方式為


JEA 會話設定

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

建立工作階段組態檔

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

  • 神秘 可以存取 JEA 端點
  • 他們可以指派哪些角色
  • 哪些身分識別 JEA 在涵蓋下使用
  • JEA 端點的名稱

這些選項定義在PowerShell資料檔中,擴展名 .pssc 為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工作期間持續。 在成員伺服器或工作站上,虛擬帳戶屬於本機計算機的 管理員 istrators 群組。 在 Active Directory 網域 控制器上,虛擬帳戶屬於網域的 Domain 管理員 s 群組。

# 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 已在原則中授與此許可權,就不會再新增個別虛擬帳戶並從原則中移除。 在域控制器安全策略修訂受到密切稽核的案例中,這非常有用。 這僅適用於 Windows Server 2016 2018 年 11 月或更新版本的匯總和 Windows Server 2019 含 2019 年 1 月或更新版本的匯總。

群組管理的服務帳戶

當 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 工作階段組態。

下一步