
# 服务端加密概述
如果您的业务对数据存储的安全性和合规性有较高要求，可使用OBS提供的服务端加密功能，对上传到OBS存储的数据进行加密保护。服务器端加密将对存储在OBS中的静态数据进行加密，即存储介质中存的是数据密文，防止存储介质（如硬盘等）被物理窃取或未授权访问时的数据泄露。在访问对象时，由OBS服务端对文件进行解密，然后返回解密后的数据。
OBS支持SSE-KMS、SSE-OBS、SSE-C三种加密方式：
表1OBS的3种服务端加密方式 
| 对比维度     | SSE-KMS （KMS 托管密钥的服务器端加密）      | SSE-OBS （**OBS 托管密钥的服务器端加密**）   | SSE-C （**用户提供密钥的服务器端加密**）      |
|:---|:---|:---|:---|
| 使用场景     | 密钥由经过安全认证的第三方硬件安全模块（HSM）产生，对密钥的关键操作都会进行访问控制及日志跟踪，适用于对合规性、安全性要求较高的场景。                                        | 加解密时不需要与KMS交互，访问时延更低，性能较SSE-KMS更好，适用于仅需要基础的加密能力的场景，以及批量加密的场景。                                               | 适用于需要用户保存和管理密钥的场景。                                                                                        |
| 密钥管理     | KMS服务生成和保管密钥，OBS使用密钥加密对象。                                                                                   | OBS服务生成和保管密钥，并使用密钥加密对象。                                                                                     | 用户生成和保管密钥，OBS使用密钥加密对象。                                                                                    |
| 数据加密算法   | AES256、SM4                                                                                                  | AES256                                                                                                      | AES256                                                                                                    |
| 支持设置加密范围 | 桶级、对象级                                                                                                      | 桶级、对象级                                                                                                      | 对象级                                                                                                       |
| 详细介绍     | 详见[SSE-KMS加密](https://support.huaweicloud.com/usermanual-obs/obs_03_0090.html#ZH-CN_TOPIC_0000002384025226) | 详见[SSE-OBS加密](https://support.huaweicloud.com/usermanual-obs/obs_03_0092.html#ZH-CN_TOPIC_0000002417584481) | 详见[SSE-C加密](https://support.huaweicloud.com/usermanual-obs/obs_03_0093.html#ZH-CN_TOPIC_0000002417464645) |
   
![](https://support.huaweicloud.com/usermanual-obs/public_sys-resources/note_3.0-zh-cn.png)
- SSE-KMS支持区域以[管理控制台](https://console.huaweicloud.com/console/?locale=zh-cn#/obs/manager/buckets)实际上线区域为准。如果您在使用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:encrypt、kms:dek:decrypt权限，才能上传下载对象。
- 如果桶未配置服务端加密，那么访问加密对象必须使用HTTPS协议。
- 使用中的密钥不可以删除，如果删除将导致加密对象不能下载。
 
#### 桶级和对象级服务端加密
下表为桶级和对象级服务端加密的介绍和对比：
表2桶级和对象级服务端加密对比 
| 对比项       | 桶级服务端加密                          | 对象级服务端加密                                              |
|:---|:---|:---|
| 使用场景      | 如果您想要开启后所有对象上传时强制加密，可开启桶级的服务端加密。 | 如果您只想对部分对象进行加密，或者每次上传对象时都根据业务需要选择加密方式和密钥，可使用对象级服务端加密。 |
| 支持的加密方式   | SSE-KMS、SSE-OBS                  | SSE-KMS、SSE-OBS、SSE-C                                 |
| 支持设置的时间   | 随时支持修改                           | 上传对象时配置，上传后不支持修改                                      |
| 两者之间的相互影响 | - 桶未开启加密时，对象不强制加密，可以单独配置加密。  - 桶开启加密时，OBS仅会对开启桶服务端加密之后上传的对象进行加密，不会改变开启前已有对象的加密状态。桶的加密配置会成为对象默认的加密配置，但对象仍可自定义加密配置。  - 桶更改加密配置时，仅影响更改后上传对象的默认配置，不会改变更改前已有对象的加密配置。  - 桶关闭加密时，不会影响桶中已有对象的加密状态，但后续上传对象不再进行强制加密，如有需要可在上传对象时进行单独加密。   ||
   
#### 相关文档
- 使用**云审计服务** （Cloud Trace Service，以下简称CTS）可以跟踪桶的加密配置操作，包括setBucketEncryption（设置桶服务端加密配置）、deleteBucketEncryption（删除桶服务端加密配置）。了解更多请参见[使用CTS审计OBS操作事件](https://support.huaweicloud.com/usermanual-obs/obs_03_0020.html)。
- 使**桶日志** 功能，OBS会自动将桶的加密配置操作记录在日志中，包括REST.PUT.ENCRYPTION（设置桶的加密配置）、REST.GET.ENCRYPTION（获取桶的加密配置）、REST.DELETE.ENCRYPTION（删除桶的加密配置），并将生成的日志文件写入指定桶。了解更多请参见[使用桶日志记录OBS日志信息](https://support.huaweicloud.com/usermanual-obs/obs_03_0329.html)。
 
