特定用户的受限端点
Constrained endpoint on specific user
我正在尝试创建一个 PowerShell 端点约束,限制用户只能执行我创建的自定义模块中的功能。
我做的第一件事是 import-module mymodule.psm1
,它允许我 运行 我的模块在我的主机系统中正常运行。
然后下面的 PS 命令为端点创建配置文件,允许括号内的函数成为用户可以执行的唯一函数。
New-PSSessionConfigurationFile -VisibleFunctions('Get-Command','Get-Info', 'CreateAD-User','Generate-Html','Change-Logon') -LanguageMode ‘ConstrainedLanguage’ –SessionType ‘RestrictedRemoteServer’ –Path ‘c:\test\helpdesk.pssc’
然后我用
注册端点
Register-PSSessionConfiguration –Name ‘HelpDesk’ -ShowSecurityDescriptorUI –Path ‘c:\test\helpdesk.pssc’
并选择了我希望允许的用户在 SecurityDescriptorUI
弹出后具有这些约束。一旦我登录到我设置约束的用户
Enter-PSSession -computername SRV1-AD -Credential $credential -ConfigurationName HelpDesk
这些是允许用户执行的允许的 cmdlet/功能。这些是允许远程连接到系统的默认必需 cmdlet。
如何让我的自定义模块成为端点允许用户执行的唯一功能?或如何将我的模块导入配置文件,以便在每次使用 HelpDesk 端点配置时执行。我知道在配置文件中有一行导入模块,但 Import-Module 实际上不是一个模块,一个模块的例子是 ActiveDirectory,如果我能够找到模块 import-module 是其中的一部分,我想我应该能够为此做一个快速而肮脏的工作。
更新
我为此找到的一个肮脏的解决方案是进入用户会话并禁用所有 cmdlets / 函数,除了我想要允许的那些,例如 import-module
& Get-Command
with import-module I可以手动导入我的自定义模块,我的功能将是唯一对用户可见的功能。但这不是一个完美的解决方案,因为这意味着我需要将我的模块下载到我希望它生效的每个系统中,并且它不再是一对多的解决方案。理想的解决方案是将我的模块存储在本地,进入与注册端点的会话并将我的模块导入到用户帐户中。
Enter-PSSession -computername SRV1-AD -Credential $credential -ConfigurationName HelpDesk
进一步更新
用户@prasoon-ka运行an-v 建议我使用 -ScriptsToProcess
& FunctionDefinitions
导入模块所以我使用了以下命令
New-PSSessionConfigurationFile -VisibleFunctions('Get-Command','Get-Info', 'CreateAD-User','Generate-Html','Change-Logon') -LanguageMode ‘ConstrainedLanguage’ –SessionType ‘RestrictedRemoteServer’ –Path ‘.\EndPoint.pssc’ -ScriptsToProcess C:\Users\Administrator\Desktop\Modules\ImportM.psm1
在配置文件中我也设置了我想使用的功能
# Functions defined in this session configuration
FunctionDefinitions = 'Get-Command','Get-Info', 'CreateAD-User','Generate-Html','Change-Logon'
当我尝试建立会话时,它会抛出以下错误
然后我想它可能不起作用,因为我们没有告诉命令导入任何东西只是指向模块文件,所以也许我需要创建一个导入模块的小脚本,然后将其添加到配置文件中。所以这正是我所做的 我创建了一个小脚本,
import-module C:\Modules\ImportM.psm1 然后我转到 .pssc
文件并将此脚本添加到 ScriptsToProcess
,但在我尝试与受限端点建立会话后出现以下错误。
语言模式设置为
LanguageMode = 'RestrictedLanguage'
使用 -ScriptsToProcess
参数,可用于导入自定义模块。
另见下文。
Get-Help New-PSSessionConfigurationFile -Parameter ScriptsToProcess
Get-Help New-PSSessionConfigurationFile -Parameter FunctionDefinitions
更新:
确定要使用的语言模式,
见 here
我正在尝试创建一个 PowerShell 端点约束,限制用户只能执行我创建的自定义模块中的功能。
我做的第一件事是 import-module mymodule.psm1
,它允许我 运行 我的模块在我的主机系统中正常运行。
然后下面的 PS 命令为端点创建配置文件,允许括号内的函数成为用户可以执行的唯一函数。
New-PSSessionConfigurationFile -VisibleFunctions('Get-Command','Get-Info', 'CreateAD-User','Generate-Html','Change-Logon') -LanguageMode ‘ConstrainedLanguage’ –SessionType ‘RestrictedRemoteServer’ –Path ‘c:\test\helpdesk.pssc’
然后我用
注册端点Register-PSSessionConfiguration –Name ‘HelpDesk’ -ShowSecurityDescriptorUI –Path ‘c:\test\helpdesk.pssc’
并选择了我希望允许的用户在 SecurityDescriptorUI
弹出后具有这些约束。一旦我登录到我设置约束的用户
Enter-PSSession -computername SRV1-AD -Credential $credential -ConfigurationName HelpDesk
这些是允许用户执行的允许的 cmdlet/功能。这些是允许远程连接到系统的默认必需 cmdlet。
如何让我的自定义模块成为端点允许用户执行的唯一功能?或如何将我的模块导入配置文件,以便在每次使用 HelpDesk 端点配置时执行。我知道在配置文件中有一行导入模块,但 Import-Module 实际上不是一个模块,一个模块的例子是 ActiveDirectory,如果我能够找到模块 import-module 是其中的一部分,我想我应该能够为此做一个快速而肮脏的工作。
更新
我为此找到的一个肮脏的解决方案是进入用户会话并禁用所有 cmdlets / 函数,除了我想要允许的那些,例如 import-module
& Get-Command
with import-module I可以手动导入我的自定义模块,我的功能将是唯一对用户可见的功能。但这不是一个完美的解决方案,因为这意味着我需要将我的模块下载到我希望它生效的每个系统中,并且它不再是一对多的解决方案。理想的解决方案是将我的模块存储在本地,进入与注册端点的会话并将我的模块导入到用户帐户中。
Enter-PSSession -computername SRV1-AD -Credential $credential -ConfigurationName HelpDesk
进一步更新
用户@prasoon-ka运行an-v 建议我使用 -ScriptsToProcess
& FunctionDefinitions
导入模块所以我使用了以下命令
New-PSSessionConfigurationFile -VisibleFunctions('Get-Command','Get-Info', 'CreateAD-User','Generate-Html','Change-Logon') -LanguageMode ‘ConstrainedLanguage’ –SessionType ‘RestrictedRemoteServer’ –Path ‘.\EndPoint.pssc’ -ScriptsToProcess C:\Users\Administrator\Desktop\Modules\ImportM.psm1
在配置文件中我也设置了我想使用的功能
# Functions defined in this session configuration
FunctionDefinitions = 'Get-Command','Get-Info', 'CreateAD-User','Generate-Html','Change-Logon'
当我尝试建立会话时,它会抛出以下错误
然后我想它可能不起作用,因为我们没有告诉命令导入任何东西只是指向模块文件,所以也许我需要创建一个导入模块的小脚本,然后将其添加到配置文件中。所以这正是我所做的 我创建了一个小脚本,
import-module C:\Modules\ImportM.psm1 然后我转到 .pssc
文件并将此脚本添加到 ScriptsToProcess
,但在我尝试与受限端点建立会话后出现以下错误。
语言模式设置为
LanguageMode = 'RestrictedLanguage'
使用 -ScriptsToProcess
参数,可用于导入自定义模块。
另见下文。
Get-Help New-PSSessionConfigurationFile -Parameter ScriptsToProcess
Get-Help New-PSSessionConfigurationFile -Parameter FunctionDefinitions
更新:
确定要使用的语言模式, 见 here