数据加密
对象存储BOS提供服务器端加密和客户端加密,并支持基于SSL/TLS的HTTPS加密传输,有效防止数据在云端的潜在安全风险。
服务器端加密
BOS支持在服务器端对上传的数据进行加密(Server-Side Encryption)。上传数据时,BOS对收到的用户数据进行加密,然后再将得到的加密数据持久化保存下来;下载数据时,BOS自动对保存的加密数据进行解密并把原始数据返回给用户,并在返回的HTTP请求Header中,声明该数据进行了服务器端加密。
BOS通过服务器端加密机制,提供静态数据保护。适合于对于文件存储有高安全性或者合规性要求的应用场景。例如,深度学习样本文件的存储、在线协作类文档数据的存储。针对不同的应用场景,BOS有以下两种服务器端加密方式:BOS 托管密钥和 KMS 服务托管密钥。
- BOS 托管密钥:当选择BOS托管密钥时,所有上传该Bucket的数据都会使用BOS服务托管的密钥进行统一加密保护,用户获取数据时将由BOS服务进行自动解密,用户不需做其他操作,简单方便。
- KMS 服务托管密钥:您需要开通百度智能云密钥管理服务,并创建由自己管理的 KMS 密钥。KMS 中会为根据您创建的 KMS 主密钥生成对应的 Data Key,数据上传时会根据生成的 Data Key 来对数据进行自动加密。
当文件上传时,您可配置任意一种加密方式,BOS 会通过携带加密参数的方式来对上传数据执行服务端加密设置。同时,为了提升易用性,BOS 在 Bucket维度支持 设置服务端加密开关,开启存储桶加密之后该 Bucket 内新上传的数据都会默认执行加密。
了解更多信息请参见BOS操作指南中的服务器端加密。
客户端加密
客户端加密是指将文件(Object)发送到对象存储BOS之前在本地进行加密。使用客户端加密功能时,百度智能云对象存储不参与加密和解密过程,只负责文件的上传、存储、下载过程,明文密钥由用户自行保管在本地。客户端加密增强了文件安全性,即使文件意外泄露,别人也无法解密得到原始数据。但是由于用户需要自行负责保管密钥,如果明文密钥丢失,用户将无法获得原文件内容,您需要对主密钥的完整性和正确性负责。
使用客户端加密时,会为每个Object生成一个随机数据加密密钥,用该随机数据加密密钥明文对Object的数据进行对称加密。主密钥用于生成随机的数据加密密钥,加密后的内容会当作Object的元信息保存在服务端。解密时先用主密钥将加密后的随机密钥解密出来,再用解密出来的随机数据加密密钥明文解密Object的数据。主密钥只参与客户端本地计算,不会在网络上进行传输或保存在服务端,以保证主密钥的数据安全。我们为您提供了客户端加密典型实践供您参考。
基于SSL/TLS的HTTPS加密传输
BOS支持通过HTTP或HTTPS的方式访问。您也可以在Bucket细粒度访问控制中设置仅允许通过HTTPS(TLS)来访问BOS资源,实现更加安全的数据传输。安全传输层协议(TLS)用于在两个通信应用程序之间提供保密性和数据完整性。了解更多,详情请参见HTTPS传输加密实践。