你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

数据加密建议

适用于 Well-Architected Framework 安全清单建议:

SE:07 使用现代行业标准方法来加密数据,以保护机密性和完整性。 使加密范围与数据分类保持一致;确定本机平台加密方法的优先级。

如果数据不受保护,则可能会受到恶意修改,从而导致丢失完整性和机密性。

本指南介绍加密和保护数据的建议。 加密是使用加密算法 使数据不可读并使用密钥锁定数据的过程。 在加密状态下,无法解密数据。 只能使用与加密密钥配对的密钥来解密它。

定义

术语 定义
证书 保存用于加密或解密的公钥的数字文件。
密码套件 一组算法,用于加密和解密信息,以保护通过传输层安全性 (TLS) 的网络连接。
机密计算 机密计算是通过在基于硬件的经证明的受信任执行环境中执行计算来保护正在使用的数据。
解密 使用机密代码解锁加密数据的过程。
双重加密 使用两个或更多独立的加密层加密数据的过程。
Encryption 使用机密代码使数据不可读和锁定的过程。
哈希 将数据转换为文本或数字以隐藏信息的过程。
用于锁定或解锁加密数据的机密代码。
签名 对数据进行身份验证的加密标记。
签名 使用签名验证数据真实性的过程。
X.509 定义公钥证书格式的标准。

关键设计策略

组织要求或法规要求可能会强制实施加密机制。 例如,可能要求数据必须仅保留在所选区域中,并且数据的副本将保留在该区域中。

这些要求通常是最低要求。 争取更高级别的保护。 你负责 防止机密性泄露和篡改敏感数据,无论是外部用户数据还是员工数据。

加密方案

加密机制可能需要分三个阶段保护数据:

  • 静态数据 是存储在存储对象中的所有信息。

    保护静态数据的一个示例是使用 BitLocker 加密保存到磁盘上存储的数据。

  • 传输中的数据 是在组件、位置或程序之间传输的信息。

    保护传输中数据的一个示例是使用 TLS 加密数据,以便通过公共和专用网络移动的数据包是安全的。

  • 正在使用的数据 是在内存中主动处理的数据。

    保护使用中的数据的一个示例是使用机密计算进行加密,以在处理数据时保护数据。

上述选项不互斥。 它们通常在整个解决方案的上下文中一起使用。 一个阶段可能充当补偿控件。 例如,在从内存中读取数据时,可能需要隔离数据以防止篡改。

加密范围

按用途和敏感度级别对数据进行分类 ,以确定需要加密的数据。 对于应加密的数据,确定所需的保护级别。 是否需要对传输中的所有数据进行端到端 TLS 加密? 对于静态数据,哪些 Azure 功能可以满足你的要求? 是否需要在每个存储点对数据进行双重加密? 如何实现信息保护?

平衡加密决策非常重要,因为存在重大权衡。

权衡:每个加密跃点都可能导致性能延迟。 在故障排除和可观测性方面,可能会出现操作复杂性。 恢复可能是一项挑战。

确定这些权衡的范围。 预计对分类为敏感数据的数据进行权衡。 要求甚至可能决定权衡,例如,如果某种类型的数据必须加密并存储在特定的阈值内。

在某些情况下,由于技术限制、投资或其他原因,无法加密。 确保这些原因清楚、有效且有据可查。

强加密机制不应是你唯一的防御形式。 实施数据盗窃防护过程、适当的测试方法和异常情况检测。

有关分类的信息,请参阅 有关数据分类的建议

本机加密机制

大多数 Azure 服务都提供基本级别的加密。 探索平台提供的加密选项

强烈建议不要禁用平台功能来开发自己的功能。 平台加密功能使用现代行业标准,由专家开发,经过高度测试。

在极少数情况下,如果需要替换平台提供的加密,请评估利弊,并使用行业标准加密算法。

开发人员应使用内置于操作系统中的加密 API,而不是非平台加密库。 对于 .NET,请遵循 .NET 加密模型

加密密钥

默认情况下,Azure 服务使用 Microsoft 托管的加密密钥来加密和解密数据。 Azure 负责密钥管理。

可以选择 客户管理的密钥。 Azure 仍使用你的密钥,但你需要负责密钥操作。 可以根据需要灵活地更改密钥 。 解密是使用客户管理的密钥的一个令人信服的理由。

将强加密与强解密配对。 从安全的角度来看,保护解密密钥非常重要,因为轮换是控制密钥泄露时爆炸半径的常用方法。 监视访问以检测异常访问和活动。

将密钥与加密数据分开存储。 这种分离有助于确保一个实体的入侵不会影响另一个实体。 如果使用客户管理的密钥,请将其存储在密钥存储中。 将高度敏感的数据存储在托管硬件安全模块中, (HSM) 。

这两个存储都通过基于标识的访问进行保护。 此功能使你能够拒绝访问,甚至拒绝对平台的访问。

标准加密算法

使用成熟且遵循行业标准的加密算法 ,而不是创建自定义实现。

算法的行业标准要求加密方案具有一定级别的熵。 在加密期间注入熵源。 Entropy 使算法变得强大,并使得攻击者难以提取信息。 确定可容忍的熵阈值。 加密过程是处理器密集型的。 找到适当的平衡点,以便最大化加密所用的计算周期,相对于计算请求的总体性能目标。

权衡:如果选择高度复杂或注入超过合理数量的熵的算法,则会降低系统的性能。

哈希和校验和

通常,哈希是一种错误检测技术。 还可以使用哈希来保证安全性,因为它 会检测对数据所做的更改,这些更改可能是由篡改引起的。 哈希函数基于加密,但它们不使用密钥。 哈希函数使用算法生成校验和。 校验和可以比较数据,以验证数据的完整性。

应用程序应使用 SHA-2 系列哈希算法,例如 SHA-256、SHA-384 或 SHA-512。

静态数据

根据内部和外部合规性要求对信息存储对象进行分类和保护。 请参阅以下建议:

  • 使用为存储服务、数据存储和其他用于保存数据的资源提供的本机选项来加密数据。 加密此数据,即使只是暂时将数据存储在这些存储服务或资源中。 还要加密备份数据,以保持与原始源相同的安全级别。

    有关详细信息,请参阅 静态数据保护

  • 使用双重加密。 如果业务需求需要更高的保证,则可以执行双重加密。 使用独立的客户管理的密钥加密两层或更多层中的数据。 将数据存储在托管 HSM 中。 若要读取数据,需要访问这两个密钥。 如果一个密钥遭到入侵,另一个密钥仍会保护数据。 此方法旨在增加攻击者成本。

    还可以使用平台提供的加密对数据进行双重加密。 平台提供的加密在基础结构级别保护存储媒体,并在数据级别应用另一层加密。 例如,消息代理服务通过保护消息管道的 Microsoft 托管密钥提供平台的加密。 此方法允许使用客户管理的密钥加密消息。

    使用多个加密密钥。 使用密钥加密密钥 (KEK) (DEK) 保护数据加密密钥。

  • 使用基于标识的访问控制来控制对数据的访问。 添加网络防火墙以提供额外的安全层,阻止意外和不安全的访问。

    有关详细信息,请参阅 标识和访问管理建议

  • 将密钥存储在具有最低特权访问控制的托管 HSM 中。 将数据与数据的键分开。

  • 存储有限的数据量 ,以便仅加密所需的数据。 数据的生存期不应超过加密周期。 如果不再需要数据,请删除加密的数据,而无需花费解密周期。

传输中的数据

  • 使用安全协议进行客户端-服务器通信。 传输协议具有内置的安全层。 TLS 是在客户端和服务器终结点之间交换数据的行业标准。

    请勿使用低于 TLS 1.2 的版本。 迁移解决方案以支持 TLS 1.2,并默认使用此版本。 所有 Azure 服务在公共 HTTPS 终结点上都支持 TLS 1.2。

    风险:如果不支持向后兼容性,则不支持 TLS 1.2 的旧版客户端可能无法正常工作。

    无论传输的数据的敏感度如何,所有网站通信都应使用 HTTPS。 在客户端与服务器握手期间,协商使用 HTTP 严格传输安全性 (HSTS) 策略,以便维护 HTTPS 传输并在通信期间不降至 HTTP。 此策略可防止中间人攻击。

    对 HSTS 的支持适用于较新版本。 可能会破坏与旧浏览器的向后兼容性。

    注意

    还可以加密协议以建立数据库的安全连接。 例如,Azure SQL Database 支持表格数据流 (TDS) 协议,该协议集成了 TLS 握手。

    密码套件是一组算法,用于标准化客户端和服务器之间的握手。 密码可确保对交换进行加密和身份验证。 密码的选择取决于服务器使用的 TLS 版本。 对于某些服务(例如Azure 应用程序网关),可以选择 TLS 版本和要支持的密码套件。 实现使用高级加密标准 (AES) 作为对称块密码的密码套件。 可以接受 AES-128、AES-192 和 AES-256。

  • 管理证书的生命周期。 证书具有预先确定的生命周期。 不要保留长期证书,也不要让它们自行过期。 实现以可接受的频率续订证书的过程。 可以自动执行续订过程,以便以短间隔进行续订。

    注意

    如果使用 证书固定,请熟悉敏捷性和证书管理限制。

    工作流不应允许在环境中接受无效证书。 证书固定过程应验证证书并强制实施该验证检查。 应监视访问日志,以确保签名密钥使用适当的权限。

    如果密钥泄露,必须立即吊销证书。 (CA) 证书颁发机构 (CRL) 提供证书吊销列表,指示证书在过期前失效。 验证检查应考虑 CRL。

    权衡:认证验证过程可能很繁琐,通常涉及 CA。 确定必须使用证书加密的数据。 对于其他类型的通信,确定是否可以实现本地化补偿控制来增加安全性。

    本地化控件的一种方法是使用相互 TLS (mTLS) 。 它在客户端和服务器之间建立双向信任。 客户端和服务器都有自己的证书,并且每个证书都使用其公钥或私钥对进行身份验证。 使用 mTLS 时,不依赖于外部 CA。 利弊是管理两个证书的复杂性增加。

  • 如果需要,请对 VPN 连接进行双重加密。 执行双重加密以向 VPN 隧道添加深度防御。 使用两个 VPN 服务器时,可以隐藏服务器之间的 IP 地址,还可以隐藏服务器与目标之间的 IP 地址。 在此过程中,传输中的数据也会加密两次。

    权衡:与单个 VPN 设置相比,双 VPN 设置通常更昂贵,连接速度通常较慢。

  • 实现日志记录和监视过程。 跟踪存储有关客户端的信息的访问登录资源,例如客户端的源 IP、端口和协议。 使用此信息检测异常。

正在使用中的数据

对于高安全性工作负载,建议使用分段、隔离和最低特权的设计模式。

在使用中保护的上下文中,硬件边界可能需要在物理 CPU 和内存中使用数据时加密数据,以确保 VM、主机管理代码和其他组件的隔离。

只能在这些隔离边界内对数据进行加密和解密。

更严格的安全或法规要求可能还需要基于硬件的加密签名证据,证明数据在使用时正在加密,这可以通过 证明获得。

使用新式安全和隐私措施是法规工作负载的常见要求。 机密计算 是支持此要求的此类技术之一。 Azure 中的特定服务能够在数据进行计算时保护数据。 有关详细信息,请参阅 Azure 简化:Azure 机密计算

请考虑要保护的数据的端到端生命周期 ,数据在其生存期内通常会在多个系统中移动,注意确保解决方案的所有组件都能提供所需的保护级别,或者确保数据管理策略提供适当的分段或掩码。

Azure 简化

以下部分介绍可用于加密数据的 Azure 服务和功能。

客户管理的密钥

将客户管理的密钥存储在 Azure 密钥保管库或密钥保管库管理的 HSM 中。

密钥保管库将密钥视为任何其他机密。 Azure 基于角色的访问控制 (RBAC) 通过权限模型访问密钥。 此基于标识的控制必须与密钥保管库访问策略一起使用。

有关详细信息,请参阅使用 RBAC 提供对密钥保管库密钥、证书和机密的访问权限

Azure 密钥保管库 Premium 和 Managed-HSM 通过包括机密计算功能和安全密钥发布来进一步增强产品/服务,该功能支持策略,以确保密钥仅发布到可通过加密方式证明其正在受信任的执行环境中执行的工作负载, (TEE) 。

静态数据保护
  • 将数据保存到存储帐户时,Azure 存储会自动使用块密码加密数据。 对于Azure Blob 存储和 Azure 队列存储,存储还通过库提供客户端加密。

    有关详细信息,请参阅 存储加密

  • Azure 虚拟机具有用作虚拟存储卷的磁盘文件。 可以加密虚拟磁盘文件,以便无法访问内容。

    可以从门户导出托管磁盘。 主机上的服务器端加密和加密只能在导出数据后保护数据。 但是,应在导出过程中保护数据。 可以在导出过程中使用 Azure 磁盘加密 来保护数据。

    Azure 为托管磁盘提供了多个加密选项。 有关详细信息,请参阅托管磁盘加密选项概述

  • SQL 数据库提供透明数据加密功能,用于在页面级别加密数据库文件。

传输中数据保护

使用 密钥保管库,可以预配、管理和部署公共和专用安全套接字层 (SSL) 或 TLS 证书。 可以将证书与 Azure 和内部连接资源配合使用。

使用中的数据保护

使用 Azure 机密计算在主机的物理 CPU 和内存中计算数据时,Azure 中的特定服务能够保护数据。

  • 机密虚拟机提供在 TEE 内运行的整个虚拟机,对虚拟机的内存和执行 CPU 内容进行加密,提供一种简单的“直接 & 班次”方法,用于将具有高安全要求的未经修改的应用程序移动到 Azure。 每个 Azure 机密 VM 都有自己的专用虚拟 信任平台模块 (TPM) 。 在操作系统组件安全启动时执行加密。

  • 机密 AKS 辅助角色节点、AKS 上的机密容器或 Azure 容器实例 (ACI 上的机密容器) 提供在 TEE 中运行和管理未修改的容器的功能,使客户能够受益于使用中的保护。 容器产品/服务基于机密虚拟机,并受益于相同的保护。

  • 应用程序 Enclave 解决方案是专门构建的应用程序,利用虚拟机 SKU 提供的特定 CPU 扩展,支持 Intel Software Guard Extensions (SGX) ,它们提供非常精细 的受信任的计算基础 (TCB) 但需要专门编码应用程序才能利用这些功能。

  • 安全密钥发布 可以 与这些技术相结合 ,以确保加密数据仅在 TEE 中解密,这证明它通过称为 证明的过程提供了所需的保护级别。

机密管理

可以使用 密钥保管库 安全地存储和控制对令牌、密码、证书、API 密钥和其他机密的访问。 将 密钥保管库 用作密钥和证书管理解决方案。 高级 SKU 支持 HSM。

示例

以下示例演示可用于管理密钥、证书和机密的加密解决方案。

显示用于管理密钥、证书和机密的加密解决方案的关系图。

安全清单

请参阅完整的建议集。

安全清单