你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Microsoft Defender for Cloud 中的 Defender for Servers 提供实时计算机访问功能。
可以使用 Microsoft Defender for Cloud 的实时访问来保护 Azure VM 免受未经授权的网络访问。 很多时候,防火墙包含允许规则,使 VM 容易受到攻击。 JIT 允许仅在需要访问时、所需端口和所需时间段内访问 VM。
本文介绍如何设置和使用实时访问,包括如何:
- 从 Azure 门户或通过编程方式在虚拟机上启用按需功能
- 从 Azure 门户或以编程方式请求对启用了实时访问的 VM 的访问权限
- 审核实时访问活动 ,确保 VM 得到适当的保护
先决条件
在订阅上必须启用 Microsoft Defender for Servers Plan 2。
支持的 VM:通过 Azure 资源管理器部署的 VM、位于相同 VNET 并受 Azure 防火墙保护的 VM、AWS EC2 实例(预览版)。
不支持的 VM:使用 经典部署模型部署的 VM、受 Azure 防火墙管理器控制的 Azure 防火墙保护的 VM。
若要在 AWS VM 上设置实时访问,需要 将 AWS 帐户连接到 Microsoft Defender for Cloud。
若要创建 JIT 策略,策略名称以及目标 VM 名称不得超过 56 个字符。
需要 读者 和 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 访问权限。
打开 工作负荷保护 ,并在高级保护中选择 实时 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 的方式如何,你都可以通过任何受支持的方式请求访问权限。
在 “实时 VM 访问 ”页中,选择“ 已配置 ”选项卡。
选择要访问的 VM。
“ 连接详细信息 ”列中的图标指示是否在网络安全组或防火墙上启用 JIT。 如果两者都已启用,则只会显示防火墙图标。
“ 连接详细信息 ”列显示可以访问 VM 的用户和端口。
选择“ 请求访问权限”。 此时会打开 “请求访问 ”窗口。
在 “请求访问”下,选择要为每个 VM 打开的端口、要打开端口的源 IP 地址以及打开端口的时间窗口。
选择 “打开端口”。
注释
如果请求访问的用户位于代理后面,则可以输入代理的 IP 地址范围。
使用 JIT VM 访问的其他方法
Azure 虚拟机
在 Azure 虚拟机上启用 JIT
可以从 Azure 门户的 Azure 虚拟机页在 VM 上启用 JIT。
小窍门
如果 VM 已启用 JIT,则 VM 配置页显示已启用 JIT。 可以使用链接在 Defender for Cloud 中打开 JIT VM 访问页,以查看和更改设置。
在 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 会查看是否已在该 VM 上启用了 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。
示例 - 使用以下规则在特定 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 中运行以下命令:
配置 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”。