Azure 允许在共享物理基础结构上运行应用程序和虚拟机(VM)。 在云环境中运行应用程序的主要经济效益之一是能够在多个客户之间分配共享资源的成本。 这种多租户的做法通过以低成本在不同客户之间共享资源来提高效率。 遗憾的是,它还引入了共享物理服务器和其他基础结构资源的风险,以运行可能属于任意和潜在恶意用户的敏感应用程序和 VM。
本文概述了 Azure 如何针对恶意和非恶意用户提供隔离。 它通过为架构师提供各种隔离选择,作为构建云解决方案的指南。
租户级别隔离
云计算的主要优势之一是同时在众多客户之间共享、通用基础结构的概念,从而导致规模经济。 此概念称为多租户。 Microsoft持续工作,以确保 Microsoft Cloud Azure 的多租户体系结构支持安全性、机密性、隐私、完整性和可用性标准。
在启用云的工作区中,租户是拥有和管理该云服务的特定实例的客户端或组织。 通过使用 Microsoft Azure 提供的标识平台,租户是组织注册 Azure 云服务时接收并拥有的 Microsoft Entra ID 的专用实例。
每个 Microsoft Entra 目录都是不同的,并与其他 Microsoft Entra 目录分开。 就像公司办公大楼是特定于组织的安全资产一样,Microsoft Entra 目录是一种安全资产,仅供组织使用。 Microsoft Entra 体系结构隔离了客户数据和身份信息,避免混合存放。 此设计意味着一个Microsoft Entra 目录的用户和管理员不能意外或恶意访问另一个目录中的数据。
Azure 租赁
Azure 租户(Azure 订阅)是指客户和计费关系以及Microsoft Entra ID 中的唯一租户。 Microsoft Entra ID 及其 Azure 基于角色的访问控制 在 Microsoft Azure 中提供租户级别隔离。 每个 Azure 订阅都会与一个 Microsoft Entra 目录关联。
该目录中的用户、组和应用程序可以管理 Azure 订阅中的资源。 可以使用 Azure 门户、Azure 命令行工具和 Azure 管理 API 分配这些访问权限。 安全边界在逻辑上隔离Microsoft Entra 租户,以便客户不能恶意或意外访问或破坏共同租户。 Microsoft Entra ID 在隔离的网段上的“裸机”服务器上运行,其中主机级别的数据包筛选和 Windows 防火墙会阻止不需要的连接和流量。
访问 Microsoft Entra ID 中的数据需要通过安全令牌服务(STS)进行用户身份验证。 授权系统使用有关用户是否存在、启用状态和角色的信息来确定此会话中是否为此用户授权了对目标租户的请求访问权限。
租户是独立的容器,这些容器之间没有关系。
除非通过联合身份验证或预配来自其他租户的用户帐户由租户管理员授予,否则不同租户之间不存在任何访问权限。
对构成 Microsoft Entra 服务的服务器的物理访问以及直接访问 Microsoft Entra ID 的后端系统受到限制。
Microsoft Entra 用户无权访问物理资产或位置,因此他们无法绕过以下所述的逻辑 Azure RBAC 策略检查。
对于诊断和维护需求,请使用采用即时特权提升系统的运作模型。 Microsoft Entra Privileged Identity Management(PIM)引入了符合条件的管理员的概念。符合条件的管理员 是指需要不时获得特权访问权限的用户,而非每天都需要。 该角色处于非活动状态,直到用户需要访问权限,然后他们完成激活过程,并在预定的时间内成为活动管理员。
Microsoft Entra ID 在其自己受保护的容器中托管每个租户,使用的策略和权限针对各租户单独拥有和管理的容器,并保存在该容器内。
从门户一直到永久性存储,租户容器的概念深入贯彻于目录服务的每一层。
即使来自多个Microsoft Entra租户的元数据存储在同一物理磁盘上,除目录服务定义的租户容器外,它们之间没有任何关系,而这些定义又是由租户管理员决定的。
Azure 基于角色的访问控制 (Azure RBAC)
Azure 基于角色的访问控制(Azure RBAC) 通过为 Azure 提供精细的访问管理,帮助你共享 Azure 订阅中可用的各种组件。 借助 Azure RBAC,可分隔组织内的职责,并根据用户进行作业的需求授予访问权限。 与其在 Azure 订阅或资源中为每个人提供不受限制的权限,不如只允许某些特定的操作。
Azure RBAC 有三种适用于所有资源类型的基本角色:
所有者对所有资源具有完全访问权限,包括将访问权限委派给其他用户的权限。
参与者 可以创建和管理所有类型的 Azure 资源,但不能向其他人授予访问权限。
读者 可以查看现有的 Azure 资源。
可以通过 Azure 中的其他 Azure 角色对特定的 Azure 资源进行管理。 例如,虚拟机参与者角色允许用户创建和管理虚拟机。 但不会向用户授予对虚拟机连接的 Azure 虚拟网络或子网的访问权限。
Azure 内置角色列出了 Azure 中可用的角色。 它们指定了每个内置角色向用户授予的操作和范围。 若要定义自己的角色以便进一步控制,请参阅如何生成 Azure RBAC 中的自定义角色。
Microsoft Entra ID 的其他一些功能包括:
使用 Microsoft Entra ID 即可对 SaaS 应用程序启用 SSO,不管这些应用程序在何处托管。 某些应用程序会与 Microsoft Entra ID 联合起来进行身份验证,其他应用程序则使用密码 SSO。 联合应用程序还可以支持用户预配和密码存储。
Microsoft Entra ID 通过联合身份验证(使用 Active Directory 联合身份验证服务)、同步以及本地目录复制方式提供标识即服务。
Microsoft Entra 多重身份验证要求用户使用移动应用、电话呼叫或短信验证登录。 它可与 Microsoft Entra ID 一起使用,以帮助使用多重身份验证服务器以及使用 SDK 的自定义应用程序和目录来保护本地资源。
Microsoft Entra 域服务可让用户将 Azure 虚拟机加入一个 Active Directory 域,且无需部署域控制器。 用户可以使用其公司的 Active Directory 凭据登录到这些虚拟机中,并使用组策略管理已加入域的虚拟机,以便在所有 Azure 虚拟机上强制实施安全基准措施。
Microsoft Entra 外部 ID 为面向使用者的应用程序提供高度可用的全局标识管理服务,可扩展到数亿个标识。 它可以跨移动平台和 Web 平台进行集成。 使用者只需使用现有社交帐户或创建凭据,即可通过可自定义的体验登录到所有应用程序。
从Microsoft管理员隔离和数据删除
Microsoft 采取强硬措施保护数据免受不适当的访问或未经授权的用户使用。 联机服务条款提供契约性承诺,管理对数据的访问,并支持这些操作流程和控制措施。
- Microsoft 工程师没有访问云端数据的默认权限。 而是只在必要时在管理监督下获取访问权限。 将谨慎控制并记录该访问权限,并在不再需要时撤回。
- Microsoft 可能雇佣其他公司代表其提供有限的服务。 分包商只能访问客户数据,以提供Microsoft雇用他们的服务,并且禁止将其用于任何其他目的。 此外,它们以合同方式绑定到保持客户的信息的机密性。
Microsoft和认可的审核公司定期验证经审核的认证(如 ISO/IEC 27001)的业务服务。 这些审核员执行示例审核,以证明访问仅用于合法业务目的。 用户始终都可随时访问自己的客户数据,而不论出于什么原因。
如果用户删除了任何数据,Microsoft Azure 也将删除该数据,包括所有缓存或备份副本。 对于范围内服务,删除发生在保留期结束后的 90 天内。 ( 联机服务条款 的数据处理条款部分定义了范围内服务。
如果用于存储的磁盘驱动器出现硬件故障,Microsoft在将驱动器返回给制造商进行更换或修复之前安全地 擦除或销毁 驱动器。 驱动器上的数据会被覆盖,以确保无法通过任何方式恢复数据。
计算隔离
Microsoft Azure 提供了各种基于云的计算服务,其中包括各种可自动纵向扩展和缩减的计算实例和服务,以满足应用程序或企业的需求。 这些计算实例和服务在多个级别提供隔离,以保护数据,而不会牺牲客户所需的配置灵活性。
独立虚拟机大小
Azure 计算提供独立于特定硬件类型并专用于单个客户的虚拟机大小。 独立大小在特定的硬件生成上有效并运行,当硬件生成停用时或新硬件生成可用时,它们将被弃用。
独立虚拟机大小最适合需要与其他客户工作负荷高度隔离的工作负荷。 有时需要满足合规性和法规要求。 使用独立大小可保证你的虚拟机是在特定服务器实例上唯一运行的虚拟机。
另外,由于独立大小的 VM 很大,客户可以选择使用 对嵌套虚拟机的 Azure 支持来细分这些 VM 的资源。
当前的独立虚拟机产品/服务包括:
- Standard_E80ids_v4
- Standard_E80is_v4
- Standard_E104i_v5
- Standard_E104is_v5
- Standard_E104id_v5
- Standard_E104ids_v5
- Standard_M192is_v2
- Standard_M192ims_v2
- Standard_M192ids_v2
- Standard_M192idms_v2
- Standard_F72s_v2
- Standard_M832ids_16_v3
- Standard_M832is_16_v3
- Standard_M896ixds_24_v3
- Standard_M896ixds_32_v3
- Standard_M1792ixds_32_v3
注意
由于硬件淘汰,独立 VM 大小的生命周期有限。
弃用独立的 VM 大小
独立 VM 大小的寿命受硬件限制。 Azure 会在这些大小的正式弃用日期之前 12 个月发出提醒,并且会提供更新的独立产品以供你考虑。 以下大小已宣布停用。
| 大小 | 隔离停用日期 |
|---|---|
| Standard_DS15_v2 | 2021 年 5 月 15 日 |
| Standard_D15_v2 | 2021 年 5 月 15 日 |
| Standard_E64i_v3 | 2022 年 2 月 15 日 |
| Standard_E64is_v3 | 2022 年 2 月 15 日 |
| Standard_M192is_v2 | 2027 年 3 月 31 日 |
| Standard_M192ims_v2 | 2027 年 3 月 31 日 |
| Standard_M192ids_v2 | 2027 年 3 月 31 日 |
| Standard_M192idms_v2 | 2027 年 3 月 31 日 |
客户还可以选择利用对嵌套虚拟机的 Azure 支持,对这些独立的虚拟机资源进一步细分。
专用主机
除了前面部分所述的独立主机以外,Azure 还提供了专用主机。 Azure 中的专用主机是一项服务,它提供能够承载一个或多个虚拟机的物理服务器,专用于单个 Azure 订阅。 专用主机在物理服务器级别提供硬件隔离。 您的主机上没有其他虚拟机。 在同一数据中心部署专用主机,它们与其他非隔离主机共享相同的网络和底层存储基础结构。 有关详细信息,请参阅 Azure 专用主机的详细概述。
根虚拟机与客体虚拟机之间的 Hyper-V 和根操作系统隔离
Azure 的计算平台基于计算机虚拟化。 所有客户代码都在 Hyper-V 虚拟机中运行。 在每个 Azure 节点(或网络终结点)上,虚拟机管理程序直接在硬件上运行,并将节点划分为可变数量的客户虚拟机(VM)。
每个节点还有一个运行宿主操作系统的特殊根 VM。 虚拟机监控程序和根操作系统管理根虚拟机与来宾虚拟机的隔离,以及来宾虚拟机之间的隔离。 此虚拟机监控程序和根操作系统的配合利用了微软几十年的操作系统安全经验,以及最近从微软Hyper-V获得的学习成果,提供了对来宾VM的强隔离。
Azure 平台使用虚拟化的环境。 用户实例作为无法访问物理主机服务器的独立虚拟机运行。
Azure 虚拟机监控程序的行为类似于微内核。 它使用名为 VM 总线的共享内存接口将来宾虚拟机的所有硬件访问请求传递到主机进行处理。 此体系结构可防止用户获取对系统的原始读取、写入或执行访问权限,并降低共享系统资源的风险。
高级 VM 放置算法及侧通道攻击防护
任何跨 VM 攻击都包括两个步骤:在同一主机上放置一个攻击者控制的 VM 作为牺牲品 VM 之一,并破坏隔离边界以窃取敏感的牺牲品信息,或者故意或因贪婪影响其性能。 Microsoft Azure 通过采用先进的 VM 放置算法,并防范所有已知的侧信道攻击(包括影响邻近的 VM),在两个层面上提供保护。
Azure Fabric 控制器
Azure Fabric 控制器将基础结构资源分配给租户工作负荷,并管理从主机到虚拟机的单向通信。 VM 放置算法非常复杂,几乎不可能在物理主机级别预测。
在 Azure 中,根 VM 运行一种名为根 OS 的强化操作系统,它托管一个织物代理 (FA)。 FAs 在客户 VM 上的来宾操作系统中管理来宾代理(GA),并管理存储节点。
Azure 虚拟机监控程序、根 OS/FA 和客户 VM/GA 的集合包含一个计算节点。 结构控制器(FC)管理 FA。 FC 存在于计算节点和存储节点之外。 单独的 FCS 管理计算和存储群集。 如果客户在运行应用程序时更新其配置文件,FC 将与 FA 通信。 FA 联系 GA,GA 会通知应用程序配置更改。 发生硬件故障时,FC 会自动找到可用的硬件,并在该处重启 VM。
结构控制器到代理的通信是单向的。 代理实施受 SSL 保护的服务,仅响应来自控制器的请求。 它无法启动与控制器或其他特权内部节点的连接。 FC 将处理所有响应,就像是它们不受信任一样。
隔离从根 VM 扩展到来宾 VM,从一个来宾 VM 扩展到另一个来宾 VM。 计算节点也独立于存储阶段,可增强保护。
虚拟机监控程序和主机 OS 提供网络数据包筛选器。 这些筛选器有助于确保不受信任的虚拟机无法生成欺骗流量或接收未发送到它们的流量。 它们将流量定向到受保护的基础结构终结点,并阻止发送或接收不适当的广播流量。
由织物控制器代理配置的用于隔离虚拟机的附加规则
默认情况下,创建虚拟机时会阻止所有流量。 然后,结构控制器代理将数据包筛选器配置为添加规则和例外,以允许授权的流量。
计划两类规则:
- 计算机配置或基础结构规则: 默认情况下,将阻止所有通信。 添加例外,以允许虚拟机发送和接收 DHCP 和 DNS 流量。 虚拟机还可以将流量发送到“公共”Internet,并将流量发送到同一 Azure 虚拟网络和 OS 激活服务器中的其他虚拟机。 虚拟机允许的传出目标列表不包括 Azure 路由器子网、Azure 管理服务和其他 Microsoft 资源。
- 角色配置文件: 此文件基于租户的服务模型定义入站访问控制列表(ACL)。
VLAN 隔离
每个群集包含三个 VLAN:
- 主 VLAN - 互连不受信任的客户节点
- FC VLAN - 包含受信任的 FC 及支持系统
- 设备 VLAN - 包含受信任的网络和其他基础结构设备
从 FC VLAN 到主 VLAN 的通信是允许的,但不能从主 VLAN 发起到 FC VLAN 的通信。 还会阻止从主 VLAN 到设备 VLAN 的通信。 此体系结构可确保即使运行客户代码的节点遭到入侵,它也无法攻击 FC 或设备 VLAN 上的节点。
存储隔离
计算和存储之间的逻辑隔离
作为其基本设计的一部分,Microsoft Azure 将基于 VM 的计算与存储分隔开。 这种分离使计算和存储能够独立扩展,从而更轻松地提供多租户和资源隔离。
因此,Azure 存储在单独的硬件上运行,与 Azure 计算没有网络连接,但逻辑连接除外。 此设计意味着在创建虚拟磁盘时,系统不会为其整个容量分配磁盘空间。 相反,系统会创建一个表,该表将虚拟磁盘上的地址映射到物理磁盘上的区域。 此表最初为空。 首次在虚拟磁盘上写入数据时,系统会在物理磁盘上分配空间,并在表中放置指向它的指针。
使用存储访问控制进行隔离
Azure 存储中的访问控制 使用简单的访问控制模型。 每个 Azure 订阅都可以创建一个或多个存储帐户。 每个存储帐户都有一个用于控制对该存储帐户中所有数据的访问的密钥。
可以通过 SAS(共享访问签名)令牌来控制对包括表的 Azure 存储数据 的访问,该令牌授予范围内的访问权限。 通过查询模板(URL)创建 SAS,并使用 SAK(存储帐户密钥)对其进行签名。 可以向另一个进程(即委托)提供 已签名的 URL 。 然后,委托的进程可以填写查询的详细信息,并发出存储服务的请求。 通过使用 SAS,可以授予对客户端的基于时间的访问权限,而无需透露存储帐户的密钥。
通过使用 SAS,可以向客户端授予在指定时间段内对存储帐户中对象的有限权限,并具有一组指定的权限。 无需共享帐户访问密钥即可授予这些受限权限。
IP 级别存储隔离
可以为受信任客户端建立防火墙,定义 IP 地址范围。 通过使用 IP 地址范围,只有具有定义范围内的 IP 地址的客户端才能连接到 Azure 存储。
可以使用网络机制将专用的流量隧道分配给 IP 存储,防止未经授权的用户使用 IP 存储数据。
加密
Azure 提供以下类型的加密来保护数据:
- 传输中加密
- 静态加密
传输中加密
传输中的加密可在跨网络传输时保护数据。 通过使用 Azure 存储,可以使用以下方法保护数据:
- 传输级别加密,例如从 Azure 存储传入或传出数据时使用的 HTTPS。
- 线路加密,例如 Azure 文件共享的 SMB 3.0 加密。
- 客户端加密,在将数据传输到存储之前加密数据,以及从存储传出数据后解密数据。
静态加密
对许多组织而言, 静态数据加密 是实现数据隐私性、合规性和数据所有权的必要措施。 提供静态数据的加密的 Azure 功能包括:
主机加密
重要
Azure 磁盘加密计划于 2028 年 9 月 15 日停用。 在该日期之前,可以继续使用 Azure 磁盘加密,而不会中断。 2028 年 9 月 15 日,已启用 ADE 的工作负荷将继续运行,但 VM 重启后加密磁盘将无法解锁,从而导致服务中断。
使用 主机端加密 用于新 VM。 所有已启用 ADE 的 VM(包括备份)必须在停用日期之前迁移到主机上的加密,以避免服务中断。 有关详细信息,请参阅 从 Azure 磁盘加密迁移到主机加密 。
主机加密 通过加密 VM 主机级别的数据,为 VM 数据提供端到端加密。 默认情况下,它使用平台管理的密钥,但如果需要更大的控制,可以选择使用存储在 Azure Key Vault 或 Azure Key Vault 托管 HSM 中的客户管理的密钥。
主机加密使用符合 FIPS 140-2 标准的 AES 256 加密在 VM 主机级别提供服务器端加密。 此加密在不使用 VM CPU 资源的情况下发生,并为以下项提供端到端加密:
- 临时磁盘
- OS 和数据磁盘缓存
- 数据流到 Azure 存储
主机加密的主要优势:
- 无性能影响:加密发生在主机级别,而不使用 VM CPU 资源
- 广泛的 VM 支持:大多数 VM 系列和大小都受支持
- 客户管理的密钥:可选与 Azure Key Vault 或托管 HSM 集成,以便进行密钥控制
- 平台管理的密钥默认为:加密不需要其他配置
有关详细信息,请参阅 主机加密 和 托管磁盘加密选项概述。
SQL 数据库隔离
Microsoft SQL 数据库 是基于 Microsoft SQL Server 引擎构建的基于云的关系数据库服务。 它提供高度可用、可扩展的多租户数据库服务,在帐户级别、基于地理位置/区域和网络的可预测数据隔离,这一切都实现了几乎零管理。
SQL 数据库应用程序模型
从应用程序的角度,SQL 数据库提供如下层次结构,每个级别都包含一个或多个下级。
帐户和订阅是用于将计费和管理关联的 Microsoft Azure 平台。
逻辑 SQL 服务器和数据库是特定于 SQL 数据库的概念,通过使用 SQL 数据库以及提供的 OData 和 TSQL 接口或者通过 Azure 门户进行管理。
SQL 数据库中的服务器不是物理实例或 VM 实例,而是数据库、共享管理和安全策略的集合,它们存储在所谓的“逻辑主”数据库中。
逻辑主数据库包括:
- 用于连接到服务器的 SQL 登录名
- 防火墙规则
同一服务器中数据库的计费和使用情况相关信息不保证位于群集中的同一物理实例中,应用程序在连接时必须提供目标数据库名称。
从客户的角度看,服务器是在某个地理区域中创建的,但实际上,服务器是在该区域内的一个群集中创建的。
通过网络拓扑进行隔离
创建服务器并注册其 DNS 名称时,DNS 名称指向放置服务器的特定数据中心中所谓的 网关 VIP 地址。
VIP(虚拟 IP 地址)后面有一组无状态网关服务。 通常,当多个数据源(主数据库、用户数据库等)之间需要协调时,网关会参与其中。 网关服务实现以下功能:
- TDS 连接代理。 此函数包括定位后端集群中的用户数据库,执行身份验证过程,然后将 TDS 数据包转发到后端并返回。
- 数据库管理。 此函数包括实现工作流集合来处理 CREATE、ALTER 和 DROP 数据库作。 可通过探查 TDS 数据包或显式 OData API 调用数据库操作。
- CREATE、ALTER 和 DROP 身份验证和用户操作
- 通过 OData API 执行服务器管理操作
网关后面的层称为 后端。 此层以高可用性方式存储所有数据。 每个数据片段都属于 分区 或 故障转移单元,每个分区至少有三个副本。 SQL Server 引擎存储并复制副本,故障转移系统通常称为 构造 对其进行管理。
通常,作为安全预防措施,后端系统不会与其他系统进行出站通信。 此通信保留给前端(网关)层中的系统。 作为深层防御机制,网关层计算机对后端计算机具有有限的特权,可最大限度减少攻击。
按计算机功能和访问进行隔离
SQL 数据库由针对不同计算机功能运行的服务组成。 SQL 数据库分为 后端 云数据库和 前端 (网关/管理)环境,流量的一般原则只进入后端,而不是流出。前端环境可以与其他服务的外部世界通信,通常后端只有有限的权限(足以调用它需要调用的入口点)。
网络隔离
Azure 部署具有多层网络隔离。 下图显示了 Azure 提供给客户的各种网络隔离层。 这些层包括 Azure 平台本身的本机功能和客户定义的功能。 从 Internet 入站,Azure DDoS 防护提供针对 Azure 的大规模攻击的隔离。 下一层隔离是客户定义的公共 IP 地址(终结点),用于确定哪些流量可以通过云服务传递到虚拟网络。 本机 Azure 虚拟网络隔离可确保与其他所有网络完全隔离,而且流量只能流经用户配置的路径和方法。 这些路径和方法就是下一个安全层,在该层中,可以使用 NSG、UDR 和网络虚拟设备来创建隔离边界,以保护受保护网络中的应用程序部署。
流量隔离:虚拟网络是 Azure 平台上的流量隔离边界。 一个虚拟网络中的虚拟机(VM)无法直接与不同虚拟网络中的 VM 通信,即使这两个虚拟网络都是由同一客户创建的。 隔离是一个非常关键的属性,可确保客户 VM 与通信在虚拟网络中保持私密性。
子网 根据 IP 范围在虚拟网络中提供额外的隔离层。 出于组织安全性考虑,可将一个虚拟网络划分为多个子网。 部署到虚拟网络中的子网(相同或不同)的 VM 和 PaaS 角色实例可以相互通信,而无需进行任何额外的配置。 还可以根据安全规则配置 网络安全组(NSG), 以允许或拒绝发到 VM 实例的网络流量。 可以将 NSG 与子网或附加到 VM 的单个网络接口相关联。 将 NSG 与子网相关联时,安全规则将应用于该子网中的所有 VM 实例。
后续步骤
了解 网络安全组。 网络安全组筛选虚拟网络中 Azure 资源之间的网络流量。 可以使用安全规则根据源、目标、端口和协议限制发到子网或虚拟机的流量。
了解 Azure 中的虚拟机隔离。 Azure 计算提供独立于特定硬件类型并专用于单个客户的虚拟机大小。