在 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 防火牆管理員控制的 Azure 防火牆保護的 VM
AWS EC2 執行個體 (預覽)
必要的角色和權限: 讀者SecurityReader自訂角色可以檢視 JIT 狀態和參數。
若要為只需要求對 VM 進行 JIT 存取的使用者建立最低權限角色,請使用 Set-JitLeastPrivilegedRole 指令碼
雲端: 商業雲端
國家 (Azure Government、由 21Vianet 營運的 Microsoft Azure)
已連線的 AWS 帳戶 (預覽)

必要條件

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

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

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

    若要讓使用者: 要設定的權限
    設定或編輯 VM 的 JIT 原則 將這些動作指派給角色:
    • 與 VM 相關聯的訂用帳戶 (或僅使用 API 或 PowerShell 時為資源群組) 範圍:
      Microsoft.Security/locations/jitNetworkAccessPolicies/write
    • VM 的訂用帳戶 (或僅使用 API 或 PowerShell 時為資源群組) 範圍:
      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 中設定 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 的 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 存取要求 (在特定 IP 位址開啟連接埠 22 達特定時間長度):

在 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]

後續步驟