
# OBS服务端加密
#### 应用场景
KMS可以对OBS桶中的对象进行全量加密或者部分加密，在OBS服务使用KMS加密过程中，KMS提供的信封加密能力使数据加解密操作无需通过网络传输大量数据即可完成。信封加密方式有效保障了数据传输的加密性、数据解密的效率和便捷性，在对象上传和下载过程中，保证信息安全。
- 全量加密：指对OBS桶内上传的所有对象进行加密。 此时，您只需要对OBS桶加密，桶中上传的对象会默认继承OBS桶的加密配置。具体操作请参见[加密OBS桶：创建OBS桶时开启服务端加密功能]或者[加密OBS桶：为已创建的OBS桶开启加密]。
  开启OBS桶加密后，上传对象时默认开启"继承桶加密配置"加密方式，此时桶中的对象和OBS桶采用相同的加密方式；如需修改桶中对象的加密方式，需要在上传对象时手动关闭"继承桶加密配置"开关，然后修改。具体操作请参见[上传对象至OBS桶]。
  
- 部分加密：指对OBS桶内上传的部分对象进行加密。 此时不需要对OBS桶进行加密，直接上传对象到OBS桶并进行加密配置。具体操作请参见[上传对象至OBS桶]。
  
图1加密OBS   
![](https://support.huaweicloud.com/bestpractice-dew/zh-cn_image_0000002287210240.png "点击放大")
#### 方案架构
OBS中上传对象的加解密原理说明如下：
- 加密原理
  图2加密原理   
  ![](https://support.huaweicloud.com/bestpractice-dew/zh-cn_image_0000001925796734.png "点击放大")
  1. 获取加密密钥 通过KMS，生成一个用于加密OBS桶内对象的数据加密密钥。
     
  
  2. 加密数据上传至OBS桶 加密SDK通过获取的数据加密密钥，对上传的数据明文进行加密处理，将被加密的对象密文存储到OBS。
     
   
- 解密原理
  图3解密原理   
  ![](https://support.huaweicloud.com/bestpractice-dew/zh-cn_image_0000001952916073.png "点击放大")
  1. 下载对象 通过OBS，下载被加密的对象数据。
     
  
  2. 解密对象 被加密对象通过加密SDK获取对应的密文数据密钥，通过KMS，进行密文数据密钥的解密操作，获得被解密后的原始对象。
     
   
 
#### 约束与限制
使用中的密钥不可以删除，如果删除将导致加密对象不能下载。
 #### 加密OBS桶：创建OBS桶时开启服务端加密功能
1. [登录OBS服务控制台](https://console.huaweicloud.com/obs/?locale=zh-cn#/obs/)。
2. 在左侧导航栏选择"桶列表"，在页面右上角单击"创建桶"。
3. 在服务端加密模块，"加密模式"选择"SSE-KMS"方式后，选择加密密钥类型。 
   图4OBS服务端加密
   ![](https://support.huaweicloud.com/bestpractice-dew/zh-cn_image_0000002321828821.png "点击放大")
   ![](https://support.huaweicloud.com/bestpractice-dew/public_sys-resources/note_3.0-zh-cn.png)
   OBS使用KMS提供的加密密钥，支持选择的密钥：
   - 默认密钥"obs/default"，如果您没有默认密钥，系统将会在首次上传对象时为您自动创建。
   
   - 用户使用KMS创建的自定义密钥，具体操作请参见[创建密钥](https://support.huaweicloud.com/usermanual-dew/dew_01_0178.html)。
   
   - 使用SM4加密算法类型密钥加密OBS服务，仅支持在华北-乌兰察布一区域。
    
   
   
4. 完成其他参数配置后，单击"立即创建"，完成OBS桶加密配置。
 
 #### 加密OBS桶：为已创建的OBS桶开启加密
1. 在左侧导航栏选择"桶列表"，在桶列表中，单击待操作的桶，进入"对象"页面。
2. 在左侧导航栏单击"概览"，进入"概览"页面。
3. 在概览页的"基础配置"区域下，单击"服务端加密"卡片，系统弹出"服务端加密"对话框。
4. 选择"SSE-KMS"方式后，选择加密密钥类型。 
   图5开启服务端加密
   ![](https://support.huaweicloud.com/bestpractice-dew/zh-cn_image_0000002287132048.png "点击放大")
   ![](https://support.huaweicloud.com/bestpractice-dew/public_sys-resources/note_3.0-zh-cn.png)
   OBS使用KMS提供的加密密钥，支持选择的密钥：
   - 默认密钥"obs/default"，如果您没有默认密钥，系统将会在首次上传对象时为您自动创建。
   
   - 用户使用KMS创建的自定义密钥，具体操作请参见[创建密钥](https://support.huaweicloud.com/usermanual-dew/dew_01_0178.html)。
   
   - 使用SM4加密算法类型密钥加密OBS服务，仅支持在华北-乌兰察布一区域。
    
   
   
5. 完成设置后，单击"确定"，服务端加密配置生效。
 
 #### 上传对象至OBS桶
1. 在OBS管理控制台桶列表中，单击待操作的桶，进入"概览"页面。
2. 在左侧导航栏，单击"对象"。
3. 单击"上传对象"，系统弹出"上传对象"对话框。
4. 单击"添加文件"，选择待上传的文件后，单击"打开"。
5. 在服务端加密行，选择目标加密方式，选择完成后，在下方的选择框中选择默认密钥或者自定义密钥，如[图6]所示。
   
   图6加密上传对象（已开启OBS桶加密）   
   ![](https://support.huaweicloud.com/bestpractice-dew/zh-cn_image_0000002020487265.png "点击放大")
   ![](https://support.huaweicloud.com/bestpractice-dew/public_sys-resources/note_3.0-zh-cn.png)
   - 开启OBS桶加密后，上传对象时默认开启继承桶的加密配置。
   
   - 如果需要修改加密配置，需要手动关闭"继承桶的加密配置"选项，根据使用需求选择SSE-KMS或SSE-OBS加密方式。
    
   图7加密上传对象（未开启OBS桶加密）   
   ![](https://support.huaweicloud.com/bestpractice-dew/zh-cn_image_0000002020338881.png "点击放大")
   ![](https://support.huaweicloud.com/bestpractice-dew/public_sys-resources/note_3.0-zh-cn.png)
   未开启OBS桶加密在上传对象时需要手动开启服务端加密。
   
   

6. 对象上传成功后，可在对象列表中查看对象的加密状态。 
   ![](https://support.huaweicloud.com/bestpractice-dew/public_sys-resources/note_3.0-zh-cn.png)
   - 对象的加密状态不可以修改。
   
   - 使用中的密钥不可以删除，如果删除将导致加密对象不能下载。
    
   
   
 
#### 相关操作
用户也可以通过调用OBS API接口，选择服务端加密SSE-KMS方式（SSE-KMS方式是指OBS使用KMS提供的密钥进行服务端加密）上传文件，详情请参考[《对象存储服务API参考》](https://support.huaweicloud.com/api-obs/obs_04_0062.html)。
