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

[玩转系统] JEA 会话配置

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

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
  • 退出-PSSessionexsn退出
  • Get-Command (gcm)
Get-FormatData
Get-Help
  • 测量对象 (测量)
  • Out-Default
  • 选择对象 (选择)
  • 没有可用的 PowerShell 提供程序,也没有任何外部程序(可执行文件或脚本)。

    有关语言模式的更多信息,请参阅 about_Language_modes。

    选择 JEA 身份

    在幕后,JEA 需要一个身份(帐户)来运行连接用户的命令时使用。您可以在会话配置文件中定义 JEA 使用的身份。

    本地虚拟账户

    当为 JEA 端点定义的所有角色都用于管理本地计算机并且本地管理员帐户足以成功运行命令时,本地虚拟帐户非常有用。虚拟帐户是特定用户独有的临时帐户,并且仅在其 PowerShell 会话期间有效。在成员服务器或工作站上,虚拟帐户属于本地计算机的管理员组。在 Active Directory 域控制器上,虚拟帐户属于域的域管理员组。

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

    笔记

    虚拟账号在本地服务器安全策略中被临时授予“以服务登录”的权限。如果指定的 VirtualAccountGroup 之一已在策略中被授予此权限,则将不再在策略中添加和删除单个虚拟帐户。这在域控制器等场景中非常有用,其中对域控制器安全策略的修订进行了仔细审核。这仅适用于具有 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,它映射到每个连接用户的唯一文件夹。此文件夹允许用户将文件复制到系统或从系统复制文件,而无需授予他们访问完整文件系统或公开文件系统提供程序的权限。用户驱动器内容在会话之间保持不变,以适应网络连接可能中断的情况。

    MountUserDrive = $true
    

    默认情况下,用户驱动器允许您为每个用户存储最多 50MB 的数据。您可以使用 UserDriveMaximumSize 字段限制用户可以使用的数据量。

    # Enables the user drive with a per-user limit of 500MB (524288000 bytes)
    MountUserDrive = $true
    UserDriveMaximumSize = 524288000
    

    如果不希望用户驱动器中的数据持久化,可以在系统上配置计划任务,每天晚上自动清理文件夹。

    笔记

    用户驱动器仅在 PowerShell 5.1 或更高版本中可用。

    有关 PSDrive 的更多信息,请参阅管理 PowerShell 驱动器。

    角色定义

    会话配置文件中的角色定义定义用户角色的映射。此字段中包含的每个用户或组在注册时都会被授予对 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 都会查找包含“RoleCapability”子文件夹的有效 PowerShell 模块。与导入模块一样,JEA 更喜欢 Windows 附带的角色功能,而不是同名的自定义角色功能。

    对于所有其他命名冲突,优先级由 Windows 枚举目录中文件的顺序确定。不保证顺序是按字母顺序排列的。找到的第一个与指定名称匹配的角色功能文件将用于连接用户。由于角色功能搜索顺序不确定,因此强烈建议角色功能具有唯一的文件名。

    条件访问规则

    RoleDefinitions 字段中包含的所有用户和组都会自动授予对 JEA 端点的访问权限。条件访问规则允许您细化此访问,并要求用户属于不会影响分配给他们的角色的其他安全组。当您想要将即时特权访问管理解决方案、智能卡身份验证或其他多因素身份验证解决方案与 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 会话配置。

    后续步骤

    • 注册 JEA 配置
    • 作者 JEA 角色

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

    取消回复欢迎 发表评论:

    关灯