对象存储OSS数据加密整体解决方案介绍

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: 一、简介??数据保护是指数据传输(上传数据至OSS、从OSS下载数据)和处于静止状态(数据存储在OSS数据中心磁盘)期间保护数据。可以使用SSL或者客户端加密保护传输中的数据。也可以采用以下方式保护静态数据:使用服务器端加密 (SSE) --OSS将数据保存到数据中心的磁盘之前进行加密,并且在下载对象时自动进行解密;使用客户端加密(CSE) --可以使用客户端加密SDK,在本地进行数据加密,并将加密后的数据上传到OSS。

一、简介

??数据保护是指数据传输(上传数据至OSS、从OSS下载数据)和处于静止状态(数据存储在OSS数据中心磁盘)期间保护数据。可以使用SSL或者客户端加密保护传输中的数据。也可以采用以下方式保护静态数据:

  • 使用服务器端加密 (SSE) --OSS将数据保存到数据中心的磁盘之前进行加密,并且在下载对象时自动进行解密;
  • 使用客户端加密(CSE) --可以使用客户端加密SDK,在本地进行数据加密,并将加密后的数据上传到OSS。在这种场景下,用户需要管理加密过程以及加密密钥。

image

二、使用服务器端(SSE)加密保护数据

??使用服务器端加密方式保护静态数据,即OSS将用户数据写入数据中心内的磁盘时,会在对象级别加密数据,并且在访问这些数据时自动解密。用户只需要验证请求是否拥有访问权限。当前OSS支持如下两种服务端加密方式(注意:不能对同一对象同时应用两种不同类型的服务器端加密方式):

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

2.1使用由KMS托管密钥的服务器端加密(SSE-KMS)

??阿里云KMS(Key Management Service)是一项安全、高度可靠的密钥管理系统。当用户上传Object时,在请求中携带x-oss-server-side-encryption 的HTTP Header,并指定其值为KMS,KMS将使用系统默认创建的CMK加密该对象,若用户在请求中指定了X-OSS-server-side-encrpytion-key-id, 那么OSS将使用指定的CMK进行加解密。使用用户自主指定的CMK能够提供更大的灵活性,包括创建、轮转、禁用和自定义访问控制,以及审核用于保护数据的加密密钥能力。

image

如上是SSE-KMS服务端加密的逻辑示意图。关于Customer Master Key的生成方式有多种,如下一一介绍:

  • 使用OSS默认托管的KMS密钥:当用户上传object时,在请求中携带X-OSS-server-side-encrpytion并指定其值为KMS。OSS将使用默认托管的CMK加密每个对象,并且在下载时自定解密;
  • 使用用户指定的CMK :当用户上传object时,在请求中指定X-oss-server-side-encrpytion-key-id为具体的CMK ID。OSS将使用指定的CMK(密钥材料来源于阿里云KMS)来加密每个对象。并且加密object的CMK ID记录到对象的元数据中,因此具有解密权限的用户下载对象时自动进行解密。
  • 使用用户BYOK材料进行加密:目前阿里云KMS服务支持导入用户自己的BYOK密钥材料。如下图所示,用户创建1个不带密钥材料的CMK,并按照提示导入外部密钥材料。当用户上传object时,在请求中指定X-oss-server-side-encrpytion-key-id为使用外部密钥材料的CMK ID。

注意

?    当首次向某区域中的bucket上传对象时,系统自动为您创建1个默认的CMK。用户可以在KMS控制台查看该密钥信息;
?    可以选择自行创建和管理的加密密钥(CMK),也可以选择使用由OSS服务按照Region级别为客户生成的默认服务密钥;
?    响应中的ETAG不是对象数据的MD5;
?    可以在控制台创建、轮换或者禁用主密钥;
?    用户需要实现开通KMS服务;
?    使用“服务端加密-KMS托管主密钥”加解密对象时,会产生一定的KMS请求调用费用;
?    用于加密数据的数据密钥也会被加密,并且作为Object的元数据信息一并存储;
?    KMS托管密钥的服务器端加密方式仅加密对象数据,不会加密任何对象的元数据;

目前以下操作,支持在请求中携带x-oss-server-side-encryption 以及X-oss-server-side-encrpytion-key-idHeader头:

?    Put Object: 简单上传
?    Copy Object: 复制Object
?    Initiate Multipart Upload:

通过服务器端加密存储的object时,以下API请求中OSS会返回x-oss-server-side-encryption头以及X-oss-server-side-encrpytion-key-id

?    Put Object
?    Post Object
?    Copy Object
?    Initiate Multipart Upload
?    Upload Part
?    Complete Multipart Upload
?    Get Object
?    Head Object

2.2使用由OSS完全托管加密密钥的服务器端加密(SSE-OSS)

??服务器端加密是为了保护静态数据,使用OSS完全托管加密密钥的服务器端加密,采用了诸多强安全措施进行加密。当用户创建对象时(即上传新对象或者复制现有对象),只需要在请求中携带x-oss-server-side-encryption标头,并且指定其值为AES256。即可实现OSS完全托管加密密钥的服务器端加密。OSS使用AES256加密方式加密客户的数据,作为额外的保护,系统采用CMK主密钥加密密钥本身。
??以下操作,支持在请求中携带这些HTTP Header:

?    Put Object: 简单上传
?    Copy Object: 复制Object
?    Initiate Multipart Upload: 

??使用multipart upload上传大型对象时,可以通过为每个分段上传请求添加x-oss-server-side-encryption标头来指定服务器端加密。调用copy object时,无论原对象是否已经加密,都不会加密目标对象,除非显示的在拷贝操作中指定了x-oss-server-side-encryption请求头。

3.使用客户端(CSE)加密保护数据

??客户端加密是指将数据发送到OSS之前在用户本地进行加密,对于数据加密密钥的使用,目前支持如下两种方式:

  • 使用KMS托管用户主密钥(CSE-KMS)
  • 使用用户自主管理密钥(CSE-C)

3.1使用KMS托管用户主密钥(CSE-KMS)

??当使用KMS托管用户主密钥用于客户端数据加密时,无需向OSS加密客户端提供任何加密密钥。只需要在上传对象时指定KMS用户主密钥ID(也就是CMK ID)。其具体工作原理如下:
image

  • 上传对象:--通过使用CMK ID,客户端首先会向KMS发送一个请求,申请1个用于加密对象的数据密钥(Data key)。作为响应,KMS会返回一个随机生成的数据明文密钥(Data key),以及数据密文密钥(Encrypted data key);

    • 本地加密数据:--本地客户端接收到KMS返回的数据明文密钥(Data key)以及数据密文密钥(Encrypted data key)后,将使用数据明文密钥(**Data key)进行本地加密,并且将加密后的对象以及数据密文密钥(Encrypted data key)上传至OSS;
  • 下载对象:--客户端首先会从OSS服务端下载加密的对象以及作为对象元数据存储的数据密文密钥(Encrypted data key)。

    • 解密数据:客户端将数据密文密钥(Encrypted data key)以及CMK ID发送至KMS服务器。作为响应,KMS将使用指定的CMK解密,并且将数据明文密钥(Data key)返回给本地加密客户端;
注意:
?    本地加密客户端为每一个上传的对象获取一个唯一的数据加密密钥;
?    为了保证数据的安全性,建议CMK定期轮换或者更新;
?    客户需要维护CMK ID与对象之间的映射关系;

3.2使用用户自主管理密钥(CSE-C)

??使用用户自主管理密钥,需要用户自主生成、保管加密密钥。当用户本地客户端加密时,由用户自主上传加密密钥(对称加密密钥或者非对称加密密钥)至本地加密客户端。其具体加密过程如下:
image

  • 上传对象:--用户首先向本地加密客户端提供1个用户主密钥(对称密钥或者非对称密钥)。客户端只使用此主密钥加密其随机生成的数据密钥。该过程如下:

    • OSS本地加密客户端会在本地生成一个一次性的对称密钥(Data Key)。它将用于加密单个对象(针对每个对象,客户端都会随生成1个数据密钥);
    • 客户端使用“数据密钥(Data key)”加密对象;
    • 客户端使用用户提供的主密钥来加密“数据密钥(Data key)”;
    • 客户端会将加密的数据密钥(Encrypted Data Key)作为对象元数据的一部分上传至OSS。
  • 下载对象:--下载对象时,客户端首先从OSS下载加密的对象以及元数据。通过使用元数据中的材料,客户端将授权会确定使用哪个主密钥来解密加密的数据密钥(Encrypted Data Key)。客户端解密后的数据密钥(Data Key)来解密对象。
注意:
?OSS本地加密客户端不会将用户主密钥以及未加密的数据发送至OSS。所以,请务必妥善保管加密密钥,如果密钥丢失,将无法解密数据;
?    数据密钥(Data Key)由本地加密客户端随机生成;
相关文章
|
3天前
|
存储 安全 API
oss客户端加密密钥管理
阿里云OSS数据加密涉及SSE-C和SSE-KMS两种方案。SSE-C中,客户端自动生成并管理DEK,负责加密和解密数据,需确保密钥的安全存储和访问控制。SSE-KMS则利用KMS生成和管理密钥,客户端通过API请求加密/解密密钥,实现更安全的密钥管理。无论哪种方式,都需要遵循密钥生命周期管理、访问控制、安全存储和定期轮换等最佳实践。选择SSE-C需要客户端有安全的密钥存储,而SSE-KMS则需关注与KMS的API交互和访问策略。
31 3
|
3天前
|
存储 安全 开发工具
oss加密存储
阿里云OSS为数据安全提供多种加密机制,包括服务器端的SSE-S3(AES-256透明加密)、SSE-C(用户管理密钥)和CSE-KMS(结合KMS进行密钥管理)。此外,OSS支持客户端加密SDK和HTTPS传输加密,确保数据在传输和存储时的安全。通过ACL、Bucket策略和访问密钥身份验证,实现权限控制与身份验证,全方位保障用户数据的安全性和隐私。用户可按需选择适合的加密方式。
50 2
|
3天前
|
存储 安全 数据安全/隐私保护
oss客户端加密
阿里云OSS客户端加密提供了一种安全机制,用户在上传数据前可在本地进行加密。流程包括:使用本地配置的主密钥(对称或非对称)加密一次性数据密钥,再用数据密钥加密对象,加密后的数据密钥与对象一同上传。下载时,通过主密钥解密数据密钥,然后解密对象。此方式确保数据全程加密,增强安全性,但需用户妥善管理密钥以保证数据可访问性。
47 5
|
3天前
|
存储 安全 数据安全/隐私保护
oss服务器端加密
阿里云OSS提供服务器端加密,使用AES-256自动加密数据,保证上传至OSS的数据安全。下载时自动解密,透明处理。加密增强静态数据安全性,满足合规需求。支持OSS或KMS管理密钥,实现细粒度权限控制。确保云端对象数据全生命周期安全。
43 7
|
3天前
|
安全 API 开发工具
oss加密的配置方法
阿里云OSS提供多种加密选项:SSE-OSS(默认或对象级AES-256加密)、SSE-KMS(使用KMS托管CMK)、临时密钥加密和客户端加密(CSE)。可通过控制台或API设置Bucket策略,使用HTTP头部指定加密方式。KMS和临时密钥可能涉及更复杂的密钥管理和权限配置。
200 5
|
3天前
|
存储 算法 安全
oss加密方式
阿里云OSS提供多种数据加密选项增强安全性:SSE-S3和SSE-KMS(服务器端加密),其中SSE-KMS支持使用KMS托管密钥;SSE-C和CSE-KMS(客户端加密)允许用户自管加密密钥,CSE-KMS结合KMS增强安全;还有SSE-OSS,完全托管的加密方式,使用AES-256并定期轮转主密钥。这些方案满足不同用户对密钥管理和数据安全的需求。
30 2
|
3天前
|
存储 安全 开发工具
oss客户端密钥管理数据密钥加密与上传
阿里云OSS实现数据安全加密和访问控制,通过KMS托管CMK或客户端加密管理DEK。数据加密流程中,可使用KMS加密DEK后存储在OSS元数据,或利用SDK在本地加密文件再上传。上传时,HTTP请求头含加密参数,通过RAM临时凭证初始化SDK客户端,调用API上传加密文件,确保数据传输和存储的安全。
27 2
|
3天前
|
存储 安全 开发工具
oss客户端加密
阿里云OSS支持客户端加密,允许用户在本地加密数据后上传,确保数据在传输和存储时的隐私安全。用户管理主密钥,控制数据密钥加密与解密,增强数据控制和合规性。此机制适用于高安全需求场景,如金融、医疗等,但用户需负责密钥管理和加密操作。
30 8
|
3天前
|
存储 安全 API
oss服务器端加密(SSE)
阿里云OSS提供服务器端加密(SSE),自动加密上传的数据并透明解密下载,保护云端对象的隐私和机密性。SSE支持两种方式:SSE-KMS(使用KMS托管CMK)和SSE-OSS(OSS管理加密密钥)。加密过程在服务器端完成,对用户应用透明且兼容标准HTTP接口。云盒和ossutil工具也支持此功能,让用户轻松管理加密对象,确保数据存储和传输安全。用户可按需选择密钥管理方式。
20 4
|
3天前
|
存储 安全 数据安全/隐私保护
oss数据加密与存储
阿里云OSS提供多种数据加密(SSE-S3, SSE-KMS, SSE-C, CSE-KMS)与存储安全措施,包括服务器和客户端加密、数据在磁盘上加密存储、多重冗余备份、访问控制列表和HTTPS安全传输。KMS支持密钥管理,确保数据静态和传输时的安全。严格的访问策略和身份验证保护资源免受未授权访问,满足高安全性和合规性需求。
56 3

相关产品

  • 对象存储

  • http://www.vxiaotou.com