当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 使用 PowerShell Just Enough Administration (JEA) 将权限委派给非管理员用户

作者:精品下载站 日期:2024-12-14 23:02:13 浏览:13 分类:玩电脑

使用 PowerShell Just Enough Administration (JEA) 将权限委派给非管理员用户


Just Enough Administration (JEA) 功能从 PowerShell 版本 5.0 开始提供,允许您将管理权限委派给您可以使用 PowerShell 管理的任何内容。 PowerShell JEA 的主要目的是限制权限。 JEA 允许您授予非管理员用户执行特定管理任务的权限,而无需授予他们服务器或服务管理员权限(AD、Exchange、SharePoint 等)。使用 JEA,您可以设置哪些用户可以使用管理员权限运行特定的 cmdlet、函数或 PowerShell 脚本并记录所有操作(类似于 PowerShell 命令历史记录)。

如何实施PowerShell Just Enough Administration?

管理员在服务器上创建包含用户可以运行的命令的 PowerShell 会话配置文件。根据这些文件,创建一个 JEA 端点,用户可以连接到并执行他可用的任何命令或程序。

这里我们将展示如何授予非管理员用户重新启动域控制器的权限,并重新启动其上的 DNS 和 ADDS 服务的示例。

在这种情况下,您无权向用户授予对域控制器的 RDP 访问权限、在 AD 中委派管理权限、分配 Windows 服务权限或根据链接后面的指南重新启动服务器。所有必要的限制都在 Just Enough Administration 的配置中设置。

首先,创建 PowerShell 会话的配置文件 (*.pssc)。为此,请在域控制器上运行以下命令:

New-PSSessionConfigurationFile -Path 'C:\Program Files\WindowsPowerShell\dc_manage.pssc'

使用记事本打开 PSSC 文件。

[玩转系统] 使用 PowerShell Just Enough Administration (JEA) 将权限委派给非管理员用户

PSSC 文件设置谁可以连接到此 JEA 端点以及 JEA 会话中的命令将在什么帐户下运行。

修改以下值:

  • SessionType 从默认设置为RestrictedRemoteServer。此模式允许使用以下 PowerShell cmdlet:Clear-Host、Exit-PSSession、Get-Command、Get-FormatData、Get-Help、Measure-Object、Out-Default 或 Select-Objectl

  • TranscriptDirectory 参数中指定一个文件夹(创建它)。您将在此处记录所有 JEA 用户操作:

    TranscriptDirectory = C:\PS\JEA_logs
  • RunAsVirtualAccount 选项允许在虚拟管理员帐户(本地管理员或域管理员组的成员)下运行命令:

    RunAsVirtualAccount = $true

您可以使用组托管服务帐户 (gMSA) 访问网络资源:

GroupManagedServiceAccount = 'a-d\gMSAJEAUser'

在 RoleDefinitions 指令中,指定允许连接到 PowerShell 会话的 AD 安全组和 JEA 角色的名称(它必须与我们稍后要创建的 PSRC 文件名匹配)。

例如:

RoleDefinitions = @{‘a-d.site\HelpDesk' = @{ RoleCapabilities = 'HelpDesk_admins' }}

[玩转系统] 使用 PowerShell Just Enough Administration (JEA) 将权限委派给非管理员用户

保存会话配置文件。

在继续之前,请确保配置文件中没有错误:

Test-PSSessionConfigurationFile -Path  'C:\Program Files\WindowsPowerShell\dc_manage.pssc'

[玩转系统] 使用 PowerShell Just Enough Administration (JEA) 将权限委派给非管理员用户

创建一个新目录来保存JEA配置文件,例如:

New-Item -Path 'C:\Program Files\WindowsPowerShell\Modules\JEA\RoleCapabilities ' -ItemType Directory

PSRC 文件必须始终位于相应模块的 RoleCapability 子文件夹中。

然后创建一个包含角色描述的配置 PSRC 文件(使用上面 PSSC 配置中的文件名)。

New-PSRoleCapabilityFile -Path 'C:\Program Files\WindowsPowerShell\Modules\JEA\RoleCapabilities\HelpDesk_admins.psrc'

PSRC 文件指定当前 JEA 会话中允许执行的操作。在 VisibleCmdlets 指令中,您可以指定允许用于给定用户组的 cmdlet(及其有效参数)。

VisibleExternalCommands选项中,您可以指定允许运行的外部命令和EXE文件。

例如,以下配置允许 HelpDesk 用户使用 shutdown 命令或

Restart-Computer

cmdlet,以及使用以下命令重新启动 DNSServer 和 Active Directory 域服务

Restart-Service

cmdlet。

VisibleCmdlets = 'Restart-Computer', @{ Name = 'Restart-Service'; Parameters = @{ Name = 'Name'; ValidateSet = 'DNS', 'NTDS' }}
VisibleExternalCommands = 'c:\windows\system32\shutdown.exe'

保存您的 PSRC 文件。

[玩转系统] 使用 PowerShell Just Enough Administration (JEA) 将权限委派给非管理员用户

然后为您的 PSSC 文件注册一个新的 PSSession 配置:

Register-PSSessionConfiguration -Name testHelpDesk -Path 'C:\Program Files\WindowsPowerShell\dc_manage.pssc'

并重新启动 WinRM:

Restart-Service WinRM

[玩转系统] 使用 PowerShell Just Enough Administration (JEA) 将权限委派给非管理员用户

您可以列出可用的 JEA 端点:

Get-PSSessionConfiguration|ft name

[玩转系统] 使用 PowerShell Just Enough Administration (JEA) 将权限委派给非管理员用户

让我们看看新的 Just-Enough-Administration (JEA) 配置是如何工作的。您可以从配置文件中指定的安全组的用户帐户连接到创建的 JEA 端点。使用 PowerShell Remoting 连接到域控制器(必须指定 JEA 端点名称):

Enter-PSSession -ComputerName dc01 -ConfigurationName testHelpDesk

查看 PowerShell 会话中可用 cmdlet 的列表:

Get-Command

如您所见,有少量命令可用,包括 Restart-Service 和 Restart-Computer。用户只能做他被允许做的事情。

尝试重启DNS服务:

Restart-Service dns

服务已成功重新启动(该命令以具有域管理员权限的特权用户身份运行)。

如果您尝试重新启动 JEA 配置文件中未描述的任何其他服务,则会出现以下错误消息:

Cannot validate argument on parameter 'Name'. The argument "spooler" does not belong to the set "DNS,NTDS" specifiedby the ValidateSet attribute. Supply an argument that is in the set and then try the command again. + CategoryInfo : InvalidData: (:) [Restart-Service], ParameterBindingValidationException

[玩转系统] 使用 PowerShell Just Enough Administration (JEA) 将权限委派给非管理员用户

JEA PowerShell 会话中所有用户操作的历史记录都记录到 C:\PS\JEA_logs 中的文件中。

[玩转系统] 使用 PowerShell Just Enough Administration (JEA) 将权限委派给非管理员用户

因此,JEA 允许您精细地授予用户以管理员身份运行特定 PowerShell cmdlet、脚本或程序的访问权限。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯