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

数据加密模型

若要了解 Azure 资源提供程序如何实现静态加密,需要了解不同的加密模型及其优点和缺点。 为了确保公共语言和分类,Azure 资源提供程序共享这些定义。

默认情况下,Azure 使用平台管理的密钥自动加密静态数据。 可以选择根据安全性和符合性要求选择其他密钥管理方法。 服务器端加密存在三种方案:

  • 使用平台管理的密钥的服务器端加密(默认值)

    • Azure 资源提供程序执行加密和解密作。
    • Microsoft自动管理密钥。
    • 默认情况下启用,无需配置。
    • 完整的云功能。
  • 在 Azure Key Vault 中使用客户管理的密钥进行服务器端加密(可选)

    • Azure 资源提供程序执行加密和解密作。
    • 通过 Azure Key Vault 控制密钥。
    • 需要客户配置和管理。
    • 完整的云功能。
  • 在客户控制的硬件上使用客户管理的密钥进行服务器端加密(高级选项)

    • Azure 资源提供程序执行加密和解密作。
    • 可在客户控制的硬件上控制密钥。
    • 复杂的配置和有限的 Azure 服务支持。
    • 完整的云功能。

服务器端加密模型是指 Azure 服务执行的加密。 在该模型中,资源提供程序执行加密和解密作。 例如,Azure 存储可能会在明文操作中接收数据,并在内部执行加密和解密。 资源提供程序可能会使用Microsoft或客户管理的加密密钥,具体取决于提供的配置。

服务器的屏幕截图。

每个服务器端静态加密模型都具有密钥管理的独特特征。 这些特征包括创建和存储加密密钥的位置和方式,以及访问模型和密钥轮换过程。

对于客户端侧加密,请考虑:

  • Azure 服务看不到解密的数据。
  • 客户在本地(或其他安全存储中)管理和存储密钥。 Azure 服务无权访问密钥。
  • 减少云功能。

Azure 中支持的加密模型分为两个主要组: 客户端加密服务器端加密。 无论使用哪种静态加密模型,Azure 服务始终建议使用安全传输,例如 TLS 或 HTTPS。 因此,传输中的加密应由传输协议处理,不应是确定要使用的静态加密模式的主要因素。

客户端加密模型

客户端加密模型是指服务或调用应用程序在资源提供程序或 Azure 外部执行的加密。 Azure 中的服务应用程序或客户数据中心中运行的应用程序可以执行加密。 无论哪种情况,使用此加密模型时,Azure 资源提供程序都会收到加密的数据 blob,而无法以任何方式解密数据或访问加密密钥。 在此模型中,调用服务或应用程序处理密钥管理,并使其对 Azure 服务保持不透明。

客户端的屏幕截图。

使用平台管理的密钥的服务器端加密(默认值)

对于大多数客户,基本要求是确保数据在静态时加密。 使用平台管理的密钥(以前称为服务托管密钥)的服务器端加密通过默认提供自动加密来满足此要求。 此方法使静态加密无需客户配置或管理任何加密密钥,将密钥颁发、轮换和备份等所有密钥管理方面留给Microsoft。

大多数 Azure 服务将此模型实现为默认行为,无需任何客户作即可使用平台管理的密钥自动加密静态数据。 Azure 资源提供程序创建密钥,将其置于安全的存储中,然后根据需要对其进行检索。 该服务具有对密钥的完全访问权限,并保持对凭据生命周期管理的完全控制,从而为客户提供可靠的加密保护,为客户提供零管理开销。

托管的屏幕截图。

使用平台管理的密钥进行服务器端加密可以解决静态加密的需求,同时不会给客户造成零开销。 默认情况下,在 Azure 服务中启用此加密,无需任何客户配置或管理即可提供自动数据保护。 客户在 Azure 服务中存储数据时立即受益于可靠的加密保护,无需执行额外的步骤、成本或持续管理。

使用平台管理的密钥进行服务器端加密意味着服务具有对存储和管理密钥的完全访问权限。 虽然某些客户可能希望管理密钥,因为他们觉得它们获得了更大的安全性,但评估此模型时,请考虑与自定义密钥存储解决方案关联的成本和风险。 在许多情况下,组织可能会确定本地解决方案的资源约束或风险大于云管理静态密钥的风险。 但是,此模型可能满足不了某些组织的需求,这些组织需要控制加密密钥的创建或生命周期,或者需要安排某个人来管理服务,安排另一个人来管理该服务的加密密钥(也就是说,这是一种将密钥管理与总体管理分开的服务管理模型)。

密钥访问权限

将服务器端加密与平台管理的密钥一起使用时,该服务将管理密钥创建、存储和服务访问。 通常,基础 Azure 资源提供程序将数据加密密钥存储在靠近数据的存储中并快速访问,而密钥加密密钥存储在安全的内部存储中。

优点

  • 简单设置。
  • Microsoft管理密钥轮换、备份和冗余。
  • 不会产生与实施自定义密钥管理方案相关的成本或风险。

考虑

  • 客户无法控制加密密钥(密钥规范、生命周期、吊销等)。 此选项适用于大多数用例,但可能不符合专门的合规性要求。
  • 无法将密钥管理与服务的整体管理模型隔离开来。 需要职责分离的组织可能需要客户管理的密钥。

在 Azure Key Vault 和 Azure 托管 HSM 中使用客户管理的密钥进行服务器端加密(可选)

对于组织在默认平台管理的加密之外控制加密密钥的特定要求,客户可以选择使用 Key Vault 或 Azure 托管 HSM 中的客户管理的密钥来选择服务器端加密。 此方法建立在默认静态加密的基础上,使客户能够在 Azure 继续处理加密和解密作时使用自己的密钥。

某些服务可能仅将根密钥加密密钥存储在 Azure Key Vault 中,而将加密的数据加密密钥存储在更靠近数据的内部位置。 在此方案中,客户可以将自己的密钥带到 Key Vault(BYOK – 自带密钥)或生成新密钥,并使用这些密钥来加密所需的资源。 当资源提供程序执行加密和解密作时,它将客户配置的密钥加密密钥用作所有加密作的根密钥。

密钥加密密钥丢失意味着数据丢失。 因此,请勿删除密钥。 创建或轮换密钥时,请始终备份密钥。 为了防止意外或恶意的密码擦除,必须在任何存储密钥加密密钥的保管库上启用软删除和清除保护。 不要删除密钥,而是在密钥加密密钥上将 enabled 属性设置为 false。 使用访问控制来撤消对 Azure 密钥保管库托管的 HSM中的单个用户或服务的访问权限。

注意

有关支持 Azure Key Vault 和 Azure 托管 HSM 中 CMK 的服务列表,请参阅支持 Azure Key Vault 和 Azure 托管 HSM 中 CMK 的服务

密钥访问权限

将客户托管密钥置于 Azure Key Vault 中的服务器端加密模型涉及到的操作是,服务会根据需要访问用于加密和解密的密钥。 你可以通过访问控制策略使静态加密密钥对服务可用。 此策略授予服务标识接收密钥所需的访问权限。 可以使用该订阅中的标识来配置代表关联的订阅运行的 Azure 服务。 该服务可以执行 Microsoft Entra 身份验证,然后会收到一个身份验证令牌,将服务本身标识为代表该订阅的服务。 然后,该服务将令牌提供给 Key Vault,以获取已向其授予访问权限的密钥。

对于使用加密密钥的操作,可以授予服务身份对以下任何操作的访问权限:解密、加密、解包密钥、封装密钥、验证、签名、获取密钥、列出密钥、更新、创建、导入、删除、备份和还原。

若要获取用于加密或解密静态数据的密钥,资源管理器服务实例运行的服务标识必须具有 UnwrapKey(若要获取用于解密的密钥)和 WrapKey(若要在创建新密钥时将密钥插入密钥保管库)。

注意

有关 Key Vault 授权的更多详细信息,请参阅 Azure Key Vault 文档中的密钥保管库安全页。

优点

  • 完全控制所使用的密钥 - 加密密钥在密钥保管库中由你控制。
  • 能够将多个服务加密到一个主服务器。
  • 可以将密钥管理与服务的整体管理模型隔离开来。
  • 可以跨区域定义服务和密钥位置。

缺点

  • 你完全负责密钥访问管理。
  • 你完全负责关键生命周期管理。
  • 额外的设置和配置负担。

在客户控制的硬件中使用客户管理的密钥进行服务器端加密(专用选项)

某些 Azure 服务为具有专用安全要求的组织启用“托管自己的密钥”(HYOK)密钥管理模型。 此管理模式适用于严格监管的场景中,需要对静态数据进行加密,并在专有存储库中管理密钥,完全不在 Microsoft 的控制范围内,超出了 Azure Key Vault 中默认平台管理的加密和可选的客户管理密钥。

在此模型中,服务必须使用外部站点中的密钥来解密数据加密密钥 (DEK)。 性能和可用性保证受到影响,配置更为复杂。 此外,由于服务在加密和解密作期间无权访问 DEK,因此此模型的整体安全保证与在 Azure Key Vault 中客户管理的密钥时类似。 因此,此模型不适用于大多数组织,除非它们具有非常具体的法规或安全要求,这些要求无法在 Azure Key Vault 中使用平台管理的密钥或客户管理的密钥。 由于这些限制,大多数 Azure 服务不支持使用客户控制的硬件中的客户管理的密钥进行服务器端加密。 双密钥加密中的两个密钥之一遵循此模型。

密钥访问权限

在客户控制的硬件中使用由客户管理的密钥进行服务器端加密时,您可以在配置的系统上维护密钥加密密钥。 支持此模型的 Azure 服务提供了建立与客户提供的密钥存储的安全连接的方法。

优点

  • 你可以完全控制所使用的根密钥,因为加密密钥由客户提供的存储进行管理。
  • 能够将多个服务加密到一个主服务器。
  • 可以将密钥管理与服务的整体管理模型隔离开来。
  • 可以跨区域定义服务和密钥位置。

缺点

  • 你完全负责密钥存储、安全性、性能和可用性。
  • 你完全负责密钥访问管理。
  • 你完全负责关键生命周期管理。
  • 会产生大量设置、配置和持续维护费用。
  • 客户数据中心与 Azure 数据中心之间对网络可用性的依赖增加了。