七牛对象存储Kodo系统支持在数据写入磁盘之前,在对象级别上应用数据加密的保护策略,再将得到的加密数据持久化保存下来。用户访问数据时,在拥有对象访问权限的前提下,自动对保存的加密数据进行解密并把原始数据返回。加密和解密这一操作过程都是在服务端完成,可以有效保护静态数据。
服务端加密的实现
支持由七牛存储完全托管的服务端加密功能:
- 是否加密是对象的属性,对对象数据加密,元数据不加密
- 每个用户一对主密钥(明文数据密钥&密文数据密钥),由私有云存储负责,用于 RSA 加密机制对随机密钥进行加密。(服务端负责定期更换,历史的由历史密钥加解密,新的密钥生成后,新数据用新密钥加密)。
- 通过随机密钥使用 AES-256(256 位高级加密标准)加密算法来加密数据。随机密钥是每次上传时自动生成的随机数数据。
主密钥与随机密钥分开保存。主密钥只有指定的服务可以获取。
MD5 和 ETag 保存的是加密前的。为计算数据加密前的 MD5,分片上传的临时数据明文分块存放,分片上传完成后对完整数据进行加密存储。
具体说明
加密过程:
-
上传时生成随机密钥,通过 AES-256 算法加密文件,加密后数据存入磁盘
-
使用用户的主密钥加密随机密钥,加密后的随机密钥存入 RS 服务
解密过程:
-
访问对象时,获取加密后的随机密钥和加密后的对象数据
-
使用用户的主密钥解密随机密钥
-
使用解密后的随机密钥解密对象数据
操作步骤
Kodo 支持通过控制台方式在空间级别设置开启或关闭服务端加密。
支持的操作方式 | 参考文档 |
---|---|
控制台 | 设置服务端加密 |
文档反馈
(如有产品使用问题,请 提交工单)