使用 Just-Enough-Administration (JEA) 实现 PowerShell 安全远程处理

最后更新: 17/12/2025
作者: 艾萨克
  • JEA 遵循最小特权原则 PowerShell的 远程处理、减少具有提升权限的帐户数量以及限制每个角色可用的 cmdlet。
  • .psrc 和 .pssc 文件的组合允许您定义角色功能、受限端点、虚拟帐户和详细的审计记录,以便进行完整的审计。
  • 与 GPO、AppLocker 或通用端点等方法相比,JEA 提供了更精细的控制和强大的 RBAC 模型,可以在不暴露特权凭据的情况下委派任务。
  • 正确实施需要精心设计角色、测试和持续维护,但它可以在不牺牲生产力的情况下显著提高安全性。

Powershell 命令写入文件内部

在任何环境中,使用 PowerShell 远程处理几乎都变得不可或缺。 Windows 虽然技术现代化,但授予远程访问权限却不加控制,就好比把数据中心的钥匙放在桌子上一样。这就是它的作用所在。 适度行政管理(JEA)一层安全机制,允许您委派任务,而不会随意授予管理员权限。

使用 JEA,您可以设置非常有限的远程访问点,仅允许特定用户运行。 comandos 您已授权,但使用的是权限更高的帐户。 在不了解真实身份信息或无法偏离剧本的情况下所有这些都被记录在案,并形成了文字记录。 日志 详细说明后,您可以审核谁在何时何地做了什么。

什么是适度管理(JEA)?它为什么重要?

Just-Enough-Administration 是一种基于 PowerShell 的安全技术 它采用委托管理模型,并尽可能减少必要的权限。实际上,JEA 允许您公开远程端点,但只有您定义的一组封闭的 cmdlet、函数、脚本和外部命令才能访问这些端点。

得益于这种方法,您可以 大幅减少拥有高级权限的账户数量 在服务器上,您可以使用虚拟帐户或组管理服务帐户 (gMSA) 代表标准用户执行特权操作。用户使用其常规凭据登录,并通过 JEA 会话启动在后台以更高权限执行的命令。

JEA的另一个关键支柱是其能力 精确定义每个角色可以做什么角色权限文件定义了哪些 cmdlet、自定义函数、外部命令或 PowerShell 提供程序对用户可见。其余内容对用户而言并不存在:他们无法编写脚本、自由浏览文件系统,也无法访问您未指定的任何服务或进程。

此外,所有 JEA 会话都可以配置为生成 完整记录和审计事件捕获命令、参数、输出、错误、用户身份和执行时间不仅有助于满足监管要求,而且在调查安全事件或操作故障时也具有不可估量的价值。

特权账户的风险以及JEA如何降低这些风险

具有提升权限的本地、域或应用程序管理员帐户意味着 任何组织中最严重的风险因素之一如果攻击者获得这些凭证之一,他们就可以在网络中横向移动,提升权限,并访问关键数据、关键服务,甚至瘫痪整个系统。

撤销权限并非总是易事。一个典型的例子是…… 同时托管 DNS 和 Active Directory 域控制器的服务器DNS 团队需要本地管理员权限才能排查 DNS 服务问题,但将他们添加到域管理员组实际上赋予了他们整个林的控制权以及对该计算机上任何资源的访问权限。这是一个为了操作便利而牺牲安全性的典型例子。

JEA通过严格应用以下原则解决了这一困境: 最小特权原则与其让 DNS 管理员兼任域管理员,不如创建一个专用的 DNS JEA 端点,该端点仅公开清除缓存、重启服务、查看日志或类似任务所需的 cmdlet。这样,操作员无需检查 Active Directory、浏览文件系统、运行随机脚本或执行潜在危险的实用程序即可完成工作。

  Outlook Express:在 Windows 10 中下载和使用

当您配置 JEA 会话以使用 具有临时权限的虚拟帐户这一举措更有意思:用户使用非特权凭据连接,并能从该会话中执行通常需要管理员权限的任务。这使得许多用户可以从本地或域管理员组中移除,既能维持运营,又能显著加强攻击面。

JEA 的安全理念

JEA并非凭空出现: 它基于几个成熟的安全原则和模型。 这赋予了它连贯性和稳健性。首先是前面提到的最小权限原则,该原则规定用户和进程都应该只拥有实现其功能所必需的权限。

第二大支柱是以下模式: 基于角色的访问控制(RBAC)JEA 通过角色功能文件实现基于角色的访问控制 (RBAC),您可以在其中定义特定角色在远程会话中可以执行的操作。例如,服务台角色可以列出服务、查看事件和重启特定服务,而 SQL Server 管理角色只能执行与 SQL Server 相关的 cmdlet…… 数据库 还有一点。

La JEA 的技术基础是 PowerShell 及其远程处理基础架构PowerShell 提供语言、cmdlet 和远程通信层(WinRM/WS-Management),而 JEA 则在此基础上增加了一个受限端点、虚拟帐户和对可用命令的精细控制系统。

另一个重要的概念是 受限管理, 类似于 在 Windows 11 信息亭模式下分配访问权限JEA 不会给操作员提供完整的 shell 权限,而是创建一个会话,其中脚本语言受到限制(默认情况下为 NoLanguage),创建新函数或变量被阻止,循环和条件语句被禁用,并且只允许执行已批准的 cmdlet。这极大地限制了即使攻击者设法获得该会话的访问权限,其能力也受到严重限制。

关键组件:.psrc 和 .pssc 文件

任何 JEA 部署的核心都是两种类型的文件: 角色功能文件(.psrc)和会话配置文件(.pssc)它们共同将通用 shell 转变为为特定用户量身定制的终端。

在角色能力文件中,您定义 该角色具体可以使用哪些命令其中最重要的因素包括:

  • VisibleCmdlets:允许的 cmdlet 列表,甚至可以限制参数。
  • 可见函数:在会话中加载的自定义函数。
  • 可见外部命令:被访问的特定外部可执行文件。
  • 可见提供者会话中可见的 PowerShell 提供程序(例如,FileSystem 或 Registry)。

另一方面,.pssc 会话配置文件 他们如此描述 JEA 端点,并将其与角色联系起来。此处声明了如下元素:

  • 角色定义:将用户或安全组映射到角色功能。
  • 会话类型其中,'RestrictedRemoteServer' 通常设置为加强会话安全。
  • 成绩单目录:存储每次会议记录的文件夹。
  • RunAsVirtualAccount 以及相关选项,例如是否将虚拟帐户添加到特定组。

JEA以以下形式体现: 系统中注册的 PowerShell 远程处理终结点这些端点是通过诸如以下 cmdlet 创建和启用的: 新建 PSSession 配置文件, 注册-PSSession配置 或者使用 JEA Helper Tool 等图形工具,这样就可以轻松生成 .pssc 和 .psrc 文件,而无需过多地处理语法问题。

JEA 会议生命周期

在搭建完整的 JEA 环境时,该过程通常遵循一系列逻辑步骤: 他们将开放的远程系统转变为严格管控的系统。典型顺序如下:

首先,你创建一个 安全组或多个安全组 这些组代表您想要委派的角色(例如,服务台 DNS 管理员、Web 操作员、SQL 操作员)。使用组并非强制性的,但随着环境规模的扩大,它可以大大简化管理。

然后,准备一个或多个。 角色能力文件 .psrc 这里列出了允许的操作:cmdlet、函数、脚本、外部命令、别名、提供程序以及其他限制(特定参数、允许的路径等)。例如,您可以允许所有以 Get- 开头的 cmdlet,将 Restart-Service 限制为 Spooler 服务,并仅授权 FileSystem 提供程序。

  YouTube 的新骗局:欺诈链接向内容创建者分发恶意软件

生成以下内容 会话配置文件 .pssc 使用 New-PSSessionConfigurationFile。它定义了诸如 SessionType = RestrictedRemoteServer、TranscriptDirectory 路径、是否使用虚拟帐户以及将组链接到角色功能的 RoleDefinitions 块等选项,例如,'DOMAIN\HelpdeskDNS' = @{ RoleCapabilities = 'HelpdeskDNSRole' }。

.pssc 文件准备就绪后,即可使用以下命令注册端点 Register‑PSSessionConfiguration -Name JEASession Name -Path Path\File.pssc从那一刻起,如果使用 Get-PSSessionConfiguration 列出可用配置,则新的连接点将显示为已准备好接收连接。

用户通过他们的计算机连接到此端点 输入-PSSession -ComputerName Server -ConfigurationName JEASession Name 或者使用 New-PSSession 命令,然后使用 Invoke-Command 命令。进入会话后,会话会自动应用用户关联角色权限中定义的限制。

会议期间, PowerShell 远程处理使用带有加密通道的 WinRM集成身份验证(通常是域中的 Kerberos)以及为该服务定义的防火墙规则。在此基础上,如果启用了 RunAsVirtualAccount,则会创建一个临时虚拟帐户,将其添加到必要的组,并在会话结束时销毁该帐户。

最后,在结束JEA会议时, 审计记录和事件均已保存。 这些日志清晰地记录了已执行的命令、结果和用户上下文。随后,它们可以发送到安全信息和事件管理 (SIEM) 系统或在 SIEM 系统中进行关联,以便发出警报和进行进一步分析。

PowerShell 远程处理、访问控制和加固

PowerShell 远程处理,由该服务提供支持 Windows远程管理(WinRM) WS-Management协议允许在远程计算机上集中执行命令和脚本。它是自动化、批量服务器管理、调试和远程支持的强大工具。

默认, 本地管理员和远程管理用户组成员 他们可以使用标准的 PowerShell 端点。在许多环境中,此功能已被用于允许非管理员用户运行远程任务,这本身并不危险,但如果控制不当,则会为滥用行为打开一条重要途径。

为了加强安全态势,一种常见的策略包括 限制远程 PowerShell 访问权限,仅限管理员帐户。 或者,更好的方法是,将此限制与 JEA 端点结合使用,仅向特定用户授予绝对必要的访问权限。这可以通过以下方式实现:

  • 定义哪些组可以使用 WinRM 以及默认端点的 GPO。
  • 防火墙规则仅允许从子网或管理计算机访问 WinRM。
  • 从标准端点的 ACL 中删除远程管理用户组。

此外,您还可以选择 完全禁止非管理员用户使用 PowerShell 使用 AppLocker 等解决方案。这样,既可以防止普通用户在本地运行恶意脚本,又能允许特权帐户使用 PowerShell 执行管理和自动化任务。

JEA 与其他 PowerShell 限制方法的比较

有多种方法可以限制用户使用 PowerShell 远程处理执行的操作,并且 JEA 是一种更薄、更灵活的选择。 其中包括以下更广泛的方法:

一方面,使用 使用组策略对象 (GPO) 控制谁可以访问默认的 PowerShell 端点可以将 Microsoft PowerShell 的访问权限限制为仅限管理员,甚至可以取消所有人的注册权限,强制使用特定的端点。这对于以“暴力”方式限制访问非常有用,但无法解决粒度问题:任何获得访问权限的人几乎都可以执行任何操作。

另一方面,也有一些应用程序控制工具,例如: AppLocker 或软件限制策略这些方法允许您通过路径、发布者或哈希值来阻止标准用户执行 PowerShell.exe 或 pwsh.exe。这种方法对于加固工作站并阻止任何用户启动 PowerShell 非常有用,但当您希望用户使用其用户帐户执行有限的管理任务时,这种方法存在局限性。

另一种选择是 受限端点未达到完全 JEA您可以创建自定义会话配置来限制 cmdlet、函数和模块,而无需像 JEA 那样过度依赖角色模型、虚拟帐户或结构化的 RBAC。这是一种折衷方案,适用于简单的场景,但在大型环境中可扩展性较差。

  在 Hyper-V 中创建和使用检查点的完整指南:类型、管理和最佳实践

JEA融合了多个领域的优势: 严格的命令限制、基于角色的访问控制 (RBAC)、受控的提升权限执行以及全面的日志记录因此,当您需要为非管理员启用 PowerShell 远程处理,但又不想向他们提供完整的管理环境时,这是推荐的解决方案。

高级功能:以其他帐户运行并记录日志

JEA最强大的功能之一是 使用另一个权限更高的帐户执行命令,而无需暴露您的凭据这样就解决了“我会把这个服务的密码给你,这样你就可以做X”这种典型的问题,而这个密码之后却从未更改,最终造成了巨大的风险。

领域场景是常用的。 集团托管服务帐户 (gMSA) 这使得 JEA 端点能够以集中管理的服务身份执行操作,并自动轮换密码,且任何操作员都无需知晓密钥。在其他情况下,则使用本地临时虚拟帐户,这些帐户在用户连接时临时创建,并在会话结束时销毁。

从审计角度来看,每个 JEA 会话都可以配置为: 生成 PowerShell 脚本和丰富的事件日志条目通常收集的信息包括:

  • 完整的命令和参数输入历史记录。
  • 生成的输出和错误信息。
  • 会话开始和结束的时间戳以及会话持续时间。
  • 登录用户的身份及其分配的角色/权限。

如果将这些痕迹与以下功能结合起来: PowerShell 模块日志记录和 脚本 通过组策略对象 (GPO) 阻止日志记录通过将日志发送到 SIEM 系统,您可以全面了解管理端点上发生的情况。这对于合规性(例如 SOX 审计、ISO 27001 等)以及事件检测和响应都至关重要。

JEA 在实际环境中的典型应用案例

JEA 在您需要的时候尤其表现出色 将非常具体的任务委派给不应该担任管理员的团队实践中一些非常常见的例子包括:

在技​​术支持领域,您可以为顶级技术人员提供服务。 通过 JEA 访问服务重启、查看事件日志和检查进程状态 在服务器上,但没有安装软件、修改关键配置或访问 Active Directory 的权限。典型的服务台角色可能包括使用 Get-Service、Restart-Service(针对特定服务)、Get-EventLog(只读模式)以及一些网络诊断 cmdlet。

在运维或开发团队中,您可以进行配置 专注于特定任务的职位,例如 IIS 管理或网站维护。例如,允许访问应用程序池管理 cmdlet、网站重启、从受限目录查询日志以及特定服务的证书管理,同时排除重启整个服务器或修改安全策略的任何权限。

在混合云和云环境中,JEA 经常用于 限制每个团队可以做的事情 虚拟机, 存储 或网络您可以公开端点,以便仅管理部门的虚拟机、修改特定网段的防火墙规则或管理一组特定的服务帐户,从而将访问权限与基础架构的其余部分隔离。

与此同时,JEA 与 特权访问管理 (PAM) 策略其中,特权会话是临时授予的,会被记录,并归属于个人身份,从而避免共享帐户,并将与每个特权操作相关的风险降至最低。

在 Windows 5 中限制对共享文件夹的权限和访问
相关文章:
如何逐步限制对 Windows 中共享文件夹的访问