阿里云为您提供云产品落盘存储加密服务,并统一使用密钥管理服务(KMS)进行密钥管理。阿里云的存储加密功能提供了256位密钥的存储加密强度(AES256),满足敏感数据的加密存储需求。

云产品和KMS在服务端的集成为您带来了如下收益:
  • 增加云上数据的安全和隐私

    通过使用您在KMS中管理的密钥,云产品可以加密任何归属于您的数据。这些数据既可以是您可以直接访问的数据,也可以是您无法直接访问的云产品内部数据(例如数据库引擎产生的文件),从而为您提供对云上数据更大的控制权,保证数据的安全性和隐私性。

  • 降低自研数据加密带来的研发成本
    自研数据加密往往会带来如下研发成本:
    • 需要考虑合理的密钥层次结构和对应的数据划分方式,以平衡加密性能和安全性
    • 需要考虑密钥轮转、数据重加密
    • 需要掌握密码学技术,保证加密算法的健壮性、安全性以及防篡改能力等
    • 需要考虑自研系统的工程健壮性和可靠性,以确保数据持久性
    云服务端集成加密为您考虑和解决了所有这些复杂的工程和安全问题,降低了研发成本。

选择合适的密钥

您可以根据数据保护需求,选择托管在KMS中的不同类型密钥用于服务端加密:

  • 服务托管的密钥

    如果您介意密钥管理带来的开销,云产品可以为您在KMS中托管一个用于服务端加密的默认密钥,称为服务密钥。服务密钥由对应云产品管理,您对云产品使用此服务密钥的授权是隐式的。通过操作审计服务,您可以对云产品使用服务密钥的情况进行审计。

    为了方便用户识别,服务密钥的Creator属性为对应云产品的代码,同时服务密钥被关联了特殊的别名,格式为acs/<云产品代码>。例如,对象存储服务OSS为用户创建的服务密钥,Creator属性为OSS,同时被关联了别名acs/oss。

  • 用户托管的密钥

    您可以选择自己托管的密钥进行云产品服务端加密,从而获取对数据加密行为更大的控制权。由于云产品并不是密钥托管者,对密钥的使用需要获得您的显式授权。RAM服务是云产品和KMS之间的权限鉴别仲裁者,您通过RAM服务配置权限策略,允许或者拒绝云产品使用特定的主密钥,云产品访问KMS时,KMS向RAM服务验证云产品是否具备使用特定主密钥的权限。

    您除了可以让KMS生成密钥,还可以通过导入自带密钥(BYOK)的方式,将线下的密钥材料安全的导入KMS的主密钥,以获得对密钥的更大控制权。例如,您并不可以立即删除KMS生成的密钥材料,但是可以立即删除导入到KMS中的密钥材料。使用自带密钥将产生额外的管理成本,需谨慎使用,详情请参见导入密钥材料

云产品加密的方式

不同产品基于业务形态和客户需求,其加密的具体设计略有不同。通常,存储加密中密钥层次结构会至少分为两层,并通过信封加密的机制实现对数据的加密。

第一层为KMS中的用户主密钥(CMK),第二层为数据密钥(DK)。CMK对DK进行加解密操作和保护,DK对业务数据进行加解密操作和保护。在业务数据落盘存储时,云产品会将DK的密文(由KMS使用CMK加密)与业务数据的密文(由云产品使用DK加密)一同写入持久化存储介质中。信封加密中的“信封”是指在概念上DK的密文和业务数据的密文被打包在一个“信封”(Envelope)中。在读取加密数据时,DK的密文也会一同被读取,并先于业务数据进行解密。只有在DK被解密后,密文的业务数据才能够被正常解密读取。

在信封加密机制中,CMK受KMS提供的密钥管理基础设施的保护。云产品必须通过恰当的用户授权,才可以使用对应的主密钥来产生DK,用于业务数据的加密,也只有通过用户授权,才可以使用对应的主密钥来解密DK的密文,用于业务数据的解密。DK的明文仅会在您使用的云产品服务实例所在的宿主机的内存中使用,不会以明文形式存储在永久介质上。