你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

针对 Azure 虚拟机访问权限的多层保护

Microsoft Entra ID
Azure Bastion
Azure 基于角色的访问控制
Microsoft Defender for Cloud

解决方案构想

本文是一种解决方案构想。 如果你希望我们在内容中扩充更多信息,例如潜在用例、备用服务、实现注意事项或定价指南,请通过提供 GitHub 反馈来告知我们。

此解决方案提供了一种多层方法来保护 Azure 中的虚拟机 (VM)。 用户需要连接到 VM 才能进行管理。 将连接产生的攻击面降至最少,这一点至关重要。

该解决方案通过结合几种保护机制来实现对 VM 的非持久性细粒度访问。 它符合最小权限原则 (PoLP) 和职责分离的概念。 为了减少遭受攻击的风险,此解决方案将阻止传入 VM 的入站流量,但它使 VM 连接在需要时可供访问。 实现这种类型的保护可将对 VM 进行许多常见网络攻击的风险降至最低,例如暴力攻击和分布式拒绝服务 (DDoS) 攻击。

此解决方案使用许多 Azure 服务和功能,包括:

  • Microsoft Entra Privileged Identity Management (PIM)。
  • Microsoft Defender for Cloud 的即时 (JIT) VM 访问功能。
  • Azure Bastion。
  • Azure 基于角色的访问控制 (Azure RBAC) 自定义角色。
  • Microsoft Entra 条件访问,可选。

可能的用例

深层防御是该体系结构背后的主要想法。 在授予用户对 VM 的访问权限之前,此策略为用户带来了多个防御挑战。 目标是为了确保:

  • 每个用户都是合法的。
  • 每个用户都具有合法的意图。
  • 通信是安全的。
  • 仅在需要时才提供对 Azure 中的 VM 的访问权限。

本文中的深层防御策略和解决方案适用于许多场景:

  • 在以下情况下,管理员需要访问 Azure VM:

    • 管理员需要排查问题、调查行为或应用关键更新。
    • 管理员使用远程桌面协议 (RDP) 访问 Windows VM,或使用安全外壳 (SSH) 访问 Linux VM。
    • 访问权限应包括工作所需的最小权限数。
    • 访问权限应仅在有限的时间内有效。
    • 访问权限到期后,系统应会阻止 VM 访问,以防止恶意访问尝试。
  • 员工需要访问作为 VM 托管在 Azure 中的远程工作站。 下列条件适用:

    • 员工只能在工作时间内访问 VM。
    • 安全系统应将在非工作时间访问 VM 的请求视为不必要和恶意的请求。
  • 用户希望连接到 Azure VM 工作负载。 系统应仅批准来自受管理设备和合规性设备的连接。

  • 系统遭受了大量的暴力攻击:

    • 这些攻击针对的是 RDP 和 SSH 端口 3389 及 22 上的 Azure VM。
    • 这些攻击试图猜测凭据。
    • 该解决方案应阻止 3389 和 22 等访问端口在 Internet 或本地环境中公开。

体系结构

Architecture diagram showing how a user gains temporary access to an Azure V M.

下载此体系结构的 Visio 文件

数据流

  1. 身份验证和访问决策:用户是通过 Microsoft Entra ID 进行身份验证的,以访问 Azure 门户、Azure REST API、Azure PowerShell 或 Azure CLI。 如果身份验证成功,Microsoft Entra 条件访问策略就会生效。 该策略用于验证用户是否符合某些条件。 示例包括使用受管理设备或从已知位置登录。 如果用户满足条件,条件访问将通过 Azure 门户或其他接口授予用户对 Azure 的访问权限。

  2. 基于标识的即时访问:在授权期间,Microsoft Entra PIM 为用户分配类型为合格的自定义角色。 该资格仅限于所需的资源,并且是一个有时间限制的角色,而不是永久的角色。 在指定的期限内,用户通过 Azure PIM 接口请求激活此角色。 该请求可以触发其他操作,例如启动审批工作流或提示用户进行多重身份验证以验证标识。 在审批工作流中,需要另一个人批准该请求。 否则,不会为用户分配自定义角色,也无法继续下一步。

  3. 基于网络的即时访问:经过身份验证和授权后,自定义角色将暂时链接到用户的标识。 然后,用户请求 JIT VM 访问。 该访问将在 RDP 端口 3389 或 SSH 端口 22 上打开来自 Azure Bastion 子网的连接。 该连接直接运行到 VM 网络接口卡 (NIC) 或 VM NIC 子网。 Azure Bastion 使用该连接打开内部 RDP 会话。 会话仅限于 Azure 虚拟网络,不会向公共 Internet 公开。

  4. 连接到 Azure VM:用户使用临时令牌访问 Azure Bastion。 通过此服务,用户将建立与 Azure VM 的间接 RDP 连接。 该连接仅在有限的时间内有效。

组件

此解决方案使用以下组件:

  • Azure 虚拟机是一项基础结构即服务 (IaaS) 产品/服务。 可以使用虚拟机来部署可按需缩放的计算资源。 在使用此解决方案的生产环境中,将工作负载部署在 Azure VM 上。 然后减少对 VM 和 Azure 资产的不必要暴露。

  • Microsoft Entra ID 是一种基于云的标识服务,可控制对 Azure 和其他云应用的访问。

  • PIM 是一项 Microsoft Entra 服务,用于管理、控制和监视对重要资源的访问权限。 在此解决方案中,此服务:

    • 限制永久管理员对标准和自定义特权角色的访问权限。
    • 提供对自定义角色的基于标识的即时访问。
  • JIT VM 访问 是 Defender for Cloud 的一项功能,可提供对 VM 的基于网络的即时访问。 此功能会将拒绝规则添加到保护 VM 网络接口或包含 VM 网络接口的子网的 Azure 网络安全组。 该规则通过阻止与 VM 的不必要通信来将 VM 的攻击面降至最低。 当用户请求访问 VM 时,该服务会向网络安全组添加临时允许规则。 由于允许规则的优先级高于拒绝规则,因此用户可以连接到 VM。 Azure Bastion 最适合连接到 VM。 但用户也可以使用直接 RDP 或 SSH 会话。

  • Azure RBAC 是一个授权系统,可提供对 Azure 资源的精细访问管理。

  • Azure RBAC 自定义角色提供一种用于扩展 Azure RBAC 内置角色的方法。 你可使用这些角色在满足组织需求的级别分配权限。 这些角色支持 PoLP。 它们仅授予用户出于用户目的所需的权限。 若要在此解决方案中访问 VM,用户需要获得以下权限:

    • 使用 Azure Bastion。
    • 在 Defender for Cloud 中请求 JIT VM 访问。
    • 读取或列出 VM。
  • Microsoft Entra 条件访问 是 Microsoft Entra ID 用来控制对资源的访问权限的工具。 条件访问策略支持零信任安全模型。 在此解决方案中,策略确保只有经过身份验证的用户才能访问 Azure 资源。

  • Azure Bastion 为网络中的 VM 提供安全、无缝的 RDP 和 SSH 连接。 在此解决方案中,Azure Bastion 连接使用 Microsoft Edge 或其他 Internet 浏览器传输 HTTPS 或端口 443 上的安全流量的用户。 Azure Bastion 设置与 VM 的 RDP 连接。 RDP 和 SSH 端口不会向 Internet 或用户源公开。

    Azure Bastion 在此解决方案中是可选的。 用户可以使用 RDP 协议直接连接到 Azure VM。 如果确实在 Azure 虚拟网络中配置了 Azure Bastion,请设置名为 AzureBastionSubnet 的单独子网。 然后将网络安全组与该子网关联。 在该网络安全组中,指定 HTTPS 流量的源,例如用户的本地 IP 无类别域际路由选择 (CIDR) 块。 通过使用此配置,可以阻止不是来自用户本地环境的连接。

    作者

本文由 Microsoft 维护, 它最初是由以下贡献者撰写的。

主要作者:

若要查看非公开的 LinkedIn 个人资料,请登录到 LinkedIn。

后续步骤