你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Microsoft Azure包括根据公司安全性和合规性需求保护数据的工具。 本文重点介绍:
- 如何在Microsoft Azure对静态数据进行保护。
- 参与数据保护实现的各种组件。
- 不同密钥管理保护方法的利弊。
静态加密是常见的安全要求。 Azure默认通过平台管理密钥加密静态数据。 此方法为组织提供自动加密,无需自定义密钥管理解决方案的风险或成本。 组织可以通过使用平台管理密钥来依赖Azure管理静态加密,或者在需要对加密密钥和密钥管理策略进行额外控制时,也可以使用客户管理的密钥。
什么是静态加密?
加密是用于保护数据的机密性的数据的安全编码。 Azure静态加密设计使用对称加密,根据简单的概念模型快速加密和解密大量数据:
- 对称加密密钥在写入存储时对数据进行加密。
- 同一密钥在数据准备用于内存时解密。
- 不同的分区可以使用不同的密钥。
- 将密钥存储在安全位置,采用基于身份的访问控制和审计策略。 如果数据加密密钥存储在安全位置之外,使用存放在安全位置的密钥加密密钥进行加密。
在实践中,密钥管理和控制方案以及规模和可用性保证都需要其他构造。 以下部分介绍了Microsoft Azure静态加密概念和组件。
静态加密的目的
静止加密保护存储的数据。 针对静止数据的攻击包括试图获得存储数据的硬件的物理访问,然后攻破所包含的数据。 在此类攻击中,服务器硬盘可能在维护期间被错误处理,这允许攻击者删除硬盘驱动器。 攻击者随后将硬盘驱动器置于其控制之下的计算机,以尝试访问数据。
静止加密通过确保数据在磁盘上加密,有助于防止攻击者访问未加密的数据。 如果攻击者获取了包含加密数据的硬盘驱动器但未获取加密密钥,则攻击者必须破解加密才能读取数据。 这种攻击比访问硬盘上未加密的数据复杂得多,也更耗费资源。 因此,许多组织将静止加密列为高优先级要求。
组织的数据治理和合规工作也可能要求静态加密。 行业和政府法规如HIPAA、PCI和FedRAMP为数据保护和加密要求制定了具体保障。 其中一些法规要求静止加密。 有关Microsoft对FIPS 140验证方法的更多信息,请参见联邦信息处理标准(FIPS)140。
除了满足合规要求以外,静态加密还能提供深层防御保护。 Microsoft Azure为服务、应用程序和数据提供合规的平台。 此外,它还提供综合性的设施和物理安全性、数据访问控制和审核。 然而,重要的是提供额外的“重叠”安全措施,以防其他安全措施失效。 静态加密提供此类安全措施。
Microsoft 在云服务中提供静止加密选项,并让客户控制加密密钥和密钥使用日志。 Microsoft 也在努力默认加密所有客户静态数据。
密钥管理选项
Azure提供了两种管理加密密钥的主要方法:
平台管理密钥(默认)(有时也称为服务托管密钥):Azure 自动处理加密密钥管理的所有方面,包括密钥生成、存储、轮换和备份。 此方法提供静态数据加密,客户无需进行任何配置,并且默认在 Azure 服务中启用。 平台管理的密钥提供最高级别的便利性,无需额外的成本或管理开销。
客户管理密钥(可选):需要更大加密密钥控制权的客户可选择使用Azure 密钥保管库或Azure 密钥保管库 Managed HSM自行管理密钥。 这种方式允许客户控制密钥生命周期、访问策略和加密操作。 客户管理的密钥以增加管理责任和复杂性为代价提供额外的控制。 对于有监管或合同要求,要求密钥材料物理存放在 Microsoft 基础设施之外的组织,Azure 密钥保管库 托管 HSM 还支持外部密钥管理(预览版),将密钥加密密钥(KEK)保存在客户运营的硬件安全模块(HSM)中,完全置于 Azure 之外。
这些方法之间的选择取决于组织的安全要求、合规性需求和作首选项。 大多数组织都可以依赖平台管理的密钥进行可靠的加密保护,而具有特定法规或安全要求的组织可能会选择客户管理的密钥。
Azure静态加密组件
如前所述,静止加密通过秘密加密密钥保持磁盘上的数据保持加密。 为了实现这一目标,Azure 服务需要安全的密钥创建、存储、访问控制和加密密钥管理。 虽然细节可能有所不同,但 Azure 服务的静止加密实现使用如下图所示的术语。
Azure 密钥保管库
对于静态加密模型来说,最重要的是加密密钥的存储位置以及对这些密钥的访问控制。 你需要高度保护密钥,但使它们可由指定用户管理,并可供特定服务使用。 对于 Azure 服务,Azure 密钥保管库(高级层)或 Azure 密钥保管库 Managed HSM 是推荐的密钥存储解决方案,并提供跨服务的通用管理体验。 可以在密钥保管库中存储和管理密钥,并为用户提供或服务对密钥保管库的访问权限。 Azure 密钥保管库 支持客户创建的密钥和导入的客户密钥,用于客户管理的加密密钥场景。
Microsoft Entra ID
你可以赋予 Microsoft Entra 账户使用存储在 Azure 密钥保管库 中的密钥的权限,无论是管理这些密钥,还是用于加密和解密操作访问。
使用密钥层次结构进行信封加密
在静态加密实现中使用多个加密密钥。 将加密密钥存储在 Azure 密钥保管库 中,可以确保密钥访问的安全和集中密钥管理。 然而,相比于每次数据操作都与 密钥保管库 交互,在服务本地访问加密密钥对于批量加密和解密而言效率更高。 这种方法允许更强的加密和更好的性能。 限制使用单个加密密钥可降低密钥泄露的风险,以及必须替换密钥时重新加密的成本。 Azure静止加密模型使用信封加密,其中KEK加密数据加密密钥(DEK)。 该模型形成了一个关键层级结构,更好地满足性能和安全需求:
- 数据加密密钥(DEK) ——一种对称的AES-256密钥,用于加密分区或数据块,有时也称为数据密钥。 单个资源可以有多个分区和多个 DEK。 用不同的密钥加密每个数据块会使密码分析攻击更加困难。 将 DEK 保留在负责加密和解密数据的服务本地,可最大限度地提升性能。
- 密钥加密密钥(KEK) ——一种通过包络加密(也称为封装)来加密DEK的密钥。 通过使用一个从未离开 密钥保管库 的 KEK,你可以加密并控制 DEK。 有权访问 KEK 的实体可以不同于需要 DEK 的实体。 实体可以代理对 DEK 的访问,以限制每个 DEK 对特定分区的访问。 由于 KEK 是解密 DEK 所必需的,因此客户可以通过禁用 KEK,以加密方式擦除 DEK 和数据。 禁用KEK会使所有依赖服务无法访问,如Azure SQL 透明数据加密(TDE)数据库、拥有客户管理密钥的Azure 存储账户以及Azure 磁盘加密保护的虚拟机。 禁用操作也只会影响该密钥所在的保险库。 如果密钥被备份并恢复到另一个保险库,恢复后的副本依然完全可用,不受禁用操作的影响。 更多信息请参见 备份安全考虑。
资源提供者和应用实例将加密后的DEK存储为元数据。 只有有权访问 KEK 的实体才能解密这些 DEK。 Azure 支持不同的密钥存储模型。 有关详细信息,请参阅数据加密模型。
当服务在本地缓存用于活动加密操作的 DEK 时,缓存密钥受Azure平台安全控制的保护,包括 host 级计算隔离和进程级保护。 缓存操作密钥是一种可用性和性能机制——密钥保管库中的KEK仍然是信任的根,密钥撤销则管理对加密数据的访问。
Microsoft 云服务中的静态加密
你可以在三种云模型中使用Microsoft云服务:基础设施即服务(IaaS)、平台即服务(PaaS)和软件即服务(SaaS)。 以下示例演示了它们如何适应每个模型:
- 软件服务(SaaS)提供云托管应用,如Microsoft 365。
- 平台服务(PaaS)为客户应用提供云功能,如存储、分析和服务总线功能。
- 基础设施服务(IaaS)托管客户部署的操作系统和应用程序,这些系统也能使用其他云服务。
适合 SaaS 客户的静态加密
软件即服务 (SaaS) 客户通常会在每个服务中启用或提供静态加密。 Microsoft 365有多个选项供客户验证或启用静态加密。 有关 Microsoft 365 服务的信息,请参阅 Microsoft 365 中的加密。
适合 PaaS 客户的静态加密
平台即服务(PaaS)客户通常将其数据存储在存储服务中,例如Blob 存储。 但是,数据也可能缓存或存储在应用程序执行环境中,例如虚拟机。 若要查看适用的静态数据加密选项,请检查数据加密模型,针对您所使用的存储和应用程序平台进行检查。
适合 IaaS 客户的静态加密
基础设施即服务(IaaS)客户可以使用多种服务和应用。 IaaS 服务可以通过使用主机加密,在其 Azure 托管的虚拟机中启用静态加密。
加密的存储
与 PaaS 一样,IaaS 解决方案可以使用其他 Azure 服务来存储静态加密的数据。 在这些情况下,你可以启用所使用的每个 Azure 服务提供的静态加密支持。 数据加密模型 列出了主要的存储、服务和应用平台,以及支持的静态加密模型。
加密的计算
Azure 管理的磁盘、快照和映像默认通过存储服务加密和平台管理密钥进行加密。 此默认加密不需要客户配置或额外费用。 更全面的加密解决方案确保虚拟机主机不会以未加密形式持久化数据。 在虚拟机处理数据时,系统可以将数据持久化为 Windows 页面文件或 Linux 交换文件、崩溃转储或应用日志。 为了确保这些数据在静止时也被加密,IaaS应用可以在Azure IaaS虚拟机上使用加密技术。 默认情况下,主机加密使用平台管理密钥,但您也可以选择配置客户管理密钥以实现额外控制。
自定义静态加密
IaaS 应用程序应尽可能使用所使用的任何 Azure 服务提供的主机级加密和静态数据加密选项。 在某些情况下,比如不规则的加密需求或非基于Azure的存储,IaaS应用的开发者可能需要实现静止加密。 IaaS 解决方案的开发人员可以使用某些 Azure 组件更好地与 Azure 管理和客户期望集成。 具体来说,开发者应使用 Azure 密钥保管库 提供安全的密钥存储,并为客户提供符合 Azure 平台服务的密钥管理选项。 自定义解决方案还应使用 Azure 管理身份,使服务账户能够访问加密密钥。 有关开发者的信息,请参见 Azure 密钥保管库 开发者指南和 Azure 资源的管理身份。
Azure 资源提供程序加密模型支持
Microsoft Azure 服务各自支持一种或多种静态加密模型。 然而,对于某些服务,一种或多种加密模型可能不适用。 支持客户管理密钥场景的服务可能只支持Azure 密钥保管库支持的密钥加密密钥类型的子集。 服务部门也可能在不同时间表发布对这些场景和密钥类型的支持。 本节介绍了当前对各主要 Azure 数据存储服务的静态加密支持情况。
Azure VM 磁盘加密
使用 Azure 基础设施即服务(IaaS)功能的客户可以通过主机加密对其静态 IaaS 虚拟机磁盘进行加密。 有关详细信息,请参阅 主机加密 - VM 的端到端加密。
Azure 存储
所有 Azure 存储 服务(Blob 存储、Queue Storage、Table Storage 和 Azure 文件存储)都支持服务器端静态加密。 Blob 存储 和 Queue Storage 也支持当前的客户端加密。
- 服务器端(默认):所有 Azure 存储 服务默认启用服务器端加密,使用平台管理密钥。 此加密对应用程序是透明的,无需配置。 有关详细信息,请参阅静态数据的 Azure 存储加密。 客户可以选择在Azure 密钥保管库中使用客户管理的密钥进行其他控制。 有关详细信息,请参阅用于 Azure 存储加密的客户管理的密钥。
- 客户端(可选):Blob 存储 和 Queue Storage 客户端库支持客户端加密,满足需要在数据到达 Azure 前加密的客户。 使用客户端加密时,客户会对数据进行加密并上传。 客户管理密钥。 有关详细信息,请参阅 Blob 的客户端加密 和 队列的客户端加密。
Azure SQL 数据库
Azure SQL 数据库 支持通过使用平台管理的密钥进行服务端静态加密,以及支持客户端加密场景。
Azure SQL 通过 透明数据加密 提供服务器端加密。 对于服务托管的TDE系统,Azure会自动创建和管理密钥。 可以在数据库和服务器级别启用静态加密。 新创建的数据库默认启用透明数据加密(TDE)。 Azure SQL 支持存储在 Azure 密钥保管库 或 Azure 密钥保管库 Managed HSM 中的、由客户管理的 2048 位和 3072 位非对称 RSA 或 RSA-HSM TDE 保护器。 有关详细信息,请参阅 使用客户管理的密钥进行 Azure SQL 透明数据加密。
Azure SQL 数据库 支持通过 Always Encrypted 功能实现客户端加密。 Always Encrypted 使用客户端创建和存储的密钥。 客户可以将主密钥存储在 Windows 证书库、Azure 密钥保管库 或本地 HSM 中。 SQL 用户可以使用 SQL Server Management Studio 选择加密每列的密钥。
结论
保护存储在 Azure 服务中的客户数据对 Microsoft 来说非常重要。 Azure托管服务提供静止加密选项。 Azure 服务支持平台托管密钥、客户托管密钥或客户端加密。 Azure 服务持续增强静止加密的可用性。