使用 Azure Stack Hub 中具有特殊權限的端點

作為 Azure Stack Hub 操作員,您應該在大部分的日常管理工作使用系統管理員入口網站、PowerShell 或 Azure Resource Manager API。 不過,針對較非一般的作業,您必須使用「具有特殊權限的端點」(PEP)。 PEP 是預先設定的遠端 PowerShell 主控台,能提供恰到好處的功能來協助您執行必要的工作。 此端點使用 PowerShell JEA (Just Enough Administration) 來只公開一組有限的 Cmdlet。 若要存取 PEP 並叫用一組有限的 Cmdlet,可使用低權限的帳戶。 無須系統管理員帳戶。 為了增加安全性,不允許使用指令碼。

您可以使用 PEP 來執行下列工作:

  • 低階工作,例如收集診斷記錄
  • 整合式系統的許多部署後資料中心整合工作,例如在部署後新增「網域名稱系統」(DNS) 轉寄站、設定 Microsoft Graph 整合、「Active Directory 同盟服務」(AD FS) 整合、憑證輪用等等。
  • 與支援人員共同合作,以取得整合系統深入疑難排解所需的暫時和高階存取權。

PEP 會記錄您在 PowerShell 工作階段中執行的每個動作 (和其對應的輸出)。 這會提供完全透明化和完整稽核的作業。 您可以保留這些記錄檔以供日後稽核。

注意

在「Azure Stack 開發套件」(ASDK) 中,您可以在開發套件主機上,直接從 PowerShell 工作階段執行 PEP 中的一些可用命令。 不過,您可能會想要使用 PEP 來測試一些作業 (例如記錄收集),因為這是在整合式系統環境中執行特定作業的唯一可用方法。

注意

您也可以使用操作員存取工作站 (OAW),存取具有特殊權限的端點 (PEP)、適用於支援案例的管理員入口網站,以及 Azure Stack Hub GitHub 工具。 如需詳細資訊,請參閱 Azure Stack Hub 操作員存取工作站

存取具有特殊權限的端點

您可在裝載 PEP 的虛擬機器 (VM) 上,透過遠端 PowerShell 工作階段來存取 PEP。 在 ASDK 中,此 VM 名為 AzS-ERCS01。 如果您使用整合式系統,則會有三個 PEP 執行個體,每個都在不同主機上的 VM 內執行 (Prefix-ERCS01、Prefix-ERCS02 或 Prefix-ERCS03) 以提供復原能力。

在開始針對整合式系統進行此程序之前,請確定您可以透過 IP 位址或 DNS 來存取 PEP。 在初始部署 Azure Stack Hub 之後,您只能透過 IP 位址來存取 PEP,因為尚未設定 DNS 整合。 您的 OEM 硬體廠商會提供名為 AzureStackStampDeploymentInfo 的 JSON 檔案,其中包含 PEP IP 位址。

您也可以在 Azure Stack Hub 系統管理員入口網站中找到 IP 位址。 開啟入口網站,例如 https://adminportal.local.azurestack.external。 選取 [區域管理]>[屬性]。

當您執行具特殊權限的端點時,您必須將目前的文化特性設定設為 en-US,否則,Test-AzureStack 或 Get-AzureStackLog 之類的 Cmdlet 將無法如預期般運作。

注意

為了確保安全性,建議您只從硬體生命週期主機以外的主機上執行的強化 VM 連線至 PEP,或者從專用和安全的電腦 (例如特殊權限存取工作站) 來連線到 PEP。 請不要修改硬體生命週期主機的原始組態 (包括安裝新軟體),也不要用來連線至 PEP。

  1. 建立信任關係。

    • 在整合的系統中,從提升權限的 Windows PowerShell 工作階段執行下列命令,將 PEP 新增為在硬體生命週期主機或特殊權限存取工作站上執行的強化 VM 的受信任主機。

      Set-Item WSMan:\localhost\Client\TrustedHosts -Value '<IP Address of Privileged Endpoint>' -Concatenate
      
    • 如果您是執行 ASDK,請登入開發套件主機。

  2. 在硬體生命週期主機或特殊權限工作站中執行的強化 VM 上,開啟 Windows PowerShell 工作階段。 執行下列命令,以在裝載 PEP 的 VM 上建立遠端工作階段:

    • 在整合系統上:

      $cred = Get-Credential
      
      $pep = New-PSSession -ComputerName <IP_address_of_ERCS> -ConfigurationName PrivilegedEndpoint -Credential $cred -SessionOption (New-PSSessionOption -Culture en-US -UICulture en-US)
      Enter-PSSession $pep
      

      ComputerName 參數可以是其中一部裝載 PEP 之 VM 的 IP 位址或 DNS 名稱。

      注意

      Azure Stack Hub 不會在驗證 PEP 認證時進行遠端呼叫。 其會仰賴本機儲存的 RSA 公開金鑰來執行這項操作。

    • 如果您是執行 ASDK:

      $cred = Get-Credential
      
      $pep = New-PSSession -ComputerName azs-ercs01 -ConfigurationName PrivilegedEndpoint -Credential $cred -SessionOption (New-PSSessionOption -Culture en-US -UICulture en-US)
      Enter-PSSession $pep
      

    出現輸入提示時,使用下列認證:

    • 使用者名稱:指定 CloudAdmin 帳戶,格式為 <Azure Stack Hub 網域>\cloudadmin。 (若為 ASDK,使用者名稱為 azurestack\cloudadmin)
    • 密碼:輸入與 AzureStackAdmin 網域系統管理員帳戶安裝期間所提供的相同密碼。

    注意

    如果您無法連線至 ERCS 端點,請使用另一個 ERCS VM IP 位址重試步驟一和步驟二。

    警告

    根據預設,只會使用一個 CloudAdmin 帳戶設定 Azure Stack Hub 戳記。 如果帳戶憑證遺失、遭盜用或鎖定,則沒有任何復原選項。 您將無法存取具特殊權限的端點和其他資源

    強烈建議您建立其他 CloudAdmin 帳戶,以避免自費重新部署戳記。 請務必根據您公司的指導方針記錄這些認證。

  3. 連線之後,視環境而定,提示會變更為 [IP 位址或 ERCS VM 名稱]: PS> 或變更為 [azs-ercs01]: PS>。 從這裡執行 Get-Command 可檢視可用的 Cmdlet 清單。

    您可以在 Azure Stack Hub 特殊權限端點參考中找到 Cmdlet 的參考

    這些 Cmdlet 有許多僅供整合系統環境 (例如與資料中心整合相關的 cmdlet) 使用。 在 ASDK 中,下列 Cmdlet 已經過驗證:

    • Clear-Host
    • Close-PrivilegedEndpoint
    • Exit-PSSession
    • Get-AzureStackLog
    • Get-AzureStackStampInformation
    • Get-Command
    • Get-FormatData
    • Get-Help
    • Get-ThirdPartyNotices
    • Measure-Object
    • New-CloudAdminUser
    • Out-Default
    • Remove-CloudAdminUser
    • Select-Object
    • Set-CloudAdminUserPassword
    • Test-AzureStack
    • Stop-AzureStack
    • Get-ClusterLog

如何使用具特殊權限的端點

如以上所述,PEP 是 PowerShell JEA 端點。 雖然 JEA 端點提供強大的安全性階層,但也縮減了一些 PowerShell 功能,例如指令碼處理或 TAB 鍵自動完成功能。 如果您嘗試任何一種指令碼作業,作業就會失敗,並出現錯誤 ScriptsNotAllowed。 此錯誤是預期行為。

例如,若要取得特定 Cmdlet 的參數清單,請執行下列命令:

    Get-Command <cmdlet_name> -Syntax

或者,您也可以使用 Import-PSSession Cmdlet,將所有 PEP Cmdlet 匯入到本機電腦上的目前工作階段中。 如此即可在本機電腦上使用 PEP 的 Cmdlet 和函式,並搭配 TAB 鍵自動完成功能,且更廣泛來說,還包括指令碼處理。 您也可以執行 Get-help 模組以檢閱 Cmdlet 指示。

若要在本機電腦上匯入 PEP 工作階段,請執行下列步驟:

  1. 建立信任關係。

    • 在整合的系統中,從提升權限的 Windows PowerShell 工作階段執行下列命令,將 PEP 新增為在硬體生命週期主機或特殊權限存取工作站上執行的強化 VM 的受信任主機。

      winrm s winrm/config/client '@{TrustedHosts="<IP Address of Privileged Endpoint>"}'
      
    • 如果您是執行 ASDK,請登入開發套件主機。

  2. 在硬體生命週期主機或特殊權限工作站中執行的強化 VM 上,開啟 Windows PowerShell 工作階段。 執行下列命令,以在裝載 PEP 的虛擬機器上建立遠端工作階段:

    • 在整合系統上:

      $cred = Get-Credential
      
      $session = New-PSSession -ComputerName <IP_address_of_ERCS> `
         -ConfigurationName PrivilegedEndpoint -Credential $cred `
         -SessionOption (New-PSSessionOption -Culture en-US -UICulture en-US)
      

      ComputerName 參數可以是其中一部裝載 PEP 之 VM 的 IP 位址或 DNS 名稱。

    • 如果您是執行 ASDK:

      $cred = Get-Credential
      
      $session = New-PSSession -ComputerName azs-ercs01 `
         -ConfigurationName PrivilegedEndpoint -Credential $cred `
         -SessionOption (New-PSSessionOption -Culture en-US -UICulture en-US)
      

    出現輸入提示時,使用下列認證:

    • 使用者名稱:指定 CloudAdmin 帳戶,格式為 <Azure Stack Hub 網域>\cloudadmin。 (若為 ASDK,使用者名稱是 azurestack\cloudadmin。)

    • 密碼:輸入與 AzureStackAdmin 網域系統管理員帳戶安裝期間所提供的相同密碼。

  3. 將 PEP 工作階段匯入到本機電腦:

    Import-PSSession $session
    
  4. 現在,您可以在本機 PowerShell 工作階段上,搭配 PEP 的所有函式和 Cmdlet 如常使用 TAB 鍵自動完成功能和進行指令碼處理,而無須降低 Azure Stack Hub 的安全性狀態。 盡情享受!

關閉具有特殊權限的端點工作階段

如先前所述,PEP 會記錄您在 PowerShell 工作階段中執行的每個動作 (和其對應的輸出)。 您必須使用 Close-PrivilegedEndpoint Cmdlet 來關閉工作階段。 此 Cmdlet 會正確關閉端點,並將記錄檔傳送至外部檔案共用作為保留。

若要關閉端點工作階段:

  1. 建立 PEP 可存取的外部檔案共用。 在開發套件環境中,您只能在開發套件主機上建立檔案共用。

  2. 執行下列 Cmdlet:

    Close-PrivilegedEndpoint -TranscriptsPathDestination "\\fileshareIP\SharedFolder" -Credential Get-Credential
    

    此 Cmdlet 會使用下表中的參數:

    參數 描述 類型 必要
    TranscriptsPathDestination 定義為 "fileshareIP\sharefoldername" 的外部檔案共用路徑 String
    認證 存取檔案共用的認證 SecureString

文字記錄記錄檔在成功傳輸至檔案共用之後,會自動從 PEP 中刪除。

注意

如果您使用 Exit-PSSessionExit Cmdlet 來關閉 PEP 工作階段,或您直接關閉 PowerShell 主控台,該文字記錄記錄就不會傳輸至檔案共用。 它們會存留在 PEP 中。 下次您執行 Close-PrivilegedEndpoint 並包含檔案共用時,也將會傳送上一個工作階段的文字記錄記錄。 請勿使用 Exit-PSSessionExit 關閉 PEP 工作階段:改為使用 Close-PrivilegedEndpoint

配合支援案例將特殊權限端點解除鎖定

在支援案例的情境下,Microsoft 支援工程師可能需要提高特殊權限端點 PowerShell 工作階段的權限,才能存取 Azure Stack Hub 基礎結構的內部。 此流程有些非正式的稱呼,像是「緊急措施」或「PEP 解除鎖定」。 PEP 工作階段權限提升流程共有兩個步驟,涉及兩名人員及雙重組織驗證流程。 解除鎖定由 Azure Stack Hub 操作員啟動,操作員會一直繼續保有對環境的控制權。 由操作員存取 PEP 並執行以下 Cmdlet:

     Get-SupportSessionToken

該 Cmdlet 會傳回技術支援工作階段的要求權杖,即是一個非常長的英數字元字串。 操作員接著要自己選擇管道 (例如聊天功能或電子郵件) 將要求權杖傳給 Microsoft 支援工程師。 若該要求權杖有效,Microsoft 支援工程師會使用該權杖來產生技術支援工作階段授權權杖,並將權杖傳回給 Azure Stack Hub 操作員。 操作員接著會在相同的 PEP PowerShell 工作階段上,將此授權權杖以輸入的形式傳送至此 Cmdlet:

      unlock-supportsession
      cmdlet Unlock-SupportSession at command pipeline position 1
      Supply values for the following parameters:
      ResponseToken:

若授權權杖有效,會提供完整的系統管理員功能和觸達能力給基礎結構,以此方式提高 PEP PowerShell 工作階段的權限。

注意

在提高權限的 PEP 工作階段中,所有執行的作業和 Cmdlet 在執行期間均必須受到 Microsoft 支援工程式的嚴格監控。 若無法做到這一點,可能會導致嚴重的停機和資料遺失,且可能會需要全面重新部署 Azure Stack Hub 環境。

待技術支援工作階段終止後,務必要使用 Close-PrivilegedEndpoint Cmdlet 將提高權限的 PEP 工作階段重新關閉,如上節所述。 PEP 工作階段終止後,解除鎖定權杖即會失效,且無法再次用來將 PEP 工作階段解除鎖定。 提高權限的 PEP 工作階段若未終止,有效時間為 8 小時,屆時即會自動將提高權限的 PEP 工作階段再次鎖定為一般 PEP 工作階段。

特殊權限端點權杖內容

PEP 技術支援工作階段要求和授權權杖會使用加密技術來保護存取權,確保僅有經過授權的權杖才能將 PEP 工作階段解除鎖定。 權杖的設計是採取加密方式,確保僅有產生要求權杖的 PEP 工作階段才能接受回應權杖。 PEP 權杖不包含任何一種可用來辨識特定 Azure Stack Hub 環境或客戶的資訊。 完全匿名。 關於所提供的各權杖內容,詳細資訊如下。

技術支援工作階段要求權杖

PEP 技術支援工作階段要求權杖是由三種物件組成:

  • 隨機產生的工作階段識別碼。
  • 自我簽署憑證,為了具有一次性的公開/私密金鑰組而產生。 憑證中不包含任何環境相關資訊。
  • 顯示要求權杖到期時間的時間戳記。

接著會使用 Azure Stack Hub 環境所註冊的 Azure 雲端公開金鑰,將要求權杖加密。

技術支援工作階段授權回應權杖

PEP 支援授權回應權杖是由兩種物件所組成:

  • 從要求權杖中擷取出的隨機產生工作階段識別碼。
  • 顯示回應權杖到期時間的時間戳記。

接著會使用要求權杖所含的自我簽署憑證,將回應權杖加密。 自我簽署憑證使用與 Azure 雲端建立關聯的私密金鑰解密,也就 Azure Stack Hub 環境所註冊的 Azure 雲端。

後續步驟