服务端加密概述
如果您的业务对数据存储的安全性和合规性有较高要求,可使用OBS提供的服务端加密功能,对上传到OBS存储的数据进行加密保护。服务器端加密将对存储在OBS中的静态数据进行加密,即存储介质中存的是数据密文,防止存储介质(如硬盘等)被物理窃取或未授权访问时的数据泄露。在访问对象时,由OBS服务端对文件进行解密,然后返回解密后的数据。
OBS支持SSE-KMS、SSE-OBS、SSE-C三种加密方式:
对比维度 |
SSE-KMS (KMS 托管密钥的服务器端加密) |
SSE-OBS (OBS 托管密钥的服务器端加密) |
SSE-C (用户提供密钥的服务器端加密) |
---|---|---|---|
使用场景 |
密钥由经过安全认证的第三方硬件安全模块(HSM)产生,对密钥的关键操作都会进行访问控制及日志跟踪,适用于对合规性、安全性要求较高的场景。 |
加解密时不需要与KMS交互,访问时延更低,性能较SSE-KMS更好,适用于仅需要基础的加密能力的场景,以及批量加密的场景。 |
适用于需要用户保存和管理密钥的场景。 |
密钥管理 |
KMS服务生成和保管密钥,OBS使用密钥加密对象。 |
OBS服务生成和保管密钥,并使用密钥加密对象。 |
用户生成和保管密钥,OBS使用密钥加密对象。 |
数据加密算法 |
AES256、SM4 |
AES256 |
AES256 |
支持设置加密范围 |
桶级、对象级 |
桶级、对象级 |
对象级 |
详细介绍 |
详见SSE-C加密 |

- SSE-KMS支持区域以控制台实际上线区域为准。如果您在使用SSE-KMS时选择SM4加密算法,该算法仅支持华北-乌兰察布一区域。
- SSE-OBS中国站已全网上线。
- SSE-C以API接口实际上线区域为准。
约束限制
- 一个对象每次上传,只支持一种服务端加密方式。对象上传后,对象的加密配置不可修改。
- 当桶或者桶内对象开启了SSE-KMS服务端加密功能,需要使用IAM为请求者配置kms:cmk:get、kms:cmk:list、kms:cmk:create、kms:dek:create、kms:dek:crypto权限,才能上传下载对象。
- 桶加密开关关闭后,访问加密对象必须使用HTTPS协议。
- 使用中的密钥不可以删除,如果删除将导致加密对象不能下载。
桶级和对象级服务端加密
下表为桶级和对象级服务端加密的介绍和对比:
对比项 |
桶级服务端加密 |
对象级服务端加密 |
---|---|---|
使用场景 |
如果您想要开启后所有对象上传时强制加密,可开启桶级的服务端加密。 |
如果您只想对部分对象进行加密,或者每次上传对象时都根据业务需要选择加密方式和密钥,可使用对象级服务端加密。 |
支持的加密方式 |
SSE-KMS、SSE-OBS |
SSE-KMS、SSE-OBS、SSE-C |
支持设置的时间 |
随时支持修改 |
上传对象时配置,上传后不支持修改 |
两者之间的相互影响 |
|
相关文档
- 使用云审计服务(Cloud Trace Service,以下简称CTS)可以跟踪桶的加密配置操作,包括setBucketEncryption(设置桶服务端加密配置)、deleteBucketEncryption(删除桶服务端加密配置)。了解更多请参见使用CTS审计OBS操作事件。
- 使桶日志功能,OBS会自动将桶的加密配置操作记录在日志中,包括REST.PUT.ENCRYPTION(设置桶的加密配置)、REST.GET.ENCRYPTION(获取桶的加密配置)、REST.DELETE.ENCRYPTION(删除桶的加密配置),并将生成的日志文件写入指定桶。了解更多请参见使用桶日志记录OBS日志信息。