你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Microsoft Defender for Cloud 中的 Defender for Servers 提供即时 (JIT) 计算机访问功能。
可以使用 Microsoft Defender for Cloud 的实时访问来保护 Azure VM 免受未经授权的网络访问。 防火墙通常包含一些允许规则,导致虚拟机暴露在外。 JIT 仅在需要时,通过所需端口并在所需时间内允许访问。
本文介绍如何设置和使用实时访问,包括如何:
- 从 Azure 门户或以编程方式在 VM 上启用实时
- 从 Azure 门户或以编程方式请求访问启用了实时访问的 VM
- 审核实时访问活动 ,确保 VM 得到适当的保护
先决条件
在订阅上必须启用 Microsoft Defender for Servers Plan 2。
支持的 VM:通过 Azure 资源管理器 部署的 VM、在与 VM 位于同一虚拟网络 (VNet) 中且受 Azure 防火墙 保护的 VM,以及 AWS EC2 实例(预览)。
不支持的 VM:使用 经典部署模型部署的 VM、受 Azure 防火墙管理器控制的 Azure 防火墙保护的 VM。
若要在 AWS VM 上设置实时访问,需要 将 AWS 帐户连接到 Microsoft Defender for Cloud。
若要创建 JIT 策略,策略名称以及目标 VM 名称不得超过 56 个字符。
需要具有 Reader 和 SecurityReader 权限才能查看 JIT 状态和参数。 自定义角色还可以提供此访问权限。
对于自定义角色,请分配表中汇总的权限。 若要为只需要请求对 VM 的 JIT 访问权限的用户创建最低特权角色,请使用 Set-JitLeastPrivilegedRole 脚本。
| 用户操作 | 需要设置的权限 |
|---|---|
| 配置或编辑 VM 的 JIT 策略 |
将这些操作分配给角色:
|
| 请求对 VM 的 JIT 访问 |
将这些操作分配给用户:
|
| 读取 JIT 策略 |
将这些操作分配给用户:
|
注释
只有与 AWS 相关的是Microsoft.Security权限。
若要为只需要请求对 VM 的 JIT 访问权限的用户创建最低特权角色,请使用 Set-JitLeastPrivilegedRole 脚本。
通过 Microsoft Defender for Cloud 使用 JIT VM 访问
可以使用 Defender for Cloud,或者可以通过自己的自定义选项以编程方式启用 JIT VM 访问,也可以通过 Azure 虚拟机中的默认硬编码参数启用 JIT。
按需 VM 访问显示您的 VM 被分组为:
-
已配置 - VM 已配置为支持实时 VM 访问,并且显示:
- 过去七天内批准的 JIT 请求数
- 上次访问日期和时间
- 配置的连接详细信息
- 最后一个用户
- 未配置 - 未启用 JIT 但可以支持 JIT 的 VM。 建议为这些 VM 启用 JIT。
-
不支持 - 不支持 JIT 的 VM,因为:
- 缺少网络安全组(NSG)或 Azure 防火墙 - JIT 需要配置 NSG 或防火墙配置(或同时配置两者)
- 经典 VM - JIT 支持通过 Azure 资源管理器部署的 VM。
- 其他 - 在订阅或资源组的安全策略中禁用 JIT 解决方案。
从 Microsoft Defender for Cloud 在 VM 上启用 JIT
在 Defender for Cloud 中,可以启用和配置 JIT VM 访问权限。
若要从Defender for Cloud在 VM 上启用 JIT,请执行以下操作:
打开 工作负荷保护 ,并在高级保护中选择 实时 VM 访问权限。
在“ 未配置的 虚拟机”选项卡中,使用 JIT 标记要保护的 VM,然后选择 “在 VM 上启用 JIT”。
此时会打开 JIT VM 访问页,其中列出了 Defender for Cloud 建议保护的端口:
- 22 - SSH
- 3389 - 远程桌面协议 (RDP)
- 5985 - WinRM
- 5986 - WinRM
若要自定义 JIT 访问,请执行以下操作:
选择 并添加。
选择列表中的某个端口进行编辑或输入其他端口。 对于每个端口,可以设置:
- 协议
- 允许的源 IP
- 最大请求时间
选择“确定”。
若要保存端口配置,请选择“ 保存”。
使用 Defender for Cloud 在启用了 JIT 的 VM 上编辑 JIT 配置
可以通过添加和配置新端口来保护该 VM,或者更改与已保护端口相关的任何其他设置来修改 VM 的实时配置。
编辑 VM 的现有 JIT 规则:
打开 工作负荷保护 ,并在高级保护中选择 实时 VM 访问权限。
在 “配置的 虚拟机”选项卡中,右键单击 VM,然后选择“ 编辑”。
在 JIT VM 访问配置中,可以编辑端口列表,或为新的自定义端口选择“ 添加 ”。
编辑完端口后,选择“ 保存”。
从 Microsoft Defender for Cloud 请求访问启用了 JIT 的 VM
VM 启用 JIT 后,必须请求访问权限才能连接到它。 无论以何种方式启用 JIT,都可以使用任意一种受支持的方式请求访问权限。
若要从Defender for Cloud请求访问启用了 JIT 的 VM,请执行以下操作:
在 “实时 VM 访问 ”页中,选择“ 已配置 ”选项卡。
选择要访问的 VM。
“ 连接详细信息 ”列中的图标指示是否在网络安全组或防火墙上启用 JIT。 如果两者都已启用,则只会显示防火墙图标。
“ 连接详细信息 ”列显示可以访问 VM 的用户和端口。
选择“请求访问权限”。 此时会打开 “请求访问 ”窗口。
在 “请求访问”下,选择要为每个 VM 打开的端口、要打开端口的源 IP 地址以及打开端口的时间窗口。
选择 “打开端口”。
注释
如果请求访问的用户位于代理后面,则可以输入代理的 IP 地址范围。
使用 JIT VM 访问的其他方法
Azure 虚拟机
在 Azure 虚拟机上启用 JIT
可以从 Azure 门户的 Azure 虚拟机页在 VM 上启用 JIT。
若要从Azure虚拟机在 VM 上启用 JIT,请执行以下操作:
小窍门
如果 VM 已启用 JIT,则 VM 配置页显示已启用 JIT。 使用该页上的 实时 VM 访问链接打开Defender for Cloud并查看或更改设置。
在 Azure 门户中,搜索并选择 虚拟机。
选择要使用 JIT 进行保护的虚拟机。
在菜单中,选择“ 配置”。
在“实时访问”下,选择“启用实时”。
默认情况下,VM 的实时访问使用以下设置:
- Windows 计算机:
- RDP 端口:3389
- 允许的最大访问数:3 小时
- 允许的源 IP 地址:任意
- Linux 计算机:
- SSH 端口:22
- 允许的最大访问数:3 小时
- 允许的源 IP 地址:任意
- Windows 计算机:
若要编辑上述任何值或向 JIT 配置添加更多端口,请使用 Microsoft Defender for Cloud 的实时页面:
在 Defender for Cloud 的菜单中,选择 实时 VM 访问权限。
在“ 已配置 ”选项卡中,右键单击要向其添加端口的 VM,然后选择“ 编辑”。
在 JIT VM 访问配置下,可以编辑已受保护的端口的现有设置或添加新的自定义端口。
编辑完端口后,选择“ 保存”。
从 Azure 虚拟机的连接页请求访问已启用 JIT 的 VM
VM 启用 JIT 后,必须请求访问权限才能连接到它。 无论以何种方式启用 JIT,都可以使用任意一种受支持的方式请求访问权限。
若要从 Azure 虚拟机请求访问权限,请执行:
在 Azure 门户中,打开虚拟机页面。
选择要连接到的 VM,然后打开“连接”页。
Azure 会检查该虚拟机上是否启用了 JIT。
- 如果没有为该 VM 启用 JIT,系统会提示你启用它。
- 如果启用了 JIT,则选择“请求访问”,以便传递访问请求,其中包含已为该 VM 配置的请求 IP、时间范围和端口。
注释
为受 Azure 防火墙保护的 VM 批准请求后,Defender for Cloud 为用户提供正确的连接详细信息(来自 DNAT 表的端口映射),以用于连接到 VM。
PowerShell
使用 PowerShell 在 VM 上启用 JIT
若要从 PowerShell 启用实时 VM 访问,请使用官方Microsoft Defender for Cloud PowerShell cmdlet Set-AzJitNetworkAccessPolicy。
若要使用 PowerShell 在 VM 上配置 JIT,请执行以下操作:
示例 - 使用以下规则在特定 VM 上启用实时 VM 访问:
- 关闭端口 22 和 3389
- 为每个请求设置 3 小时的最大时间窗口,以便可以按批准的请求打开它们
- 允许请求访问的用户控制源 IP 地址
- 允许请求访问的用户在批准的实时访问请求后建立成功的会话
以下 PowerShell 命令创建此 JIT 配置:
分配一个变量,该变量保存 VM 的实时 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"})})将 VM 实时 VM 访问规则插入到数组中:
$JitPolicyArr=@($JitPolicy)在所选 VM 上配置实时 VM 访问规则:
Set-AzJitNetworkAccessPolicy -Kind "Basic" -Location "LOCATION" -Name "default" -ResourceGroupName "RESOURCEGROUP" -VirtualMachine $JitPolicyArr使用 -Name 参数指定 VM。 例如,若要为两个不同的 VM(VM1 和 VM2)建立 JIT 配置,请使用:
Set-AzJitNetworkAccessPolicy -Name VM1和Set-AzJitNetworkAccessPolicy -Name VM2。
使用 PowerShell 请求访问已启用 JIT 的 VM
在以下示例中,可以看到针对端口 22 的特定 VM 的实时 VM 访问请求、特定 IP 地址以及特定时间:
若要使用 PowerShell 请求访问已启用 JIT 的 VM,请执行以下操作:
在 PowerShell 中运行以下命令:
配置 VM 请求访问属性:
$JitPolicyVm1 = (@{ id="/subscriptions/SUBSCRIPTIONID/resourceGroups/RESOURCEGROUP/providers/Microsoft.Compute/virtualMachines/VMNAME"; ports=(@{ number=22; endTimeUtc="2020-07-15T17:00:00.3658798Z"; allowedSourceAddressPrefix=@("IPV4ADDRESS")})})在数组中插入 VM 访问请求参数:
$JitPolicyArr=@($JitPolicyVm1)发送请求访问(使用步骤 1 中的资源 ID)
Start-AzJitNetworkAccessPolicy -ResourceId "/subscriptions/SUBSCRIPTIONID/resourceGroups/RESOURCEGROUP/providers/Microsoft.Security/locations/LOCATION/jitNetworkAccessPolicies/default" -VirtualMachine $JitPolicyArr
在 PowerShell cmdlet 文档中了解详细信息。
REST API
使用 REST API 在 VM 上启用 JIT
实时 VM 访问功能可以通过 Microsoft Defender for Cloud API 使用。 使用此 API 获取有关配置的 VM、添加新 VM、请求对 VM 的访问权限等的信息。
在 JIT 网络访问策略中了解详细信息。
使用 REST API 请求对启用了 JIT 的 VM 的访问权限
实时 VM 访问功能可以通过 Microsoft Defender for Cloud API 使用。 使用此 API 获取有关配置的 VM、添加新 VM、请求对 VM 的访问权限等的信息。
在 JIT 网络访问策略中了解详细信息。
审核 Defender for Cloud 中的 JIT 访问活动
使用日志搜索查看 VM 活动。 若要查看日志,请执行以下操作:
从 实时 VM 访问中,选择 “已配置 ”选项卡。
对于要审核的 VM,请在行末尾打开省略号菜单。
从菜单中选择 “活动日志 ”。
活动日志显示针对该虚拟机(VM)的先前操作的筛选视图,并包括日期、时间和订阅信息。
若要下载日志信息,请选择“ 下载为 CSV”。