在 VM 上啟用 Just-In-Time 存取

您可以使用 Microsoft Defender 進行雲端的 Just-In-Time (JIT) 存取,以保護 Azure 虛擬機器 (VM) 不受未經授權的網路存取。 防火牆多次包含允許規則讓您的 VM 容易遭受攻擊。 JIT 可讓您只在需要存取時、所需的埠上,以及一段時間後,才允許存取 VM。

深入瞭解 JIT 的運作方式 ,以及 設定及使用 JIT 所需的許可權

在本文中,您將瞭解如何在安全性計畫中納入 JIT,包括如何:

  • 從Azure 入口網站或以程式設計方式在您的 VM 上啟用 JIT
  • 要求從 Azure 入口網站 或以程式設計方式啟用 JIT 的 VM 存取權
  • 稽核 JIT 活動 ,以確定您的 VM 受到適當保護

可用性

層面 詳細資料
版本狀態: 公開上市 (GA)
支援的 VM: 透過 Azure Resource Manager 部署的 VM
使用傳統部署模型部署的 VM
與 VM 位於相同 VNET 上的 Azure 防火牆所保護的 VM
Azure 防火牆 Manager所控制之 Azure 防火牆保護的 VM
AWS EC2 執行個體 (預覽)
必要的角色和權限: 讀取者SecurityReader自訂角色 可以檢視 JIT 狀態和參數。
若要為只需要要求 JIT 存取 VM 的使用者建立最低許可權角色,請使用 Set-JitLeastPrivilegedRole 腳本
雲端: 商業雲端
國家/地區 (Azure Government,由 21Vianet) 營運的 Microsoft Azure
已連線的 AWS 帳戶 (預覽)

必要條件

  • JIT 需要在訂用帳戶上啟用伺服器方案 2 Microsoft Defender

  • 讀者資訊安全角色的角色皆可檢視 JIT 狀態和參數。

  • 如果您想要建立使用 JIT 的自訂角色,您需要下表的詳細資料:

    若要讓使用者: 要設定的權限
    設定或編輯 VM 的 JIT 原則 將這些動作指派給角色:
    • 對於虛擬機器相關聯的訂用帳戶或資源群組範圍:
      Microsoft.Security/locations/jitNetworkAccessPolicies/write
    • 對於虛擬機器的訂用帳戶或資源群組範圍:
      Microsoft.Compute/virtualMachines/write
    要求存取虛擬機器的 JIT 存取 將這些動作指派給使用者:
    • Microsoft.Security/locations/jitNetworkAccessPolicies/initiate/action
    • Microsoft.Security/locations/jitNetworkAccessPolicies/*/read
    • Microsoft.Compute/virtualMachines/read
    • Microsoft.Network/networkInterfaces/*/read
    • Microsoft.Network/publicIPAddresses/read
    讀取 JIT 原則 將這些動作指派給使用者:
    • Microsoft.Security/locations/jitNetworkAccessPolicies/read
    • Microsoft.Security/locations/jitNetworkAccessPolicies/initiate/action
    • Microsoft.Security/policies/read
    • Microsoft.Security/pricings/read
    • Microsoft.Compute/virtualMachines/read
    • Microsoft.Network/*/read

    注意

    只有 Microsoft.Security 權限與 AWS 相關。

  • 若要在 Amazon Web Service (AWS) VM 上設定 JIT,您必須將 AWS 帳戶連線到雲端Microsoft Defender。

    提示

    若要為必須要求 JIT 存取 VM 且不執行 JIT 以外作業的使用者,建立最低特殊權限角色,請使用來自 Defender for Cloud GitHub 社群頁面的 Set-JitLeastPrivilegedRole 指令碼

注意

若要成功建立自訂 JIT 原則,原則名稱與目標 VM 名稱一起不得超過 56 個字元。

使用適用于雲端Microsoft Defender的 JIT VM 存取

您可以使用適用于雲端的 Defender,或者您可以使用自己的自訂選項以程式設計方式啟用 JIT VM 存取,也可以從 Azure 虛擬機器使用預設的硬式編碼參數來啟用 JIT。

Just-In-Time VM 存取 會顯示已分組的 VM:

  • 已設定 - 設定為支援 Just-In-Time VM 存取的 VM,並顯示:
    • 過去七天內已核准的 JIT 要求數目
    • 上次存取日期和時間
    • 已設定的連線詳細資料
    • 上一位使用者
  • 未設定:未啟用 JIT 但可支援 JIT 的 VM。 建議您為這些 VM 啟用 JIT。
  • 不支援 - 不支援 JIT 的 VM,因為:
    • 缺少網路安全性群組 (NSG) 或 Azure 防火牆:JIT 需要設定 NSG 或設有防火牆設定 (或兩者兼具)
    • 傳統 VM - JIT 支援透過 Azure Resource Manager部署的 VM。 深入了解傳統和 Azure Resource Manager 部署模型
    • 其他 - JIT 解決方案會在訂用帳戶或資源群組的安全性原則中停用。

從適用於雲端的 Microsoft Defender 在 VM 上啟用 JIT

此螢幕擷取畫面顯示在 Microsoft Defender for Cloud 中設定 JIT VM 存取權。

您可以透過適用於雲端的 Defender 啟用和設定 JIT VM 存取。

  1. 開啟 [工作負載保護 ],然後在進階保護中,選取 [Just-In-Time VM 存取]。

  2. 在 [ 未設定 的虛擬機器] 索引標籤中,標示要以 JIT 保護的 VM,然後選取 [在 VM 上啟用 JIT]。

    JIT VM 存取頁面隨即開啟,其中列出適用於雲端的 Defender 建議保護的連接埠:

    • 22 - SSH
    • 3389 - RDP
    • 5985 - WinRM
    • 5986 - WinRM

    若要自訂 JIT 存取:

    1. 選取 [新增]。

    2. 選取清單中的其中一個埠來編輯它,或輸入其他埠。 針對每個埠,您可以設定:

      • 通訊協定 - 核准要求時,此埠允許的通訊協定
      • 允許的來源 IP - 核准要求時,此埠上允許的 IP 範圍
      • 要求時間上限 - 可開啟特定埠的時間範圍上限
    3. 選取 [確定]。

  3. 若要儲存埠組態,請選取 [ 儲存]。

使用適用於雲端的 Defender 編輯已啟用 JIT 的 VM 上的 JIT 設定

可以藉由新增和設定一個對 VM 保護的新連接埠,或是變更與受保護的連接埠相關的其他任何設定,來修改該 VM 的 Just-In-Time 設定。

如何編輯 VM 的現有 JIT 規則:

  1. 開啟 [工作負載保護 ],然後在進階保護中,選取 [Just-In-Time VM 存取]。

  2. 在 [ 設定 的虛擬機器] 索引標籤中,以滑鼠右鍵按一下 VM,然後選取 [ 編輯]。

  3. JIT VM 存取設定中,您可以編輯埠清單,或選取 [ 新增 自訂埠]。

  4. 當您完成編輯埠時,請選取 [ 儲存]。

從適用於雲端的 Microsoft Defender 要求存取已啟用 JIT 的 VM

當 VM 已啟用 JIT 時,您必須要求存取權才能與其連線。 無論您透過何種方式啟用 JIT,都能以任何支援的方式要求存取權。

  1. 在 [Just-In-Time VM 存取] 頁面中,選取 [已設定] 索引標籤。

  2. 選取您想要存取的 VM:

    • [連線詳細資料] 資料行中的圖示會顯示出是否在網路安全性群組或防火牆上啟用 JIT。 如果這兩者均啟用,則只會顯示防火牆圖示。

    • [ 連線詳細資料] 資料行會顯示可存取 VM 的使用者和埠。

  3. 選取 [要求存取]。 [要求存取] 視窗隨即開啟。

  4. 在 [ 要求存取] 下,選取您要針對每個 VM 開啟的埠、您要開啟埠的來源 IP 位址,以及開啟埠的時間範圍。

  5. 選取 [開啟連接埠]

    注意

    如果要求存取權的使用者位於 Proxy 後方,您可以輸入 Proxy 的 IP 位址範圍。

使用 JIT VM 存取的其他方式

Azure 虛擬機器

從 Azure 虛擬機器在您的 VM 上啟用 JIT

您可以從 Azure 入口網站的 Azure 虛擬機器頁面,在 VM 上啟用 JIT。

提示

如果 VM 已啟用 JIT,VM 組態頁面會顯示已啟用 JIT。 您可以使用連結在適用于雲端的 Defender 中開啟 JIT VM 存取頁面,以檢視和變更設定。

  1. Azure 入口網站中,搜尋並選取 [虛擬機器]。

  2. 選取您要使用 JIT 保護的虛擬機器。

  3. 在功能表中選取 [設定]。

  4. 在 [Just-In-Time 存取] 底下,選取 [啟用 Just-In-Time]。

    根據預設,VM 的 Just-In-Time 存取會使用這些設定:

    • Windows 機器
      • RDP 埠:3389
      • 允許的存取上限:三小時
      • 允許的來源 IP 位址:任何
    • Linux 機器
      • SSH 埠:22
      • 允許的存取上限:三小時
      • 允許的來源 IP 位址:任何
  5. 若要編輯上述任何值,或將更多埠新增至 JIT 設定,請使用 Microsoft Defender for Cloud 的 Just-In-Time 頁面:

    1. 從適用於雲端的 Defender 功能表中,選取 [Just-In-Time VM 存取]。

    2. 從 [ 已設定 ] 索引標籤中,以滑鼠右鍵按一下您要新增埠的 VM,然後選取 [ 編輯]。

      在適用於雲端的 Microsoft Defender 中編輯 JIT VM 存取設定。

    3. 在 [JIT VM 存取設定] 下方,您可以對於已經保護的連接埠編輯現有設定,也可以新增自訂連接埠。

    4. 當連接埠編輯完成時,請選取 [儲存]。

從 Azure 虛擬機器的連線頁面要求存取已啟用 JIT 的 VM

當 VM 已啟用 JIT 時,您必須要求存取權才能與其連線。 無論您透過何種方式啟用 JIT,都能以任何支援的方式要求存取權。

顯示 jit Just-In-Time 要求的螢幕擷取畫面。

如何從 Azure 虛擬機器要求存取:

  1. 在 Azure 入口網站中,開啟虛擬機器頁面。

  2. 選取您要連線的 VM,然後開啟 [連線] 頁面。

    Azure 會檢查該 VM 上是否已啟用 JIT。

    • 如果未啟用 VM 的 JIT,系統會提示您啟用它。

    • 如果已啟用 JIT,請選取 [ 要求存取 權] 以傳遞具有針對該 VM 所設定之要求 IP、時間範圍和埠的存取要求。

注意

針對受 Azure 防火牆保護的 VM 核准要求之後,適用於雲端的 Defender 可為使用者提供適當的連線詳細資料 (來自 DNAT 資料表的連接埠對應),以便用來連線到 VM。

PowerShell

使用 PowerShell 在您的 VM 上啟用 JIT

若要從 PowerShell 啟用 Just-In-Time VM 存取,請使用官方適用於雲端的 Microsoft Defender PowerShell Cmdlet Set-AzJitNetworkAccessPolicy

範例 - 使用下列規則在特定 VM 上啟用 Just-In-Time VM 存取:

  • 關閉連接埠 22 和 3389
  • 分別為其設定時間範圍上限 3 小時,讓它們能針對每個核准的要求開啟
  • 允許要求存取權的使用者控制來源 IP 位址
  • 允許要求存取的使用者在系統核准 Just-In-Time 存取要求時建立成功的工作階段

下列 PowerShell 命令會建立此 JIT 設定:

  1. 指派一個變數,為 VM 保留 Just-In-Time VM 存取規則:

    $JitPolicy = (@{
        id="/subscriptions/SUBSCRIPTIONID/resourceGroups/RESOURCEGROUP/providers/Microsoft.Compute/virtualMachines/VMNAME";
        ports=(@{
             number=22;
             protocol="*";
             allowedSourceAddressPrefix=@("*");
             maxRequestAccessDuration="PT3H"},
             @{
             number=3389;
             protocol="*";
             allowedSourceAddressPrefix=@("*");
             maxRequestAccessDuration="PT3H"})})
    
  2. 將 VM Just-In-Time VM 存取規則插入陣列中:

    $JitPolicyArr=@($JitPolicy)
    
  3. 在所選的 VM 上設定 Just-In-Time VM 存取規則:

    Set-AzJitNetworkAccessPolicy -Kind "Basic" -Location "LOCATION" -Name "default" -ResourceGroupName "RESOURCEGROUP" -VirtualMachine $JitPolicyArr
    

    使用 -Name 參數來指定 VM。 例如,若要為兩個不同的 VM (VM1 和 VM2) 建立 JIT 設定,請使用:Set-AzJitNetworkAccessPolicy -Name VM1Set-AzJitNetworkAccessPolicy -Name VM2

使用 PowerShell 要求存取已啟用 JIT 的 VM

在下列範例中,您可以看到特定 VM 的 Just-In-Time VM 存取要求,適用于埠 22、特定 IP 位址,以及特定時間:

在 PowerShell 中執行下列命令:

  1. 設定 VM 要求存取屬性:

    $JitPolicyVm1 = (@{
        id="/subscriptions/SUBSCRIPTIONID/resourceGroups/RESOURCEGROUP/providers/Microsoft.Compute/virtualMachines/VMNAME";
        ports=(@{
           number=22;
           endTimeUtc="2020-07-15T17:00:00.3658798Z";
           allowedSourceAddressPrefix=@("IPV4ADDRESS")})})
    
  2. 將 VM 存取要求參數插入陣列中:

    $JitPolicyArr=@($JitPolicyVm1)
    
  3. 傳送要求存取 (使用步驟 1 中的資源識別碼)

    Start-AzJitNetworkAccessPolicy -ResourceId "/subscriptions/SUBSCRIPTIONID/resourceGroups/RESOURCEGROUP/providers/Microsoft.Security/locations/LOCATION/jitNetworkAccessPolicies/default" -VirtualMachine $JitPolicyArr
    

如需深入了解,請參閱 PowerShell Cmdlet 文件

REST API

使用 REST API 在您的 VM 上啟用 JIT

Just-In-Time VM 存取功能可透過適用於雲端的 Microsoft Defender API 使用。 使用此 API 可取得已設定 VM 的相關資訊、新增 VM、要求存取 VM,以及更多作業。

深入了解 JIT 網路存取原則

使用 REST API 要求存取已啟用 JIT 的 VM

Just-In-Time VM 存取功能可透過適用於雲端的 Microsoft Defender API 使用。 使用此 API 可取得已設定 VM 的相關資訊、新增 VM、要求存取 VM,以及更多作業。

深入了解 JIT 網路存取原則

稽核適用於雲端的 Defender 中的 JIT 存取活動

您可以使用記錄搜尋來深入了解 VM 活動。 若要檢視記錄:

  1. 從 [Just-In-Time VM 存取] 中,選取 [已設定] 索引標籤。

  2. 針對您想要稽核的 VM,開啟資料列結尾的省略符號功能表。

  3. 從功能表中,選取 [活動記錄]。

    選取 just-in-time JIT 活動記錄。

    [活動記錄] 可提供篩選過的檢視,列出該 VM 先前的作業,以及時間、日期和訂閱。

  4. 若要下載記錄資訊,請選取 [下載為 CSV]。

下一步

在本文中,您已了解如何設定及使用 Just-In-Time VM 存取。 若要瞭解為何應該使用 JIT,請閱讀說明 JIT 防禦威脅的文章: