更新日期:2013年6月24日
適用於:Windows Server 2012 R2、Windows Server 2012
Windows Server 2012 R2 與 Windows Server 2012 中的 Windows PowerShell 網頁存取採用限制性安全模型。 使用者必須明確獲得存取權限,才能登入 Windows PowerShell 網路存取閘道並使用基於網頁的 Windows PowerShell 主控台。
授權規則與站點安全性配置
安裝 Windows PowerShell Web Access 並設定閘道器後,使用者可以在瀏覽器中開啟登入頁面,但在 Windows PowerShell 網頁存取管理員明確授權使用者之前,無法登入。 「Windows PowerShell Web Access」的存取控制是透過以下表格中描述的 Windows PowerShell 指令檔集合來管理的。 目前沒有類似的 GUI 來新增或管理授權規則。 請參閱 Windows PowerShell Web Access 指令。
管理員可以為 Windows PowerShell Web Access 定義 {0-n} 認證規則。 預設的安全性是限制性而非允許性;零驗證規則意味著沒有任何使用者能存取任何東西。
Windows Server 2012 R2 中的 Add-PswaAuthorizationRule 與 Test-PswaAuthorizationRule 包含一個憑證參數,允許你從遠端電腦或活躍的 Windows PowerShell 網頁存取會話中新增並測試 Windows PowerShell Web Access 授權規則。 和其他有憑證參數的 Windows PowerShell 指令小程式一樣,你可以指定 PSCredential 物件作為參數值。 若要建立包含你想傳遞給遠端電腦的憑證的 PSCredential 物件,請執行 Get-Credential 指令。
Windows PowerShell 的 Web Access 認證規則是 允許 規則。 每條規則都是使用者、目標電腦與特定 Windows PowerShell 會話設定 (亦稱為端點或 執行空間)之間允許連線的定義。 關於 跑道空間 的說明,請參見「 PowerShell 跑道空間的初步使用
這很重要
使用者只需一條規則為真即可取得存取權限。 如果使用者從網頁主控台獲得一台電腦的存取權,無論是具備完整語言權限或僅存取 Windows PowerShell 遠端管理指令碼,使用者即可登入(或跳轉)到連接第一台目標電腦的其他電腦。 設定 Windows PowerShell Web Access 最安全的方法是只允許使用者存取受限的會話設定,讓他們能完成通常需要遠端執行的特定任務。
Windows PowerShell 網頁存取 Cmdlets 中引用的 cmdlets 允許建立一組存取規則,用以授權使用者在 Windows PowerShell Web Access 閘道上使用。 這些規則與目的地電腦上的存取控制清單(ACL)不同,並為網頁存取提供了額外的安全層。 關於安全性的更多細節,請參閱下一節。
如果使用者無法通過前述任何安全層,瀏覽器視窗會收到通用的「拒絕存取」訊息。 雖然安全細節會記錄在閘道伺服器上,但終端使用者不會看到他們通過了多少安全層,或是登入或驗證失敗發生在哪一層的資訊。
欲了解更多關於設定授權規則的資訊,請參閱本主題中的 「配置授權規則 」。
安全性
Windows PowerShell 網頁存取安全模型在網頁主控台的終端使用者與目標電腦之間有四層。 Windows PowerShell 網頁存取管理員可透過 IIS Manager 主控台的額外設定來新增安全層。 欲了解更多關於在 IIS 管理主控台中保護網站的資訊,請參閱 「設定網頁伺服器安全(IIS7)」。
欲了解更多關於 IIS 最佳實務及防止阻斷服務攻擊的資訊,請參閱 防止 DoS/阻斷服務攻擊的最佳實務。 管理員也可以購買並安裝額外的零售認證軟體。
下表描述了終端使用者與目標電腦之間的四層安全措施。
| Level | 層 |
|---|---|
| 1 | IIS 網頁伺服器安全功能 |
| 2 | Windows PowerShell 基於 Web Access 表單的閘道認證 |
| 3 | Windows PowerShell 網頁存取授權規則 |
| 4 | 目標認證與授權規則 |
關於各層的詳細資訊可見以下標題:
IIS 網頁伺服器安全特性
Windows PowerShell 網頁存取使用者必須始終提供使用者名稱和密碼,才能在閘道器上驗證其帳號。 不過,Windows PowerShell 網頁存取管理員也可以選擇開啟或關閉用戶端憑證認證,詳見 安裝並使用 Windows PowerShell 網頁存取 以啟用測試憑證,以及後續如何設定真正的憑證)。
可選的用戶端憑證功能要求終端使用者擁有有效的用戶端憑證,此外還有使用者名稱和密碼,且是網頁伺服器(IIS)設定的一部分。 當用戶端憑證層啟用時,Windows PowerShell 網頁存取頁面會提示使用者提供有效憑證,然後才評估其登入憑證。 用戶端憑證認證會自動檢查用戶端憑證。 若未找到有效憑證,Windows PowerShell Web Access 會通知使用者,讓他們能提供憑證。 若找到有效的用戶端憑證,Windows PowerShell Web Access 會開啟登入頁面,讓使用者提供使用者名稱與密碼。
這是 IIS Web Server 提供的額外安全設定範例之一。 欲了解更多其他 IIS 安全功能,請參閱 「配置網頁伺服器安全(IIS 7)」。
Windows PowerShell Web Access 基於表單的閘道認證
Windows PowerShell 網頁存取登入頁面需要一組憑證(使用者名稱與密碼),並提供使用者為目標電腦提供不同憑證的選項。 若使用者未提供替代憑證,則連接閘道器的主要使用者名稱與密碼也會同時用於連接目標電腦。
所需的憑證會在 Windows PowerShell 網頁存取閘道上驗證。 這些憑證必須是本地 Windows PowerShell Web Access 閘道伺服器上的有效使用者帳號,或是在 Active Directory 中。
Windows PowerShell Web Access 授權規則
使用者在閘道認證後,Windows PowerShell Web Access 會檢查授權規則,以確認使用者是否擁有存取所請求的目標電腦。 成功授權後,使用者的憑證會被傳送給目標電腦。
這些規則僅在使用者被閘道認證後,且在目標電腦上被認證之前進行評估。
目標認證與授權規則
Windows PowerShell Web Access 的最後一層安全是目標電腦自身的安全設定。 使用者必須在目標電腦上設定適當的存取權限,並且在 Windows PowerShell 網頁存取授權規則中設定,才能透過 Windows PowerShell 網頁存取來執行 Windows PowerShell 網頁版主控台,影響目標電腦。
此層提供與使用者若嘗試從 Windows PowerShell 內建立遠端 Windows PowerShell 會話,透過執行 Enter-PSSession 或 New-PSSession 指令鏈時,評估連線嘗試的安全性機制相同。
預設情況下,Windows PowerShell Web Access 在閘道與目標電腦上皆使用主要使用者名稱與密碼進行認證。 網頁登入頁面在名為 「可選連線設定」的區塊中,提供使用者提供針對目標電腦的不同憑證選項(若有需要)。 若使用者未提供替代憑證,則連接閘道器的主要使用者名稱與密碼也會同時用於連接目標電腦。
授權規則可用來允許使用者存取特定的會話設定。 你可以為 Windows PowerShell Web Access 建立 受限制的執行空間 或會話設定,並允許特定使用者在登入 Windows PowerShell Web Access 時,僅連接特定的會話設定。 您可以使用存取控制清單(ACL)來判斷哪些使用者能存取特定端點,並透過本節所述的授權規則進一步限制特定使用者對該端點的存取。 關於受限跑道空間的更多資訊,請參見 「建立受限跑道空間」。
授權規則的配置
管理員通常希望 Windows PowerShell Web Access 使用者使用與其環境中已定義的 Windows PowerShell 遠端管理授權規則相同。 本節的第一步驟說明如何新增安全授權規則,允許單一使用者存取權限,登入管理一台電腦,且可在單一會話設定中完成。 第二個程序描述如何移除不再需要的授權規則。
如果你打算使用自訂會話設定,讓特定使用者只能在 Windows PowerShell Web Access 的受限執行空間內工作,請先建立自訂會話設定,再加授權規則來參考它們。 你不能使用 Windows PowerShell Web Access 指令碼來建立自訂會話設定。 欲了解更多關於建立自訂會話設定的資訊,請參見 about_Session_Configuration_Files。
Windows PowerShell Web Access cmdlets 支援一個萬用字元,星號( *)。 字串內不支援萬用字元;每個屬性(使用者、電腦或會話設定)使用單一星號。
備註
關於更多使用授權規則授權使用者存取權限並協助保護 Windows PowerShell 網頁存取環境的方法,請參閱本主題 中其他授權規則情境範例 。
加入限制性授權規則
執行下列其中一個動作,以高階使用者權限開啟 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 cmdlet
Test-PswaAuthorizationRule -UserName <domain\user | computer\user> -ComputerName** <computer_name>或 確認該規則是否已建立。 例如:Test-PswaAuthorizationRule -UserName Contoso\\JSmith -ComputerName Contoso_214。
移除授權規則
如果 Windows PowerShell 會話尚未開啟,請參考步驟 第一步, 在本節新增限制性授權規則 。
輸入以下內容,然後按下 Enter, 其中規則 ID 代表你想移除的規則的唯一 ID 號碼。
Remove-PswaAuthorizationRule -ID <rule ID>或者,如果你不知道 ID 編號,但知道想移除規則的友誼名稱,你可以取得規則名稱,然後傳送到
Remove-PswaAuthorizationRulecmdlet 以移除該規則,如下範例所示:Get-PswaAuthorizationRule ` -RuleName <rule-name> | Remove-PswaAuthorizationRule
備註
系統不會提示你確認是否要刪除指定的授權規則;當你按下 Enter 鍵時,該規則會被刪除。 執行 cmdlet 前,務必確定你想移除授權規則 Remove-PswaAuthorizationRule 。
其他授權規則情境範例
每個 Windows PowerShell 會話都會使用會話設定;若未指定會話,Windows PowerShell 則使用預設的內建 Windows PowerShell 會話設定,稱為 Microsoft.PowerShell。 預設會話設定包含電腦上所有可用的指令檔。 管理員可以透過定義一個有限制跑道空間(有限的指令檔和任務範圍,終端使用者可執行的任務範圍)來限制對所有電腦的存取。 獲得完整語言存取權或僅有 Windows PowerShell 遠端管理指令小程式的使用者,可以連接到連接第一台電腦的其他電腦。 定義受限跑道空間可防止使用者從允許的 Windows PowerShell 跑道空間存取其他電腦,並提升 Windows PowerShell 網頁存取環境的安全性。 會話設定可透過群組原則分發給管理員希望透過 Windows PowerShell 網頁存取存取的所有電腦。 如需工作階段組態的詳細資訊,請參閱 about_Session_Configurations。 以下是一些此類情境的例子。
管理員建立一個名為 PswaEndpoint 的端點,並擁有有限的跑道空間。 接著,管理員建立規則,
*,*,PswaEndpoint並將端點分發給其他電腦。 該規則允許所有使用者存取所有端點為 PswaEndpoint 的電腦。 如果這是規則集中唯一定義的授權規則,沒有該端點的電腦將無法存取。管理員建立了一個有限制跑道空間的端點,叫做 PswaEndpoint,並希望限制特定使用者的存取權限。 管理員建立一個名為 Level1Support 的使用者群組,並定義以下規則: Level1Support,*,PswaEndpoint。 該規則允許 Level1Support 群組中的任何使用者存取所有具有 PswaEndpoint 設定的電腦。 同樣地,存取權限也可能限制在特定一組電腦上。
有些管理員會給特定使用者比其他人更多的存取權限。 例如,管理員建立兩個使用者群組: Admins 和 BasicSupport。 管理員也會建立一個具有限制執行空間的端點,稱為 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 網頁存取只有在以下條件成功且至少一項授權規則允許後,才會成功建立與目標電腦的連線。
在工作群組閘道伺服器上透過加入授權規則user_name格式的使用者名稱來進行認證server_name\
在目標電腦上透過登入頁面的 可選連接設定 區提供的替代憑證進行認證
備註
若閘道與目標電腦位於不同的工作群組或域,必須在兩個工作群組電腦、兩個域,或工作群組與域之間建立信任關係。 此關係無法透過使用 Windows PowerShell Web Access 授權規則指令碼來設定。 授權規則並不定義電腦間的信任關係;它們只能授權使用者連接到特定的目標電腦及會話設定。 欲了解更多如何配置不同網域間的信任關係,請參閱 建立網域與森林信託。 欲了解更多如何將工作群組電腦加入受信任主機清單的資訊,請參閱 使用伺服器管理員的遠端管理。
使用單一授權規則管理多個站點
授權規則會儲存在 XML 檔案中。 預設情況下,XML 檔案的路徑名稱為 $env:windir\Web\PowershellWebAccess\data\AuthorizationRules.xml。
授權規則 XML 檔案的路徑儲存在 powwa.config 檔案中,該檔案位於 $env:windir\Web\PowershellWebAccess\data。 管理員可靈活地將 powwa.config 的預設路徑參考以符合偏好或需求。 允許管理員更改檔案位置,讓多個 Windows PowerShell 網頁存取閘道器使用相同的授權規則,若需要此類設定。
會話管理
預設情況下,Windows PowerShell Web Access 限制使用者同時使用三個會話。 你可以在 IIS Manager 中編輯網頁應用程式的 web.config 檔案,以支援每位使用者不同的會話數量。
web.config 檔案的路徑為 $env:windir\Web\PowerShellWebAccess\wwwroot\Web.config。
預設情況下,IIS 網頁伺服器會設定若有任何設定被編輯,會重新啟動應用程式池。 例如,若 web.config 檔案有變更,應用程式池會重新啟動。 >由於 Windows PowerShell Web Access 使用記憶體內會話狀態, >登入 Windows PowerShell Web Access 會話的使用者在應用程式池重新啟動時會失去會話。
在登入頁面設定預設參數
如果您的 Windows PowerShell 網頁存取閘道是運行在 Windows Server 2012 R2 上,您可以設定預設值,這些設定會顯示在 Windows PowerShell 網頁存取登入頁面上。 你可以在前一段描述的 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 網頁存取會逾時。在運行於 Windows Server 2012 的 Windows PowerShell Web Access 中,登入使用者在 15 分鐘不活躍時會顯示逾時訊息。 若使用者在逾時訊息顯示後五分鐘內未回應,會話結束,使用者將登出。你可以在 IIS Manager 的網站設定中更改會話的逾時時間。
在運行於 Windows Server 2012 R2 的 Windows PowerShell Web Access 中,會話預設會在 20 分鐘不活動後自動逾時。 如果使用者因網路錯誤或其他非預期關閉或失敗而被網頁主控台斷開連線,而非因為他們自己關閉了會話,Windows PowerShell 網頁存取會話會繼續運行,並連接到目標電腦,直到用戶端逾時期結束。 會話會在預設的 20 分鐘後或閘道管理員指定的逾時時間後(以較短者為準)斷線。
若閘道伺服器運行 Windows Server 2012 R2,Windows PowerShell Web Access 允許使用者稍後重新連接已儲存的會話,但當網路錯誤、意外關機或其他故障導致會話中斷時,使用者在閘道管理員指定的逾時期內無法查看或重新連接已儲存的會話。