解决方案构想
本文介绍了一种解决方案构想。 云架构师可以通过本指南来帮助可视化此体系结构的典型实现的主要组件。 以本文为起点,设计一个符合工作负荷特定要求的架构合理的解决方案。
此解决方案提供了一种多层策略,用于保护 Azure 中的虚拟机 (VM),确保可访问性,同时最大限度减少用于管理和行政用途的攻击面。
此解决方案符合 Microsoft 的安全建议,包含 Microsoft Azure 和 Entra 服务提供的多种保护机制,遵循设计安全、默认安全和安全操作的原则。
设计安全。 该解决方案通过实施最小特权原则和职责分离概念,实现对虚拟机的非持久性细粒度访问。 这可确保仅出于合法原因授予对虚拟机的授权,从而减少未经授权访问的风险。
默认保护。 发往虚拟机的入站流量已锁定,仅在需要时允许连接。 此默认安全状况可最大限度减少许多常见网络攻击(例如暴力攻击和分布式拒绝服务 (DDoS) 攻击)的风险。
安全操作。 实施持续监视并投资改进安全控制,以满足当前和未来的威胁,是至关重要的。 使用多种 Azure 服务和功能,例如 Microsoft Entra Privileged Identity Management (PIM)、Microsoft Defender for Cloud 实时 (JIT) VM 访问功能、Azure Bastion、Azure 基于角色的访问控制 (Azure RBAC) 自定义角色。 作为一种选择,你应考虑 Microsoft Entra 条件访问,以规范对 Azure 资源和 Azure 密钥库的访问,以便在未与 Entra ID 或 Active Direcory 域服务集成的情况下存储虚拟机本地密码。
可能的用例
深层防御是该体系结构背后的前提。 在授予用户对 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 或本地环境中公开。
体系结构
下载此体系结构的 Visio 文件。
数据流
身份验证和访问决策:用户是通过 Microsoft Entra ID 进行身份验证的,以访问 Azure 门户、Azure REST API、Azure PowerShell 或 Azure CLI。 如果身份验证成功,Microsoft Entra 条件访问策略就会生效。 该策略用于验证用户是否符合某些条件。 示例包括使用受管理设备或从已知位置登录。 如果用户满足条件,条件访问将通过 Azure 门户或其他接口授予用户对 Azure 的访问权限。
基于标识的即时访问:在授权期间,Microsoft Entra PIM 为用户分配类型为合格的自定义角色。 该资格仅限于所需的资源,并且是一个有时间限制的角色,而不是永久的角色。 在指定的期限内,用户通过 Azure PIM 接口请求激活此角色。 该请求可以触发其他操作,例如启动审批工作流或提示用户进行多重身份验证以验证标识。 在审批工作流中,需要另一个人批准该请求。 否则,不会为用户分配自定义角色,也无法继续下一步。
基于网络的即时访问:经过身份验证和授权后,自定义角色将暂时链接到用户的标识。 然后,用户请求 JIT VM 访问。 该访问将在 RDP 端口 3389 或 SSH 端口 22 上打开来自 Azure Bastion 子网的连接。 该连接直接运行到 VM 网络接口卡 (NIC) 或 VM NIC 子网。 Azure Bastion 使用该连接打开内部 RDP 会话。 会话仅限于 Azure 虚拟网络,不会向公共 Internet 公开。
连接到 Azure VM:用户使用临时令牌访问 Azure Bastion。 通过此服务,用户将建立与 Azure VM 的间接 RDP 连接。 该连接仅在有限的时间内有效。 如果密码作为机密存储在密钥库中,并且配置了足够的 RBAC 权限来限制对适当用户帐户的访问,则用户可以从 Azure 密钥库中检索密码。
组件
此解决方案使用以下组件:
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) 块。 通过使用此配置,可以阻止不是来自用户本地环境的连接。Azure 密钥库提供了一种安全机制,用于将 VM 用户的密码存储为机密。 可以配置机密 RBAC,以便只有能够访问 VM 的用户帐户有权检索它。 在 Azure 门户的虚拟机边栏选项卡上,从密钥保管库检索密码值可以通过 Azure API(例如使用 Azure CLI)或从 Azure 门户来完成,因为 Azure 密钥库与 Azure Bastion 用户界面集成。
作者
本文由 Microsoft 维护, 它最初是由以下贡献者撰写的。
主要作者:
- Husam Hilal | 高级云解决方案架构师
若要查看非公开的 LinkedIn 个人资料,请登录到 LinkedIn。
后续步骤
- 在 Privileged Identity Management 中激活 Azure 资源角色
- 了解实时 (JIT) VM 访问
- 配置 Bastion 并通过浏览器连接到 Windows VM
- 使用 Microsoft Entra 多重身份验证保护用户登录事件