管理 Azure 虚拟机的即时 (JIT) 访问

管理 Azure 虚拟机的即时 (JIT) 访问

2024年1月10日

本文旨在指导安全分析师、IT 管理员和系统工程师实施和管理 Azure 虚拟机 (VM) 的即时 (JIT) 访问。 JIT 是 Microsoft Defender for Cloud 提供的一项基本安全功能,有助于保护虚拟机免受未经授权的访问攻击,仅在严格必要时限制对管理端口的访问,从而显着减少网络攻击面 [1]。

简介

在云环境中,虚拟机通常是暴力攻击和端口扫描的目标,尤其是那些管理端口(例如 RDP 3389 和 SSH 22)暴露于互联网的虚拟机。保持这些端口持续开放会产生不必要的大攻击面,从而增加妥协的风险。 JIT Access 解决了这个问题,它允许安全团队默认阻止虚拟机的入站流量,并仅在有限的时间内按需打开来自特定 IP 地址的管理端口。这种方法遵循最小特权和零信任原则,确保仅在合理的情况下且在尽可能短的时间内授予访问权限 [2]。

本实用指南将涵盖启用 JIT 的先决条件、通过 Microsoft 安全中心的配置过程、如何请求和批准 JIT 访问、与安全警报集成以及有效管理的最佳实践。将提供分步说明、示例 Azure CLI 命令和说明,以便读者可以实施和验证 JIT,增强 Azure VM 的安全性并保护它们免受未经授权的访问威胁。

为什么即时 (JIT) 访问对于 Azure VM 至关重要?

  • 减少攻击面:默认关闭虚拟机管理端口,仅在必要时和必要时暴露它们,从而最大程度地减少攻击者的机会。
  • 精细访问控制:允许您指定哪些用户可以请求访问、可以打开哪些端口、持续时间以及来自哪些源 IP 地址。
  • 合规性:帮助满足需要严格控制关键资源访问的合规性要求。
  • 可见性和审计:提供所有 JIT 访问请求、批准和端口打开/关闭的详细日志,方便安全审计和调查。
  • 与 Defender for Cloud 集成:与 Microsoft Defender for Cloud 完全集成,利用其安全态势管理和威胁防护功能。
  • 自动化:可以自动批准特定场景中的访问,例如事件响应或计划的维护操作。

先决条件

要实现 Azure 虚拟机的 JIT 访问,您将需要以下项目:

  1. 活动 Azure 订阅:用于创建和管理资源的 Azure 订阅。
  2. 管理访问权限:在 Azure 订阅或虚拟机所在的资源组中具有“所有者”、“贡献者”或“安全管理员”角色的帐户。
  3. Microsoft Defender for Cloud Standard(或 Defender for Servers):JIT 是 Microsoft Defender for Cloud 的一项高级功能,需要在包含 VM 的订阅上启用 Defender for Servers 计划 [3]。
  4. 现有 Azure 虚拟机:要使用 JIT 保护的 Azure VM。对于本教程,我们假设您已经部署了虚拟机。
  5. Azure CLI 或 Azure PowerShell:安装并配置命令行工具以与 Azure 交互。

分步:启用和管理 JIT 访问

让我们为 Azure VM 配置 JIT。

1. 启用 Defender for Servers 计划

如先决条件中所述,JIT 需要激活 Defender for Servers 计划。

  1. 打开浏览器并导航到 Azure 门户:“https://portal.azure.com”。
  2. 使用具有必要权限的帐户登录。
  3. 在顶部搜索字段中,输入“Defender for Cloud”并从结果中选择它。
  4. 在 Defender for Cloud 仪表板中,选择 环境设置和 在左侧导航窗格中。
  5. 选择包含您的 VM 的 Azure 订阅。
  6. 在 Defender 计划页面上,确保 Defender for Servers 计划处于“已激活”状态。如果没有,请单击“启用”并按照说明进行启用。

2. 为虚拟机启用 JIT 访问

您可以为单个虚拟机或同时为多个虚拟机启用 JIT。

  1. 在 Defender for Cloud 仪表板中,选择左侧导航窗格中的 工作负载保护
  2. 向下滚动到“高级保护”部分,然后单击“即时 VM 访问”。
  3. 在“虚拟机”选项卡下,您将看到三个子选项卡:“已配置”、“推荐”和“未配置”。

    • 推荐:列出安全中心建议使用 JIT 保护的虚拟机。
    • 未配置:列出不受 JIT 保护但符合条件的虚拟机。
  4. 在“推荐”或“未配置”选项卡中选择要启用 JIT 的虚拟机。

  5. 单击在虚拟机上启用 JIT

  6. 配置 JIT 策略:对于每个选定的 VM,您可以配置以下选项:

    • 端口:将受到保护的管理端口(例如:22、3389、5985、5986)。您可以添加自定义端口。
    • 协议:每个端口的协议(例如 TCP、UDP)。
    • 最长请求时间:请求批准后门可以打开的最长时间(以小时为单位)。默认值为 3 小时。
    • 批准的源 IP 地址:可选,但强烈推荐。限制对特定 IP 或 IP 块的访问。默认情况下它是“Any”(“*”),这意味着任何IP都可以请求访问。
  7. 单击“保存”将 JIT 策略应用到选定的虚拟机。

3. 请求即时访问虚拟机

当用户或管理员需要访问受 JIT 保护的 VM 时,他们必须请求访问权限。

  1. 在安全中心仪表板中,选择 工作负载保护 > 即时 VM 访问
  2. 在“虚拟机”选项卡中,选择要访问的虚拟机(它应该位于“已配置”选项卡中)。
  3. 单击请求访问

  4. 在“请求访问”窗口中,指定:

    • :您需要打开的门。
    • 源 IP 地址:您将连接的公共 IP 地址。您可以选择“我的 IP 地址”(您设备的当前公共 IP)或“自定义”来指定 IP 或 CIDR。
    • 时间段:访问的持续时间(受 JIT 策略中配置的“最大请求时间”限制)。
    • 理由:访问请求原因的简要描述。
  5. 单击“打开端口”。

    • 注意:如果 JIT 策略需要批准,则请求将在端口打开之前发送给配置的批准者。

4. 批准 JIT 访问请求(如果已配置)

对于需要批准的场景(通过 Azure 逻辑应用或 Azure Functions),流程可能会有所不同。默认情况下,JIT 会根据请求立即打开端口,除非配置了工作流自动化。

  • 提示:对于审批工作流,您可以使用 Azure 逻辑应用来监视 Azure 审核日志或 Azure 安全中心事件并触发审批流程(例如,向安全组发送电子邮件以进行手动审批)。

5. 检查 JIT 访问状态

请求访问后,您可以在门户上检查状态。

  1. 在安全中心仪表板中,选择 工作负载保护 > 即时 VM 访问
  2. 在“虚拟机”选项卡中,您请求访问的虚拟机应显示一个状态,指示访问为“活动”或“待处理”(如果获得批准)。
  3. “剩余时间”栏将显示剩余的访问时间。

6. 禁用 JIT 访问(可选)

如果需要为虚拟机禁用 JIT,请按照以下步骤操作:

  1. 在安全中心仪表板中,选择 工作负载保护 > 即时 VM 访问
  2. 在“虚拟机”选项卡中,选择已配置的虚拟机。
  3. 单击在虚拟机上禁用 JIT

验证和测试

验证 JIT 访问的有效性对于确保您的虚拟机受到保护以及在必要时可以授予访问权限至关重要。

1. 测试 D 块和标准访问

  1. 尝试从受 JIT 保护的虚拟机访问管理端口(例如 RDP 3389 或 SSH 22)而不请求 JIT 访问
    • 预期结果:连接应被拒绝或超时,因为默认情况下端口是关闭的。

2. 测试批准的 JIT 访问

  1. 使用其公共 IP 地址请求对所需虚拟机和端口的 JIT 访问。
  2. 批准后(如果未配置批准则立即打开),尝试从同一公共 IP 地址通过 RDP 或 SSH 访问虚拟机。

    • 预期结果:连接应该成功。
  3. 等待JIT访问时间到期(或手动取消访问)。

  4. 尝试再次访问虚拟机。
    • 预期结果:连接应再次被拒绝。

3.检查审核日志

所有 JIT 操作都记录在 Azure 审核日志中,提供有关谁请求什么、何时以及从何处请求的完整线索。

  1. 在 Azure 门户中,导航到资源组或特定 VM。
  2. 在左侧导航窗格中,选择活动日志
  3. 筛选与“即时 VM 访问”或“Microsoft.Security/locations/jitNetworkAccessPolicies”相关的事件。
    • 您将看到“已创建 JIT 网络访问策略”、“已请求 JIT 网络访问策略”、“已批准 JIT 网络访问策略”(如果适用)和“已关闭 JIT 网络访问策略”等事件。

安全提示和最佳实践

  • 最小权限原则:配置 JIT 策略以授予尽可能最小的权限 - 所需的确切端口、尽可能短的时间以及来自最受限制的源 IP。
  • 限制源 IP 地址:只要有可能,请在 JIT 策略和访问请求中指定源 IP 地址。避免使用“Any”(“*”)作为源 IP。
  • 短时间段:将最大请求时间设置为最短的合理时间段(例如1-2小时),迫使用户重新评估访问的需要。
  • 监视和警报:在 Azure Monitor 中为 JIT 访问请求配置警报,特别是针对关键端口或意外 IP。将这些警报与您的 SIEM(例如 Microsoft Sentinel)集成。
  • 工作流自动化:对于具有严格审批要求的环境,请使用 Azure 逻辑应用或 Azure Functions 为 JIT 请求创建自定义审批工作流。
  • 文档和培训:清楚地记录 JIT 访问策略并培训用户如何请求访问以及遵循安全最佳实践的重要性。
  • 定期审查:定期审查 JIT 策略和访问日志,以确保它们保持相关性和有效性。
  • 与 NSG 和 Azure 防火墙相结合:JIT 补充了网络安全的其他层,例如网络安全组 (NSG) 和 Azure 防火墙。将它们一起使用以进行纵深防御。

常见故障排除

  • 无法为 VM 启用 JIT:验证是否为 VM 订阅启用了 Defender for Servers 计划。确保虚拟机不处于无效状态或不存在冲突的设置。
  • 无法请求 JIT 访问:确保您拥有请求访问所需的权限(例如“协作者”或“虚拟机即时访问操作员”)。确保虚拟机已配置为 JIT,并且端口已在策略中定义。
  • JIT 请求后连接被拒绝:检查您在 JIT 请求中指定的源 IP 地址是否与您设备的公共 IP 匹配。确认该时间段尚未过期。验证打开 JIT 端口后是否有其他 NSG 或防火墙规则阻止流量。
  • 打开错误的端口:检查为虚拟机配置的 JIT 策略,以确保列出正确的端口。如果使用 Azure CLI,请检查端口参数。
  • JIT 访问安全警报:调查任何与 JIT 相关的安全警报。这可能表示未经授权的访问尝试或不正确的配置。
  • VM 性能受影响:JIT 本身不应影响 VM 性能。如果存在问题,请调查虚拟机或网络的其他组件。

结论

氧Azure 虚拟机的即时 (JIT) 访问管理是保护云资源免受未经授权的访问威胁的重要安全策略。通过默认关闭管理端口并仅根据需要打开它们,JIT 显着减少了攻击面,增强了您的安全状况,并帮助您满足合规性要求。 JIT 的有效实施与安全最佳实践和持续监控相结合,可确保您的虚拟机保持安全并且仅可供合法用户和目的访问。通过本实用指南,安全专业人员将能够配置、验证和管理 JIT 访问,从而使他们的 Azure 虚拟机更具弹性和受到保护。


参考资料:

[1] 微软学习。 什么是对虚拟机的 JIT(即时)访问?。网址:https://learn.microsoft.com/pt-br/azure/defender-for-cloud/just-in-time-access-overview [2] 微软学习。 启用虚拟机上的即时访问。网址:https://learn.microsoft.com/pt-br/azure/defender-for-cloud/just-in-time-access-usage [3] 微软学习。 使用 Microsoft Defender for Cloud 管理服务器安全。网址:https://learn.microsoft.com/pt-br/azure/defender-for-cloud/tutorial-enable-servers-plan [4] 微软学习。 使用 PowerShell 管理对虚拟机的 JIT(即时)访问。位于:https://learn.microsoft.com/pt-br/azure/defender-for-cloud/just-in-time-access-powershell