全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网
对象存储 OSS

服务器端加密编码

更新时间:2017-10-10 21:45:49

本文介绍如何使用OSS的服务端加密功能,对持久化在OSS上的数据进行加密保护:

OSS支持在服务器端对用户上传的数据进行加密编码(Server-Side Encryption):用户上传数据时,OSS对收到的用户数据进行加密编码,然后再将得到的加密数据持久化保存下来;用户下载数据时,OSS自动对保存的加密数据进行解密并把原始数据返回给用户,并在返回的HTTP请求Header中,声明该数据进行了服务器端加密。

服务端加密选项

OSS服务端加密有以下选项,用户可根据需要(密钥管理策略)进行选择:

  • 使用由OSS完全托管的服务端加密功能:数据加密密钥的生成和管理,由OSS负责,并采用高强度、多因素的安全措施进行保护。数据加密的算法采用使用行业标准的强加密算法AES-256(即256位高级加密标准)。
  • 使用由KMS托管密钥的服务端加密功能:除了采用AES-256加密算法外,KMS负责保管用户主密钥CMK(对数据密钥进行加密的密钥),以及生成数据加密的密钥,通过信封加密机制,进一步防止未经授权的数据访问。其中,会涉及少量额外的KMS密钥使用费用(参考:KMS计费标准)。暂时只支持北京、新加波区域,后续区域会尽快开放

服务端加密-OSS完全托管

OSS的服务器端加密是Object的一个属性。用户创建一个Object的时候,只需要在Put Object的请求中携带x-oss-server-side-encryption的HTTP Header,并指定其值为AES256,即可以实现该Object的服务器端加密存储。

以下操作,支持在请求中携带这些HTTP Header

  • Put Object: 简单上传
  • Copy Object: 复制Object
  • Initiate Multipart Upload: 分片上传具体可参考服务端加密API使用

服务端加密-KMS托管主密钥

当用户创建Object时,在请求中携带x-oss-server-side-encryption的HTTP Header,并指定其值为KMS,即可实现在服务端加密存储该Object(密钥管理使用KMS服务)。OSS通过KMS服务,采用信封加密机制、AES-256加密算法等强安全方法,对用户存储在OSS的对象进行加密保护。

KMS是阿里云提供的一款安全、易用的管理类服务。用户无需花费大量成本来保护密钥的保密性、完整性和可用性,借助密钥管理服务,用户可以安全、便捷的使用密钥,专注于开发加解密功能场景。用户可以通过KMS控制台中查看和管理KMS密钥。

以下操作,支持在请求中携带这些HTTP Header

  • Put Object: 简单上传
  • Copy Object: 复制Object
  • Initiate Multipart Upload: 分片上传具体可参考服务端加密API使用

注意

  • 用户需要先开通KMS服务,参考KMS开通指南
  • 使用该模式,首次向某区域中的Bucket添加加密对象时,将自动为您在该区域,创建一个默认KMS密钥(用作用户主密钥CMK)。此密钥将用于服务端加密(KMS模式)。
  • 用户可以在KMS控制台,查看该密钥信息,参考KMS使用文档
  • 关于费用,使用“服务端加密-KMS托管主密钥”创建Object或下载Object时,可能会产生少许额外KMS使用费用,具体参考KMS计费标准。
  • 暂时只支持北京、新加波区域,后续区域会尽快开放

服务端加密RestAPI使用

操作请求

以下API,支持请求携带x-oss-server-side-encryption

  • Put Object: 简单上传
  • Copy Object: 复制Object
  • Initiate Multipart Upload: 分片上传

HTTP Header格式

名称 描述 示例
x-oss-server-side-encryption 说明:该选项指定服务端加密的模式
有效值:AES256 ,KMS
x-oss-server-side-encryption:KMS
表示使用服务端加密模式为KMS托管主密钥

说明

  • 其他OSS收到的请求中,如果出现x-oss-server-side-encryption头,OSS会直接返回HTTP状态码:400;并在消息体内注明错误码是:InvalidArgument。
  • 如果用户指定x-oss-server-side-encryption头不为有效值,OSS会直接返回HTTP状态码:400;并在消息体内注明错误码是:InvalidEncryptionAlgorithmError

操作响应

通过服务器端加密存储的Object,以下API请求中OSS会返回x-oss-server-side-encryption

  • Put Object
  • Copy Object
  • Initiate Multipart Upload
  • Upload Part
  • Complete Multipart Upload
  • Get Object
  • Head Object

Meta信息

通过服务器端加密-KMS托管主密钥模式存储的Object,其Meta信息会增加以下字段

名称 描述 示例
x-oss-server-side-encryption 说明:该选项指定服务端加密的模式 x-oss-server-side-encryption: KMS
x-oss-server-side-encryption-key-id 说明:该Object加密,所用的用户KMS key的ID
x-oss-server-side-encryption-key-id: 72779642-7d88-4a0f-8d1f-1081a9cc7afb

相关API:

本文导读目录