对于将基础结构即服务 (IaaS) 应用部署到 Azure,有许多安全注意事项。 本文根据基于虚拟机的工作负荷和混合网络基础结构的参考体系结构,以专注于基于 Azure 安全基础知识的 Azure 高度敏感 IaaS 工作负荷的安全性。
另请参阅 Azure 虚拟机安全概述以及 Azure 中 IaaS 工作负荷的安全性最佳做法。
Azure VM
Azure 的计算平台基于计算机虚拟化。 虚拟机监控程序在每个 Azure 节点或网络终结点的物理硬件上运行,并在节点中创建一个可变数量的来宾 Hyper-V 虚拟机 (VM)。 所有用户代码都在 VM 上执行。 有关基本 Azure VM 部署说明,请参阅在 Azure 上运行 Linux VM,或在 Azure 上运行 Windows VM。 大多数部署过程对于这两个操作系统 (OS) 是相同的,但特定于 OS 的工具(如磁盘加密)可能有所不同。
可以使用 Microsoft Defender for Cloud 管理 VM 修补程序管理以及部署和监视反恶意软件工具。 或者,可以管理自己的或第三方的修补和反恶意软件工具,这在将现有基础结构扩展或迁移到 Azure 时很常见。
Microsoft 在 Azure 平台中提供基本的分布式拒绝服务 (DDoS) 保护。 具有公共终结点的应用可以使用标准 Azure DDoS 防护以享受其他保护。 但是,高度敏感的工作负荷通常没有公共终结点,且只能通过虚拟专用网络 (VPN) 或租用线路从特定位置进行访问。
N 层体系结构
许多 IaaS 应用程序由多个层组成,例如 Web 层、业务层和数据层,这些层托管在多个 VM 上。 在 Azure VM 上部署 n 层应用体系结构的关键方面包括:
- 高可用性 (HA)。 HA 应用的可用时间必须超过 99.9%。 将分层 VM 放置在不同的 Azure 可用性区域中可确保 HA,因为可用性区域会跨越一个或多个数据中心,可抵御数据中心故障,从而提供复原能力。 不支持可用性区域的区域可使用可用性集,从而在多个独立的硬件节点之间分配 VM。
- 负载均衡。 负载均衡器在 VM 之间分配流量,以平衡负载并在 VM 发生故障时实现复原能力。 如果应用程序管理负载均衡并且单个 VM 对于调用方而言是已知的,则不需要使用负载均衡器。
- 虚拟网络。 虚拟网络和子网将网络分段,从而简化安全管理和高级路由。
- 域名系统 (DNS)。 Azure DNS 提供高度可用且安全的 DNS 服务。 通过 Azure DNS 中的专用区域可以在虚拟网络中使用自定义域。
备份和还原
为了防止人为错误、恶意数据删除和勒索软件,至少应备份数据层 VM。 如果 Azure 备份可以访问 Azure Key Vault 中的加密密钥,则其可以备份和还原加密的 VM。
对于 Web 和业务层,可以使用虚拟机规模集自动缩放规则自动销毁已遭入侵的 VM,并从基本映像部署新的 VM 实例。
计算隔离
在每个 Azure 节点或网络终结点上,虚拟机监控程序和特殊的根 OS 确保来宾 VM 无法访问物理主机服务器,并且用户代码仅在来宾 VM 上执行。 这样的隔离可以防止用户获取对系统的原始读取、写入或执行访问权限,减轻共享资源的风险。 Azure 通过虚拟机监控程序和高级 VM 放置算法防范所有已知的旁道攻击和近邻干扰。 有关详细信息,请参阅计算隔离。
对于高度敏感的工作负荷,可以使用独立 VM 或专用主机添加针对旁道攻击的额外保护。
独立 VM
独立 VM 是较大的 VM 大小,独立于特定硬件类型,并专用于单个客户。 使用独立 VM 大小可保证你的 VM 是该特定服务器实例上唯一运行的 VM。 还可以使用对嵌套虚拟机的 Azure 支持来进一步细分独立 VM 的资源。
独立 VM 的最小规格为 64 个虚拟 CPU 核心和 256 GiB 内存。 这些 VM 的规格远远超过大多数 n 层应用程序的需求,并且可能会产生较大的成本开销。 为了降低开销,可以在具有嵌套虚拟化的单个 VM 上运行多个应用层,也可以在不同的进程或容器中运行多个应用层。 仍需在可用性区域中部署不同的 VM 来实现复原能力,并在单独的 VM 上运行外围安全区域 (DMZ) 设备。 出于经济原因而在一个基础设施上组合多个应用也可能与组织应用隔离政策相冲突。
随着 Azure 区域的功能随时间推移而扩展,Azure 还可以在提前一年进行通知的情况下移除特定 VM 大小的隔离保证。
Azure 专用主机
Azure 专用主机是高度敏感工作负荷的首选计算隔离解决方案。 专用主机是专用于一个客户以托管多个 VM 的物理服务器。 除了独立 VM,专用主机还允许你控制维护和 VM 放置,以避免近邻干扰。
专用主机与独立虚拟机具有相同的最小大小,并在大小方面具有很多相同的注意事项。 但是,专用主机可以托管位于不同虚拟网络中的 VM,以满足应用程序隔离策略。 你仍应在其他主机上运行 DMZ VM,以防止来自 DMZ 中遭到入侵的虚拟机的任何旁道攻击。
加密
数据加密是工作负荷保护工作的重要组成部分。 加密对信息进行编码,只有经过授权的接收方才能使用密钥或证书对其进行解码。 加密包括用于静态加密数据的磁盘加密,以及用于网络间的传输中加密的传输层安全性 (TLS)。
Azure Key Vault
可将加密密钥和证书存储在 Azure Key Vault 中以对其进行保护,Azure Key Vault 是一款云硬件安全模块 (HSM) 解决方案,已通过美国联邦信息处理标准 (FIPS) 140-2 2 级认证。 有关仅允许授权应用程序和用户访问密钥保管库的最佳做法,请参阅安全访问密钥保管库。
若要保护 Key Vault 中的密钥,可启用软删除以确保已删除的密钥可恢复。 为了获得额外的保护,可以将单个密钥备份到可用于还原密钥的加密文件,也可以备份到同一地理位置的另一个 Azure 区域。
在 VM 上托管 SQL Server 时,可以使用用于 Microsoft Azure Key Vault 的 SQL Server 连接器获取用于透明数据加密 (TDE)、列级加密 (CLE) 和备份加密的密钥。 有关详细信息,请参阅在 Azure 虚拟机上配置 SQL Server 的 Azure Key Vault 集成。
Azure 磁盘加密
Azure 磁盘加密使用 BitLocker 外部密钥保护器来为 Azure VM 的 OS 和数据磁盘提供卷加密,并能与 Azure Key Vault 集成,帮助你控制和管理磁盘加密密钥与机密。 每个 VM 生成自己的加密密钥,并将其存储在 Azure Key Vault 中。 若要配置 Azure Key Vault 以启用 Azure 磁盘加密,请参阅为 Azure 磁盘加密创建和配置密钥保管库。
对于高度敏感的工作负荷,还应使用密钥加密密钥 (KEK) 增加一层保护。 指定 KEK 时,Azure 磁盘加密会使用该密钥包装加密机密,然后将机密写入 Key Vault。 可以在 Azure Key Vault 中生成 KEK,但更安全的方法是在本地 HSM 中生成密钥并将其导入 Azure Key Vault。 这种情况通常被称为自带密钥,简称 BYOK。 由于导入的密钥不能离开 HSM 边界,因此在 HSM 中生成密钥可确保你能完全控制加密密钥。
有关受 HSM 保护的密钥的详细信息,请参阅如何为 Azure Key Vault 生成和传输受 HSM 保护的密钥。
流量加密
网络协议(如 HTTPS)使用证书加密传输中的数据。 客户端到应用程序流量通常使用来自受信任的证书颁发机构 (CA) 的证书。 内部应用可以使用来自内部 CA 或公共 CA(如 DigiCert 或 GlobalSign)的证书。 层级到层级的通信通常使用内部 CA 颁发的证书或自签名证书。 Azure Key Vault 可以容纳以上所有类型的证书。 有关创建不同证书类型的详细信息,请参阅证书创建方法。
Azure Key Vault 可以充当用于层级到层级的流量的自签名证书 CA。 Key Vault VM 扩展在 VM 上提供对指定证书的监视和自动刷新,根据具体用例决定是否使用私钥。 要使用 Key Vault VM 扩展,请参阅适用于 Linux 的 Key Vault 虚拟机扩展和适用于 Windows 的 Key Vault 虚拟机扩展。
Key Vault 还可以存储不使用证书的网络协议的密钥。 自定义工作负荷可能需要编写自定义脚本扩展,从 Key Vault 检索密钥并存储该密钥以供应用程序使用。 应用还可以使用 VM 的托管标识直接从 Key Vault 检索机密。
网络安全
网络安全组 (NSG) 筛选 Azure 虚拟网络中的资源之间的流量。 NSG 安全规则基于 IP 地址和端口允许或拒绝在 Azure 资源间出入的流量。 默认情况下,NSG 阻止来自 Internet 的入站流量,但允许从 VM 到 Internet 的出站连接。 为了防止意外产生的出站流量,添加一个优先级尽可能低的自定义规则 4096 以阻止所有入站和出站流量。 然后可以添加优先级较高的规则以允许特定流量。
NSG 为现有连接创建流记录,并根据流记录的连接状态允许或拒绝通信。 通过流记录,可使 NSG 处于不同状态。 例如,如果针对通过端口 443 访问的任何地址指定了出站安全规则,则不需要再指定入站安全规则来进行响应。 如果通信是从外部发起的,则只需指定入站安全规则。
大多数 Azure 服务都允许使用虚拟网络服务标记而不是 NSG。 服务标记表示 Azure 服务中的一组 IP 地址前缀,有助于最大程度地降低频繁更新网络安全规则所带来的复杂性。 Azure Key Vault 服务标记可允许 VM 从 Azure Key Vault 检索证书、密钥和机密。
控制网络安全的另一种方法是使用虚拟网络流量路由和强制隧道。 Azure 自动创建系统路由,并将路由分配到虚拟网络中的每个子网。 无法创建或删除系统路由,但可以使用自定义路由替代某些系统路由。 自定义路由允许通过网络虚拟设备 (NVA)(例如防火墙或代理)路由流量,或者删除意外的流量,这与使用 NSG 阻止流量相似。
可以使用 Azure 防火墙等 NVA 来允许、阻止和检查网络流量。 Azure 防火墙是托管的高可用性平台防火墙服务。 还可以通过 Azure 市场部署第三方 NVA。 若要使这些 NVA 高度可用,请参阅部署高度可用的网络虚拟设备。
应用程序安全组
若要筛选虚拟网络中的应用层之间的流量,请使用应用程序安全组 (ASG)。 ASG 允许将网络安全配置为应用程序的结构的扩展,能对 VM 进行分组并根据分组定义网络安全策略。 可以大量重复使用安全策略,而无需手动维护显式 IP 地址。
因为 ASG 应用于网络接口而不是子网,所以它们启用微分段。 可以严格控制哪些 VM 可以相互通信,甚至阻止同一层级中的 VM 之间的流量,并能通过从该 VM 中删除 ASG 来轻松隔离 VM。
混合网络
混合体系结构将本地网络与 Azure 等公有云连接起来。 可通过多种方式将本地网络连接到 Azure 中运行的应用程序:
- 通过 Internet 使用公共终结点。 可以依赖标识、传输层安全性 (HTTPS) 和应用程序网关来保护应用程序,也可以将防火墙结合使用。 但对于高度敏感的工作负荷,不建议通过 Internet 公开公共终结点。
- Azure 或第三方 VPN 网关。 可以使用 Azure VPN 网关将本地网络连接到 Azure。 流量仍通过 Internet 传输,但在传输时会通过使用 TLS 的加密隧道。 如果存在 Azure VPN 网关不支持的特定要求,还可以在 VM 中运行第三方网关。
- ExpressRoute。 ExpressRoute 连接通过第三方连接提供商使用专用连接。 专用连接可将本地网络扩展到 Azure,并提供可伸缩性和可靠的服务级别协议 (SLA)。
- 使用 ExpressRoute 和 VPN 实现故障转移。 此选项在正常情况下使用 ExpressRoute,但如果 ExpressRoute 线路中连接丢失,则故障转移到 VPN 连接,从而提供更高的可用性。
- 通过 ExpressRoute 建立的 VPN 连接。 此选项最适合高度敏感的工作负荷。 ExpressRoute 提供具有可伸缩性和可靠性的专用线路,VPN 提供额外的一层保护,可终止特定 Azure 虚拟网络中的加密连接。
有关在不同类型的混合连接之间进行选择的更多指南,请参阅选择用于将本地网络连接到 Azure 的解决方案。
部署 DMZ
连接本地和 Azure 环境使本地用户能够访问 Azure 应用程序。 外围网络或外围安全区域 (DMZ) 为高度敏感的工作负荷提供额外的保护。
与 Azure 和本地数据中心之间的网络 DMZ 中的体系结构类似,该体系结构将所有 DMZ 和应用程序服务部署在同一个虚拟网络中,通过 NSG 规则以及用户定义的路由来隔离 DMZ 和应用程序子网。 即使本地网关不可用,此体系结构也可以通过公共 Internet 提供管理子网来管理应用。 但对于高度敏感的工作负荷,应仅允许在不受限方案中绕过网关。 更好的解决方案是使用 Azure Bastion,这样就可以直接从 Azure 门户进行访问,同时对公共 IP 地址的公开进行限制。
还可以使用实时 (JIT) VM 访问进行远程管理,同时对公共 IP 地址的公开进行限制。 使用 JIT VM 访问时,NSG 会默认阻止远程桌面协议 (RDP) 和安全外壳 (SSH)。 根据请求,JIT VM 访问只在指定的时间范围启用端口,也可能按照特定的 IP 地址或范围启用端口。 JIT 访问也适用于仅具有专用 IP 地址的 VM。 可以使用 Azure Bastion 阻止流向 VM 的流量,直到启用 JIT VM 访问。
若要部署更多应用程序,可以在 Azure 中使用中心辐射型网络拓扑,在中心虚拟网络中具有 DMZ 且在分支虚拟网络中具有应用程序。 中心虚拟网络可以包含 VPN 和/或 ExpressRoute 网关、防火墙 NVA、管理主机、标识基础结构和其他共享服务。 分支虚拟网络通过虚拟网络对等互连连接到中心。 Azure 虚拟网络不允许通过中心从一个分支向另一个分支传递路由。 只能通过中心中的防火墙设备传递分支到分支的流量。 此体系结构有效地将应用程序彼此隔离开来。
多区域部署
业务连续性和灾难恢复可能需要跨多个 Azure 区域部署应用程序,这可能会影响数据驻留和安全性。 有关多区域部署的参考体系结构,请参阅在多个 Azure 区域中运行 N 层应用程序以实现高可用性。
区域对
Azure 地理位置指至少包含一个 Azure 区域的划定世界区域,每个区域各有一个或多个数据中心。 在区域对中,每个 Azure 区域都与同一地理位置内的另一个区域配对。 区域对不会同时更新,如果灾难影响了这两个区域,则其中一个区域会优先恢复联机状态。 为了保持业务连续性,如果你在多个区域中进行部署,则至少应该将高度敏感应用部署至区域对。
有关详细信息,请参阅业务连续性和灾难恢复 (BCDR):Azure 配对区域。 白皮书通过 Azure 实现合规的数据驻留和安全性讨论了数据驻留,以及如何满足数据驻留要求。
区域之间的复制
在 IaaS 体系结构中,在区域之间复制数据是应用程序的责任。 最常见的复制方案使用内置在数据库服务器产品中的数据库复制技术,例如 SQL Server Always On 可用性组、Oracle Data Guard 或 MySQL 复制。
在 IaaS 数据库服务器之间设置复制并不简单,需要考虑到业务连续性要求。 Azure 数据库服务(如 Azure SQL 数据库、Azure Database for MySQL 和 Azure Cosmos DB)可简化区域之间的复制,但可能无法满足高度敏感工作负荷的安全要求。
有关多区域 SQL Server 和 Oracle 部署的详细信息和指南,请参阅:
跨区域对等互连
可以使用全局虚拟网络对等互连在不同区域中的虚拟网络之间实现安全通信。 全球对等互连的工作原理与区域内对等互连相同。 区域之间的流量通过 Microsoft 主干传输,不会遍历 Internet,并且与其他流量隔离。 为了获得更高的安全性,可以在这两个区域中部署 VPN NVA,并使用用户定义的路由强制让区域间的流量经过 NVA,与部署 DMZ 的方法类似。
故障转移流量路由
使用公共终结点,可以使用Traffic 管理器或 Azure Front Door 将流量定向至主动-主动故障转移配置中的活动区域或最近的区域。 但流量管理员和 Azure Front Door 都需要使用公共终结点来监视可用性,其相应的 DNS 条目是公开的。 对于高度敏感的工作负荷,替代解决方案是在本地部署 DNS,并将条目更改为用于故障转移的活动区域。
管理和治理
保护高度敏感的 IaaS 应用不仅需要部署正确的体系结构和实施网络安全规则。 因为云环境很容易更改,所以务必确保仅能使用特定权限在安全策略边界内进行更改。 例如,必须阻止恶意参与者更改网络安全规则来允许来自 Internet 的流量。
若要在 Azure 中部署工作负荷,需要一个或多个管理帐户。 保护管理帐户对于保护工作负荷至关重要。 有关详细信息,请参阅确保 Microsoft Entra ID 中混合部署和云部署的特权访问安全性。
使用管理子网中的资源,仅向需要管理该层的人员授予应用层访问权限。 例如,可以将 Microsoft Identity Manager 与 Microsoft Entra ID 配合使用。 但对于云原生方案,首选 Microsoft Entra ID Privileged Identity Management (PIM)。
可通过其他几种方法来控制 Azure 角色和策略:
- Azure 基于角色的访问控制 (Azure RBAC),使你可以为用户分配内置角色或自定义角色,让用户仅拥有自己所需的权限。 可以将 Azure RBAC 与 PIM 结合使用以实现受审核的审批工作流,在受限试阶段内提升权限。
- 策略强制实施公司规则、标准和 SLA。 Azure Policy 是一项用于创建、分配和管理策略的 Azure 服务,该服务还能评估资源是否符合策略。
- Azure 蓝图结合了角色分配、策略分配和部署模板,以定义一组可复制的 Azure 资源,可实现并遵循组织的标准、模式和要求。 蓝图是一种声明性方法,可协调资源模板和其他项目的部署。 可以自行创建蓝图,或者利用现有蓝图。 例如,ISO 27001 共享服务蓝图部署了一个共享服务中心,你可以根据自己组织的要求对其进行修改和扩展。
监视
Microsoft Defender for Cloud 提供监视和警报,有助于维护环境的安全性。 免费服务会自动检查缺少 OS 修补程序和安全配置错误等漏洞,以及基本网络安全。 标准付费版本提供其他功能,例如行为分析、自适应网络强化和 JIT VM 访问。 有关功能的完整列表,请参阅适用于虚拟机的功能覆盖范围。 Defender for Cloud 还为 Azure Key Vault 等其他资源提供威胁防护。
可以使用 Azure Monitor 进一步监视和分析。 若要监视标识和访问,可以将 Microsoft Entra ID 活动日志路由到 Azure Monitor。 还可以监视 VM、网络和 Azure 防火墙,并使用强大的日志查询功能分析导入的日志。 可以将 Azure Monitor 与 安全信息和事件管理器 (SIEM) 集成,集成时可采用第三方 SIEM 或 Microsoft Sentinel。
相关资源
- 有关 n 层体系结构的详细信息,请参阅 Azure 中包含 Apache Cassandra 的 Linux N 层应用程序。
- 有关使用 Azure Key Vault 虚拟机扩展的端到端教程,请参阅在 Azure 中使用 Key Vault 中存储的 SSL 证书保护 Windows 虚拟机上的 Web 服务器。
- 若要详细了解 Azure 磁盘加密,请参阅适用于 Linux VM 的 Azure 磁盘加密或适用于 Windows VM 的 Azure 磁盘加密。
- 有关 Azure 网络安全的详细信息,请参阅 Azure 网络安全概述。