应用零信任原则来加密基于 Azure 的网络通信
本文提供了应用零信任原则的指导,以通过以下方式加密来往于 Azure 环境的以及 Azure 环境中的网络通信。
零信任原则 | 定义 | 满足者 |
---|---|---|
显式验证 | 始终根据所有可用的数据点进行身份验证和授权。 | 对 Azure VPN 网关连接使用条件访问策略,对用户到虚拟机连接使用安全外壳 (SSH) 和远程桌面协议 (RDP)。 |
使用最低权限访问 | 使用实时和恰好足够的访问权限 (JIT/JEA)、基于风险的自适应策略和数据保护,来限制用户访问。 | 将 Microsoft Enterprise Edge (MSEE) 设备配置为通过直接端口将静态连接关联密钥 (CAK) 用于 Azure ExpressRoute,并使用托管标识对 ExpressRoute 线路资源进行身份验证。 |
假定数据泄露 | 最大限度地减少影响范围,并对访问进行分段。 验证端对端加密并使用分析来获取可见性、驱动威胁检测并改善防御。 | 使用加密方法和协议保护网络流量,这些加密方法和协议确保传输中数据的机密性、完整性和真实性。 使用 Azure Monitor 提供 ExpressRoute 网络性能指标和警报。 使用 Azure Bastion 从 Bastion 服务管理各个会话,并删除会话或强制断开连接。 |
本文是演示如何为 Azure 网络应用零信任原则的一系列文章的一部分。
网络流量的加密级别有:
网络层加密
保护和验证从 Internet 或本地网络到 Azure VNet 和虚拟机的通信
保护和验证 Azure VNet 中的以及跨 Azure VNet 的通信
应用程序层加密
- 对 Azure Web 应用程序的保护
对 Azure 虚拟机上运行的工作负载的保护
参考体系结构
下图显示了此零信任指导的参考体系结构,该指导用于在本地或 Internet 上的用户和管理员之间以及 Azure 环境中的组件之间进行加密通信,以执行本文中描述的步骤。
在图中,数字对应于以下部分中的步骤。
本文包含哪些内容?
零信任原则应用于整个参考体系结构中,从 Internet 或本地网络上的用户和管理员到 Azure 云中的用户和管理员。 下表介绍了用于确保在此体系结构中加密网络流量的建议。
步长 | 任务 | 已应用零信任原则 |
---|---|---|
1 | 实施网络层加密。 | 显式验证 使用最低权限访问 假定数据泄露 |
2 | 保护和验证从本地网络到 Azure VNet 的通信。 | 显式验证 假定数据泄露 |
3 | 保护和验证 Azure VNet 中的以及跨 Azure VNet 的通信。 | 假定数据泄露 |
4 | 实施应用程序层加密。 | 显式验证 假定数据泄露 |
5 | 使用 Azure Bastion 保护 Azure 虚拟机。 | 假定数据泄露 |
步骤 1:实施网络层加密
将零信任原则应用于本地和 Azure 环境时,网络层加密至关重要。 当网络流量通过 Internet 时,应始终假定攻击者可能会截获流量,并且数据在到达目标之前可能会被公开或更改。 由于服务提供商控制数据如何通过 Internet 进行路由,因此你希望确保数据从离开你的本地网络那一刻起直至到达 Microsoft 的云,其隐私和完整性都得到维护。
下图显示了用于实施网络层加密的参考体系结构。
在接下来的两部分中,我们将讨论 Internet 协议安全性 (IPsec) 和媒体访问控制安全性 (MACsec),哪些 Azure 网络服务支持这些协议,以及如何确保正在使用这些协议。
IPsec
IPsec 是为 Internet 协议 (IP) 通信提供安全性的一组协议。 它使用一组加密算法对网络数据包进行身份验证和加密。 IPSec 是用于建立虚拟专用网 (VPN) 的安全封装协议。 IPsec VPN 隧道由两个阶段组成,第 1 阶段称为主模式,第 2 阶段称为快速模式。
IPsec 的第 1 阶段是隧道建立,在此阶段中,对等方协商 Internet 密钥交换 (IKE) 安全关联的参数,例如加密、身份验证、哈希和 Diffie-Hellman 算法。 为了验证其标识,对等方将交换一个预先共享的密钥。 IPsec 的第 1 阶段可以采用两种模式运行:主模式或主动模式。 Azure VPN 网关支持两个版本的 IKE、IKEv1 和 IKEv2,并且仅在主模式下运行。 主模式可确保对 Azure VPN 网关与本地设备之间的连接标识进行加密。
在 IPsec 的第 2 阶段中,对等方协商用于数据传输的安全参数。 在此阶段中,两个对等方就加密和身份验证算法、安全关联 (SA) 的生存期值以及流量选择器 (TS) 达成一致,流量选择器定义哪些流量通过 IPsec 隧道进行加密。 在第 1 阶段中创建的隧道充当此协商的安全通道。 IPsec 可以使用身份验证标头 (AH) 协议或封装安全有效负载 (ESP) 协议来保护 IP 数据包。 AH 提供完整性和身份验证,而 ESP 还提供机密性(加密)。 IPsec 的第 2 阶段可以在传输模式或隧道模式下运行。 在传输模式下,只会加密 IP 数据包的有效负载,而在隧道模式下,则会加密整个 IP 数据包,并添加一个新的 IP 标头。 可以基于 IKEv1 或 IKEv2 建立 IPsec 的第 2 阶段。 当前的 Azure VPN 网关 IPsec 实现只有在隧道模式下才支持 ESP。
支持 IPsec 的一些 Azure 服务包括:
-
站点到站点 VPN 连接
VNet 到 VNet 连接
点到站点连接
-
VPN 站点
用户 VPN 配置
无需修改任何设置来为这些服务启用 IPsec。 默认情况下,它们处于启用状态。
MACsec 和 Azure Key Vault
MACsec (IEEE 802.1AE) 是一种网络安全标准,它通过在以太网链路上提供身份验证和加密,在数据链路层应用“假定违反”零信任原则。 MACsec 假定任何网络流量(即使在同一局域网中)都可能被恶意参与者破坏或拦截。 MACsec 使用在两个网络接口之间共享的安全密钥验证和保护每一帧。 此配置只能在两台支持 MACsec 的设备之间实现。
MACsec 配置了连接关联,它们是网络接口用来创建入站和出站安全通道的一组属性。 创建后,通过这些通道的流量通过两个 MACsec 安全链路进行交换。 MACsec 有两种连接关联模式:
- 静态连接关联密钥 (CAK) 模式:MACsec 安全链路是使用预先共享的密钥(它包括连接关联密钥名称 (CKN) 和分配的 CAK)建立的。 在链路的两端都要配置这些密钥。
- 动态 CAK 模式:安全密钥是使用 802.1x 身份验证流程动态生成的,该流程可以使用集中式身份验证设备,例如远程身份验证拨入用户服务 (RADIUS) 服务器。
当你为 Azure ExpressRoute 配置了直接端口时,Microsoft Enterprise Edge (MSEE) 设备通过将 CAK 和 CKN 存储在 Azure Key Vault 中来支持静态 CAK。 若要访问 Azure Key Vault 中的值,请配置托管标识来对 ExpressRoute 线路资源进行身份验证。 此方法遵循“使用最低权限访问”零信任原则,因为只有经过授权的设备才能从 Azure Key Vault 访问密钥。 有关详细信息,请参阅如何在 ExpressRoute Direct 端口上配置 MACsec。
步骤 2:保护和验证从本地网络到 Azure VNet 的通信
随着云迁移在各种规模的企业中越来越普遍,混合连接正发挥着关键作用。 不仅保护本地网络与 Azure 之间的网络通信至关重要,验证和监视该通信同样至关重要。
下图显示了用于保护和验证从本地网络到 Azure VNet 的通信的参考体系结构。
Azure 提供了两个选项来将本地网络连接到 Azure VNet 中的资源:
通过 Azure VPN 网关,你可以使用 IPsec 创建站点到站点 VPN 隧道,以加密和验证在中央或远程办事处的网络与 Azure VNet 之间进行的网络通信。 它还允许各个客户端建立点到站点连接,以在没有 VPN 设备的情况下访问 Azure VNet 中的资源。 为了遵守零信任,请为 Azure VPN 网关连接配置 Microsoft Entra ID 身份验证和条件访问策略,以验证连接设备的标识和合规性。 有关详细信息,请参阅将 Microsoft Tunnel VPN 网关与条件访问策略配合使用。
Azure ExpressRoute 提供了高带宽专用连接,使你可以在连接提供商的协助下将本地网络扩展到 Azure。 由于网络流量不会通过公共 Internet 进行传输,因此默认情况下数据不会加密。 若要通过 ExpressRoute 加密流量,请配置 IPsec 隧道。 但是,请记住,当通过 ExpressRoute 运行 IPsec 隧道时,带宽仅限于隧道带宽,你可能需要运行多个隧道来匹配 ExpressRoute 线路带宽。 有关详细信息,请参阅通过 ExpressRoute 专用对等互连建立的站点到站点 VPN 连接 - Azure VPN 网关。
如果你使用 ExpressRoute Direct 端口,可以在建立 BGP 对等方时启用身份验证,或者配置 MACsec 来保护第 2 层通信,从而提高网络安全性。 MACsec 为以太网帧提供加密,确保你的边缘路由器与 Microsoft 的边缘路由器之间的数据机密性、完整性和真实性。
Azure ExpressRoute 还支持使用 Azure Monitor 提供网络性能指标和警报。
加密可以保护你的数据免受未经授权的拦截,但它也引入了一个额外的处理层来加密和解密网络流量,这可能会影响性能。 通过 Internet 的网络流量也可能是不可预测的,因为它必须通过多个网络设备,这可能会引入网络延迟。 为了避免性能问题,Microsoft 建议使用 ExpressRoute,因为它提供了可靠的网络性能和你可以根据工作负载自定义的带宽分配。
在 Azure VPN 网关与 ExpressRoute 之间做出决定时,请考虑以下问题:
- 你在本地网络与 Azure 之间访问哪些类型的文件和应用程序? 你是否需要一致的带宽来传输大量数据?
- 你的应用程序是否需要一致且较低的延迟才能实现最佳性能?
- 你是否需要监视混合连接的网络性能和运行状况?
如果你对其中任何一个问题的回答为是,那么 Azure ExpressRoute 应该是你将本地网络连接到 Azure 的主要方法。
ExpressRoute 和 Azure VPN 网关可以共存的常见场景有两种:
- 可以使用 Azure VPN 网关将分支机构连接到 Azure,同时使用 ExpressRoute 连接总公司。
- 如果你的 ExpressRoute 服务中断,则你也可以使用 Azure VPN 网关作为总公司到 Azure 的备份连接。
步骤 3:保护和验证 Azure VNet 中的以及跨 Azure VNet 的通信
Azure 中的流量具有基础级别的加密。 当流量在不同区域中的 VNet 之间移动时,Microsoft 使用 MACsec 在数据链路层加密和验证对等互连流量。
下图显示了用于保护和验证 Azure VNet 中的以及跨 Azure VNet 的通信的参考体系结构。
但是,仅仅加密不足以确保零信任。 你还应该验证和监视 Azure VNet 中的以及跨 Azure VNet 的网络通信。 借助 Azure VPN 网关或网络虚拟设备 (NVA),可以在 VNet 之间进行进一步的加密和验证,但这不是一种常见的做法。 Microsoft 建议你将网络拓扑设计为使用集中式流量检查模型,该模型可以强制执行细粒度策略并检测异常。
为了减少配置 VPN 网关或虚拟设备的开销,请为某些虚拟机大小启用 VNet 加密功能,以加密和验证主机级别的虚拟机之间、VNet 内以及跨VNet 对等互连的流量。
步骤 4:在应用程序层实施加密
应用程序层加密是零信任的一个关键因素,它要求在用户与 Web 应用程序或设备进行交互时对所有数据和通信进行加密。 应用程序层加密确保只有经过验证且可信的实体才能访问 Web 应用程序或设备。
下图显示了用于在应用程序层实施加密的参考体系结构。
应用程序层最常见的加密示例之一是安全超文本传输协议 (HTTPS),它对 Web 浏览器与 Web 服务器之间的数据进行加密。 HTTPS 使用传输层安全性 (TLS) 协议来加密客户端-服务器通信,并使用 TLS 数字证书来验证网站或域的标识和可信性。
应用程序层安全性的另一个示例是安全外壳 (SSH) 和远程桌面协议 (RDP),该协议用于加密客户端与服务器之间的数据。 这些协议还支持多重身份验证和条件访问策略,以确保只有经过授权且符合条件的设备或用户可以访问远程资源。 有关保护与 Azure 虚拟机的 SSH 和 RDP 连接的信息,请参阅步骤 5。
对 Azure Web 应用程序的保护
你可以使用 Azure Front Door 或 Azure 应用程序网关来保护 Azure Web 应用程序。
Azure Front Door
Azure Front Door 是一项全局分发服务,它通过 Microsoft 的边缘位置优化向最终用户进行的内容交付。 通过 Web 应用程序防火墙 (WAF) 和专用链接服务等功能,你可以在 Microsoft 网络边缘检测并阻止对你的 Web 应用程序的恶意攻击,同时使用 Microsoft 内部网络私密地访问你的数据源。
为了保护你的数据,将使用 HTTPS 保护发往 Azure Front Door 终结点的流量,并使用端到端 TLS 来保护所有进出其终结点的流量。 从客户端到源以及从源到客户端的流量都是加密的。
Azure Front Door 处理 HTTPS 请求,并确定其配置文件中的哪个终结点具有关联的域名。 然后,它会检查路径并确定哪个路由规则与请求的路径匹配。 如果启用了缓存,则 Azure Front Door 会检查其缓存,以查看是否存在有效的响应。 如果不存在有效的响应,则 Azure Front Door 会选择可以提供所请求内容的最佳源。 在将请求发送到源之前,可以向请求应用一个规则集,以更改标头、查询字符串或原始目的地。
Azure Front Door 同时支持前端和后端 TLS。 前端 TLS 对客户端与 Azure Front Door 之间的流量进行加密。 后端 TLS 对 Azure Front Door 与源之间的流量进行加密。 Azure Front Door 支持 TLS 1.2 和 TLS 1.3。 可以将 Azure Front Door 配置为使用自定义 TLS 证书或使用由 Azure Front Door 管理的证书。
注意
还可以使用专用链接功能连接到 NVA 以执行进一步的数据包检查。
Azure 应用程序网关
Azure 应用程序网关是在第 7 层运行的区域性负载均衡器。 它基于 HTTP URL 属性路由和分发 Web 流量。 它可以使用三种不同的方法来路由和分发流量:
- 仅 HTTP:应用程序网关以未加密的形式接收传入的 HTTP 请求并将其路由到合适的目的地。
- SSL 终止:应用程序网关在实例级别解密传入的 HTTPS 请求,检查这些请求,并将其路由到目的地。
- 端到端 TLS:应用程序网关在实例级别解密传入的 HTTPS 请求,检查这些请求,并在将其路由到目的地之前重新加密它们。
最安全的选项是端到端 TLS,它可以要求使用身份验证证书或受信任的根证书来加密和传输敏感数据。 它还要求将这些证书上传到后端服务器,并确保应用程序网关知道这些后端服务器。 有关详细信息,请参阅使用应用程序网关配置端到端 TLS。
此外,本地用户或另一个 VNet 中虚拟机上的用户可以使用具有相同 TLS 功能的应用程序网关的内部前端。 除了加密之外,Microsoft 建议始终为终结点启用 WAF 以实现更多前端保护。
步骤 5:使用 Azure Bastion 保护 Azure 虚拟机
Azure Bastion 是一种托管的 PaaS 服务,可用于通过 TLS 连接安全地连接到虚拟机。 可以从 Azure 门户或通过原生客户端与虚拟机上的专用 IP 地址建立此连接。 使用 Bastion 的优势包括:
- Azure 虚拟机不需要公共 IP 地址。 连接是通过 HTTPS 的 TCP 端口 443 进行的,并且可以穿越大多数防火墙。
- 虚拟机受保护,不受端口扫描的影响。
- Azure Bastion 平台不断更新并受保护,不受零日漏洞攻击。
使用 Bastion,你可以从单个入口点控制与虚拟机的 RDP 和 SSH 连接。 你可以在 Azure 门户中管理 Bastion 服务的各个会话。 如果你怀疑用户不应该连接到正在进行的远程会话,也可以删除或强制断开该会话。
下图显示了用于使用 Azure Bastion 保护 Azure 虚拟机的参考体系结构。
若要保护 Azure 虚拟机,请部署 Azure Bastion 并开始使用 RDP 和 SSH 通过虚拟机的专用 IP 地址连接到虚拟机。
推荐的培训
- 使用 VPN 网关将本地网络连接到 Azure
- 使用 ExpressRoute 将本地网络连接到 Microsoft 全球网络
- Azure Front Door 简介
- 配置 Azure 应用程序网关
- Azure Bastion 简介
后续步骤
有关将零信任应用于 Azure 网络的其他信息,请参阅:
- 细分基于 Azure 的网络通信
- 获取网络流量可见性
- 停用旧式网络安全技术
- 使用零信任保护网络
- Azure 中的分支虚拟网络
- Azure 中的中心虚拟网络
- 使用 Azure PaaS 服务的分支虚拟网络
- Azure 虚拟 WAN
参考
请参阅以下链接,了解本文所述的各种服务和技术。