更新日期:2013年6月24日
适用于:Windows Server 2012 R2,Windows Server 2012
Windows Server 2012 R2 和 Windows Server 2012 中的 Windows PowerShell Web 访问采用了限制性安全模型。 用户必须明确获得访问权限,才能登录 Windows PowerShell Web 访问网关并使用基于网页的 Windows PowerShell 控制台。
配置授权规则与站点安全
安装 Windows PowerShell Web Access 并配置好网关后,用户可以在浏览器中打开登录页面,但在 Windows PowerShell Web Access 管理员明确授权用户之前,无法登录。 “Windows PowerShell Web 访问”访问控制通过下表中描述的 Windows PowerShell 命令串进行管理。 没有类似的图形界面用于添加或管理授权规则。 参见 Windows PowerShell Web Access Cmdlets。
管理员可以为 Windows PowerShell Web Access 定义 {0-n} 认证规则。 默认的证券是限制性的而非宽容性的;零认证规则意味着没有用户能访问任何东西。
Windows Server 2012 R2 中的 Add-PswaAuthorizationRule 和 Test-PswaAuthorizationRule 包含一个凭证参数,允许您从远程计算机或活跃的 Windows PowerShell Web Access 会话中添加和测试 Windows PowerShell Web Access 授权规则。 和其他带有凭证参数的 Windows PowerShell 命令小子一样,你可以指定一个 PSCredential 对象作为参数值。 要创建包含你想传递给远程计算机的凭证的 PSCredential 对象,请运行 Get-Credential cmdlet。
Windows PowerShell 的 Web Access 认证规则是 允许 规则。 每个规则都是用户、目标计算机以及指定目标计算机上特定 Windows PowerShell 会话配置 (也称为端点或 运行空间)之间允许连接的定义。 关于运行空间的解释,请参见“PowerShell运行空间的初步应用”
重要
用户只需一条规则为真即可获得访问权限。 如果用户在基于网页的控制台中获得一台计算机的访问权,无论是完全语言权限还是仅访问 Windows PowerShell 远程管理指令,用户可以登录(或跳转到)连接到第一台目标计算机的其他计算机。 配置Windows PowerShell Web Access最安全的方法是只允许用户访问受限会话配置,从而完成通常需要远程执行的特定任务。
Windows PowerShell Web Access Cmdlets 中引用的 cmdlet 允许创建一组访问规则,用于授权用户在 Windows PowerShell Web Access 网关上。 这些规则不同于目标计算机上的访问控制列表(ACL),并为网页访问提供了额外的安全层。 关于安全性的更多细节将在下文部分描述。
如果用户无法通过之前的任何安全层,浏览器窗口会收到通用的“拒绝访问”提示。 虽然安全细节会在网关服务器上记录,但终端用户不会被告知他们通过了多少安全层,或登录或认证失败发生在哪一层。
有关配置授权规则的更多信息,请参见本主题中的 配置授权规则 。
安全性
Windows PowerShell Web Access 安全模型在基于网页的控制台终端用户与目标计算机之间有四层。 Windows PowerShell Web Access 管理员可以通过 IIS 管理器控制台中的额外配置添加安全层。 有关在 IIS 管理控制台中保护网站的更多信息,请参见配置 Web Server Security (IIS7)。
有关IIS最佳实践及防止拒绝服务攻击的更多信息,请参见 《防止拒绝服务/拒绝服务攻击的最佳实践》。 管理员还可以购买并安装额外的零售认证软件。
下表描述了终端用户与目标计算机之间的四层安全。
| 级别 | 层 |
|---|---|
| 1 | IIS的Web服务器安全特性 |
| 2 | Windows PowerShell 基于表单的访问网关认证 |
| 3 | Windows PowerShell 网页访问授权规则 |
| 4 | 目标认证和授权规则 |
关于每一层的详细信息可见以下标题:
IIS Web 服务器安全特性
Windows PowerShell Web Access 用户必须始终提供用户名和密码,以便在网关上认证其账户。 不过,Windows PowerShell Web Access 管理员也可以选择开闭客户端证书认证,参见 安装并使用 Windows PowerShell Web 访问 以启用测试证书,以及后续如何配置真正的证书)。
可选的客户端证书功能要求终端用户除了用户名和密码外,还必须拥有有效的客户端证书,并且是Web服务器(IIS)配置的一部分。 当客户端证书层启用时,Windows PowerShell Web Access 登录页面会提示用户在评估其登录凭证前提供有效的证书。 客户端证书认证会自动检查客户端证书。 如果找不到有效的证书,Windows PowerShell Web Access 会通知用户,以便他们提供证书。 如果找到有效的客户端证书,Windows PowerShell Web Access 会打开登录页面,供用户输入用户名和密码。
这是IIS Web Server提供的额外安全设置的一个例子。 有关其他 IIS 安全功能的更多信息,请参见配置 Web Server 安全(IIS 7)。
Windows PowerShell 基于表单的网关认证
Windows PowerShell Web Access 登录页面需要一组凭据(用户名和密码),并为用户提供针对目标计算机的不同凭证选项。 如果用户不提供备用凭证,连接网关的主用户名和密码也会被用于连接目标计算机。
所需的凭据通过 Windows PowerShell Web Access 网关进行认证。 这些凭据必须是本地 Windows PowerShell Web Access 网关服务器上或 Active Directory 中的有效用户账户。
Windows PowerShell Web Access 授权规则
用户在网关认证后,Windows PowerShell Web Access 会检查授权规则,以验证用户是否拥有访问请求的目标计算机的权限。 成功授权后,用户的凭证会传递给目标计算机。
这些规则仅在用户被网关认证后,且在目标计算机上被认证之前进行评估。
目标认证和授权规则
Windows PowerShell Web Access 的最后一层安全是目标计算机自身的安全配置。 用户必须在目标计算机上配置适当的访问权限,同时也在 Windows PowerShell Web Access 授权规则中配置,才能运行通过 Windows PowerShell Web Access 影响目标计算机的 Windows PowerShell 网页控制台。
该层提供与用户在运行 Enter-PSSession 或 New-PSSession 指令串时,在 Windows PowerShell 内创建远程 Windows PowerShell 会话时评估连接尝试的安全性机制相同。
默认情况下,Windows PowerShell Web Access 在网关和目标计算机上都使用主用户名和密码进行身份验证。 基于网页的登录页面,在名为 “可选连接设置”的部分,用户可以选择为目标计算机提供不同的凭证(如果需要的话)。 如果用户不提供备用凭证,连接网关的主用户名和密码也会被用于连接目标计算机。
授权规则可用于允许用户访问特定的会话配置。 你可以为 Windows PowerShell Web Access 创建 受限的运行空间 或会话配置,并允许特定用户登录 Windows PowerShell Web Access 时只连接到特定的会话配置。 您可以使用访问控制列表(ACL)来确定哪些用户有访问特定端点的权限,并通过本节描述的授权规则进一步限制特定用户对该端点的访问。 有关受限运行空间的更多信息,请参见 创建受限运行空间。
配置授权规则
管理员通常希望Windows PowerShell Web Access用户使用与其环境中已定义的Windows远程管理授权规则相同的规则。 本节的第一个过程描述了如何在单一会话配置内添加安全授权规则,允许一个用户登录管理一台计算机。 第二个程序描述了如何移除不再需要的授权规则。
如果你计划使用自定义会话配置,允许特定用户仅在 Windows PowerShell Web Access 的受限运行空间内工作,请在添加指向这些会话的授权规则之前,先创建自定义会话配置。 你不能使用 Windows PowerShell Web Access cmdlet 来创建自定义会话配置。 有关创建自定义会话配置的更多信息,请参见 about_Session_Configuration_Files。
Windows PowerShell Web Access cmdlets 支持一个通配字符,星号( * )。 字符串中的万用字符不被支持;每个属性(用户、计算机或会话配置)使用一个星号。
注释
关于更多使用授权规则授予用户访问权限并帮助保护 Windows PowerShell Web Access 环境的方法,请参见本主题 中其他授权规则场景示例 。
添加限制性授权规则
使用提升的用户权限执行以下操作之一打开 Windows PowerShell 会话。
在 Windows 桌面上,右键单击任务栏上的 Windows PowerShell ,然后单击“ 以管理员身份运行”。
在Windows 开始 界面,右键点击 Windows PowerShell,然后点击 “以管理员身份运行”。
可选步骤 通过会话配置限制用户访问:
确认你想使用的会话配置是否已经存在于你的规则中。
如果尚未创建会话配置,请使用 about_Session_Configuration_Files创建会话配置的说明。
该授权规则允许特定用户访问其通常可访问的网络中一台计算机,并访问针对其典型脚本和命令包需求的特定会话配置。 键入以下内容,然后按 Enter。
Add-PswaAuthorizationRule -UserName <domain\user | computer\user> ` -ComputerName <computer_name> -ConfigurationName <session_configuration_name>- 在以下示例中,Contoso域中名为JSmith的用户被授予管理计算机Contoso_214的权限,并使用名为NewAdminsOnly的会话配置。
Add-PswaAuthorizationRule -UserName 'Contoso\JSmith' ` -ComputerName Contoso_214 -ConfigurationName NewAdminsOnly通过运行 Get-PswaAuthorizationRule 命令子
Test-PswaAuthorizationRule -UserName <domain\user | computer\user> -ComputerName** <computer_name>,或 验证该规则是否已被创建。 例如,Test-PswaAuthorizationRule -UserName Contoso\\JSmith -ComputerName Contoso_214。
移除授权规则
如果 Windows PowerShell 会话尚未打开,请参见第一步, 在本节添加限制性授权规则 。
输入以下内容,然后按 回车键, 其中规则ID 代表你想移除规则的唯一ID号。
Remove-PswaAuthorizationRule -ID <rule ID>或者,如果你不知道ID号,但知道你想删除规则的友好名称,你可以获取规则名称,并将其管道连接到
Remove-PswaAuthorizationRule命令包以移除该规则,如下示例所示:Get-PswaAuthorizationRule ` -RuleName <rule-name> | Remove-PswaAuthorizationRule
注释
系统不会提示您确认是否要删除指定的授权规则;按 回车键时规则会被删除。 确保在运行 Remove-PswaAuthorizationRule 命令子DLT前先移除授权规则。
其他授权规则场景示例
每个 Windows PowerShell 会话都使用会话配置;如果会话未指定该配置,Windows PowerShell 使用默认的内置 Windows PowerShell 会话配置,称为 Microsoft.PowerShell。 默认会话配置包含计算机上所有可用的 cmdlet。 管理员可以通过定义带有限制运行空间(即终端用户可执行的有限指令和任务范围)的会话配置来限制对所有计算机的访问。 获得一台计算机的访问权限,可以是完全语言权限或仅使用 Windows PowerShell 远程管理 cmdlet,可以连接到连接到第一台计算机的其他计算机。 定义受限运行空间可以防止用户通过允许的 Windows PowerShell 运行空间访问其他计算机,从而提升 Windows PowerShell Web Access 环境的安全性。 会话配置可以通过组策略分发给管理员希望通过 Windows PowerShell Web Access 访问的所有计算机。 有关会话配置的详细信息,请参阅 about_Session_Configurations。 以下是一些此类情景的例子。
管理员创建一个名为 PswaEndpoint 的端点,运行空间受限。 然后,管理员创建规则,
*,*,PswaEndpoint并将该终端分发到其他计算机。 该规则允许所有用户访问所有端点为 PswaEndpoint 的计算机。 如果这是规则集中唯一定义的授权规则,没有该端点的计算机将无法访问。管理员创建了一个运行空间受限的端点,名为 PswaEndpoint,并希望限制特定用户的访问。 管理员创建了一个名为 Level1Support 的用户组,并定义以下规则: Level1Support,*,PswaEndpoint。 该规则允许 Level1Support 组内的任何用户访问所有具有 PswaEndpoint 配置的计算机。 同样,访问也可以限制在特定一组计算机上。
有些管理员会给某些用户更多的访问权限。 例如,管理员创建两个用户组: 管理员 组和 基础支持组。 管理员还创建一个带有限制运行空间的端点,称为 PswaEndpoint,并定义了以下两条规则: Admins,*,* 和 BasicSupport,*,PswaEndpoint。 第一条规则允许 管理员 组中的所有用户访问所有计算机,第二条规则则仅允许 BasicSupport 组中的所有用户访问带有 PswaEndpoint 的计算机。
管理员搭建了一个私有测试环境,并希望允许所有授权的网络用户访问他们通常能访问的所有计算机,以及他们通常能访问的所有会话配置。 由于这是一个私有测试环境,管理员创建了一个不安全的授权规则。 - 管理员运行 cmdlet
Add-PswaAuthorizationRule * * *,该命令使用通配字符 * 表示所有用户、所有计算机和所有配置。 - 该规则等价于以下内容:Add-PswaAuthorizationRule -UserName * -ComputerName * -ConfigurationName *。注释
该规则不建议在安全环境中使用,且绕过了 Windows PowerShell Web Access 提供的授权规则层的安全。
管理员必须允许用户连接到包含工作组和域的目标计算机,其中工作组计算机偶尔用于连接域中的目标计算机,而域中的计算机有时也用于连接到工作组中的目标计算机。 管理员在工作组中拥有一台网关服务器 PswaServer;目标计算机 srv1.contoso.com 位于域内。 用户 Chris 是工作组网关服务器和目标计算机上的授权本地用户。 他在工作组服务器上的用户名是 chrisLocal;他在目标电脑上的用户名是 Contoso\Chris。 为了授权Chris访问 srv1.contoso.com,管理员添加了以下规则。
Add-PswaAuthorizationRule -userName PswaServer\chrisLocal `
-computerName srv1.contoso.com -configurationName Microsoft.PowerShell
前面的规则示例是在网关服务器上认证Chris,然后授权他访问 srv1。 在登录页面,Chris必须在 可选连接设置 区域(contoso\chris)中提供第二组凭证。 网关服务器会利用额外的凭据集在目标计算机上对他进行身份验证, srv1.contoso.com。
在前述情景中,Windows PowerShell Web Access 只有在以下条件成功且至少允许一个授权规则后,才会成功连接到目标计算机。
在工作组网关服务器上通过添加 server_name\user_name 格式的用户名来进行认证
在目标计算机上通过登录页面的 可选连接设置 区域提供替代凭证进行身份验证
注释
如果网关计算机和目标计算机位于不同的工作组或域中,必须在两个工作组计算机、两个域之间,或工作组与域之间建立信任关系。 这种关系无法通过使用 Windows PowerShell Web Access 授权规则 cmdlet 进行配置。 授权规则并不定义计算机之间的信任关系;它们只能授权用户连接到特定的目标计算机和会话配置。 关于如何配置不同域间的信任关系的更多信息,请参见 创建域和森林信托。 有关如何将工作组计算机添加到受信任主机列表的更多信息,请参见 使用服务器管理器进行远程管理。
为多个站点使用一套授权规则
授权规则存储在XML文件中。 默认情况下,XML 文件的路径名称为 $env:windir\Web\PowershellWebAccess\data\AuthorizationRules.xml。
授权规则XML文件的路径存储在 powwa.config 文件中,该文件位于 $env:windir\Web\PowershellWebAccess\data。 管理员可以灵活地根据偏好或需求更改 powwa.config 默认路径的引用。 允许管理员更改文件位置,使多个 Windows PowerShell Web 访问网关在需要此类配置时使用相同的授权规则。
会话管理
默认情况下,Windows PowerShell Web Access 限制用户一次最多访问三个会话。 你可以在 IIS 管理器中编辑网页应用的 web.config 文件,以支持不同用户的会话数量。
web.config 文件的路径为 $env:windir\Web\PowerShellWebAccess\wwwroot\Web.config。
默认情况下,IIS Web 服务器配置为在修改任何设置时重启应用池。 例如,如果对 web.config 文件进行了更改,应用池会被重启。 >由于 Windows PowerShell Web Access 使用内存会话状态, >登录 Windows PowerShell Web Access 会话的用户在应用池重启时会失去会话。
在登录页面设置默认参数
如果您的 Windows PowerShell Web Access 网关运行在 Windows Server 2012 R2 上,您可以配置 Windows PowerShell Web Access 登录页面显示的设置默认值。 你可以在前一段描述的 web.config 文件中配置数值。 登录页面设置的默认值可在 web.config 文件的 appSettings 部分找到;以下是 appSettings 部分的一个示例。 许多这些设置的有效值与 Windows PowerShell 中 New-PSSession 命令中相应参数的值相同。
例如, defaultApplicationName 如下一段代码块所示,密钥是目标计算机上 $PSSessionApplicationName 偏好变量的值。
<appSettings>
<add key="maxSessionsAllowedPerUser" value="3"/>
<add key="defaultPortNumber" value="5985"/>
<add key="defaultSSLPortNumber" value="5986"/>
<add key="defaultApplicationName" value="WSMAN"/>
<add key="defaultUseSslSelection" value="0"/>
<add key="defaultAuthenticationType" value="0"/>
<add key="defaultAllowRedirection" value="0"/>
<add key="defaultConfigurationName" value="Microsoft.PowerShell"/>
</appSettings>
暂停和意外断线
Windows PowerShell Web Access 会话超时。在运行于Windows Server 2012上的Windows PowerShell Web Access中,登录用户在会话未活动15分钟后会显示超时通知。 如果用户在超时消息显示后五分钟内未响应,会话结束,用户被登出。你可以在 IIS Manager 的网站设置中更改会话的超时时间。
在运行于Windows Server 2012 R2上的Windows PowerShell Web Access中,会话默认在20分钟不活跃后超时。 如果用户因网络错误或其他非计划性关闭或失败而被断开基于网页控制台的会话,而非他们自己关闭了会话,Windows PowerShell Web Access 会话会继续运行,连接到目标计算机,直到客户端超时期结束。 会话在默认的20分钟后或网关管理员指定的超时时间后(以较短者为准)断开连接。
如果网关服务器运行的是 Windows Server 2012 R2,Windows PowerShell Web Access 允许用户在后续时间重新连接已保存的会话,但当网络错误、非计划关闭或其他故障导致会话断开连接时,用户在网关管理员指定的超时期结束之前,无法查看或重新连接已保存的会话。