共用方式為


JEA 安全性考慮

JEA 可藉由減少您機器上的永久系統管理員數目,協助您改善安全性狀態。 JEA 會使用 PowerShell 會話設定來建立新的進入點,讓用戶能夠管理系統。 需要提高許可權但不受限制的機器存取權來執行系統管理工作的使用者,可以授與 JEA 端點的存取權。 由於 JEA 可讓這些使用者執行系統管理命令,而不需要完全系統管理員存取權,您便可以將這些使用者從高許可權安全組中移除。

執行身分帳戶

每個 JEA 端點都有指定的 執行身分 帳戶,用來執行連線用戶的動作。 此帳戶可在會話組態檔設定,而您選擇的帳戶對您的端點安全性有重大影響。

虛擬帳戶是設定執行身分帳戶的建議方式。 虛擬帳戶是針對連線使用者在其 JEA 會話期間使用而建立的一次性暫時本機帳戶。 一旦會話終止,虛擬帳戶就會終結,且無法再使用。 線上的使用者不知道虛擬帳戶的認證。 虛擬帳戶無法透過遠端桌面或不受限制的PowerShell端點等其他方式來存取系統。

根據預設,虛擬帳戶是計算機上本機 管理員 istrators 群組的成員。 此成員資格賦予他們管理系統上任何專案的完整許可權,但沒有管理網路上資源的許可權。 當使用者從 JEA 會話連線到其他電腦時,用戶內容就是本機電腦帳戶,而不是虛擬帳戶。

域控制器是特殊案例,因為沒有本機 管理員 istrators 群組。 相反地,虛擬帳戶屬於網域 管理員,而且可以管理域控制器上的目錄服務。 網域身分識別仍受限於具現化 JEA 會話的域控制器上使用。 任何網路存取似乎都來自域控制器計算機物件。

在這兩種情況下,您可以將虛擬帳戶指派給特定安全組,特別是當工作可以在沒有本機或網域系統管理員許可權的情況下完成時。 如果您已經為系統管理員定義安全組,請將虛擬帳戶成員資格授與該群組。 虛擬帳戶的群組成員資格僅限於工作站和成員伺服器上的本機安全組。 在域控制器上,虛擬帳戶必須是網域安全組的成員。 一旦虛擬帳戶新增至一或多個安全組,它就不再屬於預設群組(本機或網域系統管理員)。

下表摘要說明虛擬帳戶的可能組態選項和結果許可權:

計算機類型 虛擬帳戶群組組態 本機用戶內容 網路用戶內容
網域控制站 預設 網域用戶,成員 <DOMAIN>\Domain Admins 計算機帳戶
網域控制站 網域群組 A 和 B 網域用戶,成員, 、<DOMAIN>\A<DOMAIN>\B 計算機帳戶
成員伺服器或工作站 預設 本機用戶,成員 BUILTIN\Administrators 計算機帳戶
成員伺服器或工作站 本地組 C 和 D 本機使用者、和的成員<COMPUTER>\C<COMPUTER>\D 計算機帳戶

當您查看安全性稽核和應用程式事件記錄檔時,您會看到每個 JEA 用戶工作階段都有唯一的虛擬帳戶。 此唯一帳戶可協助您追蹤 JEA 端點中的用戶動作,回到執行命令的原始使用者。 虛擬帳戶名稱會遵循格式WinRM Virtual Users\WinRM_VA_<ACCOUNTNUMBER>_<DOMAIN>_<sAMAccountName>,例如,如果網域中的使用者 Alice 在 JEA 端點中重新啟動服務,則與任何服務控制管理員事件相關聯的用戶名稱會是 WinRM Virtual Users\WinRM_VA_1_contoso_alice

當成員伺服器需要存取 JEA 會話中的網路資源時,群組管理的服務帳戶 (gMSA) 很有用。 例如,當 JEA 端點用來控制裝載於不同電腦上的 REST API 服務的存取權時。 您可以輕鬆地撰寫函式來叫用 REST API,但您需要網路身分識別來向 API 進行驗證。 使用群組管理的服務帳戶可讓第二個躍點成為可能,同時維持對哪些計算機可以使用帳戶的控制。 gMSA 的安全組(本機或網域)成員資格定義了 gMSA 帳戶的有效許可權。

當 JEA 端點設定為使用 gMSA 時,所有 JEA 使用者的動作似乎都來自相同的 gMSA。 追蹤動作回到特定使用者的唯一方法是識別在PowerShell會話文字記錄中執行的命令集。

當您未指定執行身分帳戶時,會使用傳遞認證。 PowerShell 會使用連線用戶的認證,在遠端伺服器上執行命令。 若要使用傳遞認證,您必須將連線的使用者直接存取權授與特殊許可權管理群組。 不建議針對 JEA 使用此設定。 如果連線的使用者已經有系統管理員許可權,他們可以略過 JEA,並使用其他存取方法管理系統。

標準執行身分帳戶 可讓您指定整個PowerShell會話執行所在的任何用戶帳戶。 使用固定 執行身分 帳戶的會話組態(搭配 -RunAsCredential 參數)不是 JEA 感知。 角色定義不再如預期般運作。 獲授權存取端點的每位用戶都會獲指派相同的角色。

您不應該在 JEA 端點上使用 RunAsCredential ,因為很難將動作追蹤回特定使用者,而且不支援將用戶對應至角色。

WinRM 端點 ACL

如同一般 PowerShell 遠端端端點,每個 JEA 端點都有個別的訪問控制清單(ACL),可控制誰可以使用 JEA 端點進行驗證。 如果設定不當,受信任的使用者可能無法存取 JEA 端點,且不受信任的使用者可能具有存取權。 WinRM ACL 不會影響使用者與 JEA 角色的對應。 對應是由 用來註冊端點的會話組態檔中的 RoleDefinitions 字段所控制。

根據預設,當 JEA 端點具有多個角色功能時,WinRM ACL 會設定為允許存取所有對應的使用者。 例如,使用下列命令設定的 JEA 工作階段會授與 和CONTOSO\JEA_Lev2的完整存取權CONTOSO\JEA_Lev1

$roles = @{ 'CONTOSO\JEA_Lev1' = 'Lev1Role'; 'CONTOSO\JEA_Lev2' = 'Lev2Role' }
New-PSSessionConfigurationFile -Path '.\jea.pssc' -SessionType RestrictedRemoteServer -RoleDefinitions $roles -RunAsVirtualAccount
Register-PSSessionConfiguration -Path '.\jea.pssc' -Name 'MyJEAEndpoint'

您可以使用 Get-PSSessionConfiguration Cmdlet 來稽核用戶權力。

Get-PSSessionConfiguration -Name 'MyJEAEndpoint' | Select-Object Permission
Permission
----------
CONTOSO\JEA_Lev1 AccessAllowed
CONTOSO\JEA_Lev2 AccessAllowed

若要變更哪些使用者具有存取權,請針對互動式提示執行 Set-PSSessionConfiguration -Name 'MyJEAEndpoint' -ShowSecurityDescriptorUI ,或 Set-PSSessionConfiguration -Name 'MyJEAEndpoint' -SecurityDescriptorSddl <SDDL string> 更新許可權。 使用者至少 需要叫 用許可權才能存取 JEA 端點。

可以建立 JEA 端點,該端點不會將已定義的角色對應至具有存取權的每個使用者。 這些使用者可以啟動 JEA 會話,但只能存取預設 Cmdlet。 您可以執行 Get-PSSessionCapability來稽核 JEA 端點中的用戶權力。 如需詳細資訊,請參閱 JEA 的稽核和報告。

最低許可權角色

設計 JEA 角色時,請務必記住,在幕後執行的虛擬和群組受控服務帳戶可以不受限制地存取本機計算機。 JEA 角色功能可協助限制可在該特殊許可權內容中執行的命令和應用程式。 設計不當的角色可以允許危險命令,讓使用者突破 JEA 界限或取得敏感性資訊的存取權。

例如,請考慮下列角色功能專案:

@{
    VisibleCmdlets = 'Microsoft.PowerShell.Management\*-Process'
}

此角色功能可讓使用者從 Microsoft.PowerShell.Management 模組執行任何名詞 Process的 PowerShell Cmdlet。 使用者可能需要存取這類 Get-Process Cmdlet,才能查看系統上執行的應用程式,以及 Stop-Process 終止未回應的應用程式。 不過,此專案也允許 Start-Process,其可用來啟動具有完整系統管理員許可權的任意程式。 程式不需要安裝在本機系統上。 線上的使用者可以從檔案共享啟動程式,以提供使用者本機系統管理員許可權、執行惡意代碼等等。

這個相同角色功能的更安全版本看起來會像這樣:

@{
    VisibleCmdlets = 'Microsoft.PowerShell.Management\Get-Process',
                     'Microsoft.PowerShell.Management\Stop-Process'
}

避免在角色功能中使用通配符。 請務必定期稽核有效的用戶權力,以查看用戶可存取哪些命令。 如需詳細資訊,請參閱 JEA 稽核與報告一文中的檢查有效許可權一節。

最佳做法建議

以下是確保 JEA 端點安全性的最佳作法建議:

限制 PowerShell 提供者的使用和功能

檢閱允許的提供者如何用來確保您不會在設定的會話中建立弱點。

警告

不允許 FileSystem 提供者。 如果使用者可以寫入文件系統的任何部分,則可以完全略過安全性。

不允許 憑證 提供者。 啟用提供者後,用戶可以存取儲存的私鑰。

不允許可建立新 Runspace 的命令。

警告

Cmdlet *-Job 可以建立新的 Runspace,而不受限制。

不允許 Cmdlet Trace-Command

警告

使用 Trace-Command 會將所有追蹤的命令帶入工作階段。

請勿為 受限制的命令建立您自己的 Proxy 實作

PowerShell 有一組受限制命令案例的 Proxy 命令。 這些 Proxy 命令可確保輸入參數無法危害會話的安全性。 下列命令具有限制的 Proxy:

  • Exit-PSSession
  • Get-Command
  • Get-FormatData
  • Get-Help
  • Measure-Object
  • Out-Default
  • Select-Object

如果您建立自己的這些命令實作,您可能會不小心允許使用者執行 JEA Proxy 命令所禁止的程式代碼。

JEA 不會保護系統管理員

JEA 的核心原則之一是,它允許非行政人員執行一些系統管理工作。 JEA 不會保護已有系統管理員許可權的使用者。 屬於網域 管理員、本機 管理員 istrators 或其他高許可權群組的使用者,可以透過其他方式規避 JEA 的保護。 例如,他們可以使用 RDP 登入、使用遠端 MMC 控制台,或連線到不受限制的 PowerShell 端點。 此外,系統上的本機系統管理員可以修改 JEA 設定,以新增更多使用者或變更角色功能,以擴充用戶可以在其 JEA 會話中執行的動作範圍。 請務必評估 JEA 使用者的擴充許可權,以查看是否有其他方法來取得系統的特殊許可權存取權。

除了使用 JEA 進行日常維護之外,通常還有 Just-In-Time 特殊許可權存取管理系統。 這些系統可讓指定的使用者只有在完成記錄其使用這些許可權的工作流程之後,才暫時成為本機系統管理員。