
# 设置桶加密配置
#### 功能介绍
设置桶的加密配置，以允许在该桶中上传对象时，采用对应加密配置对数据进行加密，数据在服务端被加密成密文后存储，用户下载加密对象时，存储的密文会先在服务端解密为明文，再提供给用户。
调用设置桶加密配置接口，您可以为指定桶创建或更新加密配置信息。
#### 接口约束
- 您必须是桶拥有者或拥有设置桶加密配置的权限，才能设置桶加密配置。建议使用IAM或桶策略进行授权，如果使用IAM则需授予obs:bucket:PutEncryptionConfiguration权限，如果使用桶策略则需授予PutEncryptionConfiguration权限。相关授权方式介绍可参见[OBS权限控制概述](https://support.huaweicloud.com/perms-cfg-obs/obs_40_0001.html)，配置方式详见[使用IAM自定义策略](https://support.huaweicloud.com/usermanual-obs/obs_03_0121.html)、[自定义创建桶策略](https://support.huaweicloud.com/usermanual-obs/obs_03_0123.html)。
- OBS支持的Region与Endpoint的对应关系，详细信息请参见[地区与终端节点](https://developer.huaweicloud.com/endpoint?OBS)。
 
#### 方法定义
```
ObsClient.setBucketEncryption(params)
```
#### 请求参数说明
表1请求参数列表 
| **参数名称** | **参数类型** | **是否必选** | **描述**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
|:---|:---|:---|:---|
| Bucket   | string   | 必选       | **参数解释** **：** 桶名。 **约束限制：** - 桶的名字需全局唯一，不能与已有的任何桶名称重复，包括其他用户创建的桶。  - 桶命名规则如下： - 3～63个字符，数字或字母开头，支持小写字母、数字、"-"、"."。  - 禁止使用IP地址。  - 禁止以"-"或"."开头及结尾。  - 禁止两个"."相邻（如："my..bucket"）。  - 禁止"."和"-"相邻（如："my-.bucket"和"my.-bucket"）。    - 同一用户在同一个区域多次创建同名桶不会报错，创建的桶属性以第一次请求为准。   **默认取值：** 无 |
| Rule     | object   | 必选       | **参数解释** **：** 桶加密配置规则，详见[表2 Rule]。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
   
 表2Rule 
| **参数名称**                           | **参数类型** | **是否必选** | **描述**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
|:---|:---|:---|:---|
| ApplyServerSideEncryptionByDefault | object   | 必选       | **参数解释** **：** 桶的默认加密配置，详见[表3 ApplyServerSideEncryptionByDefault]。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| BucketKeyEnabled                   | bool     | 可选       | **参数解释：** 是否开启OBS桶密钥特性。 **约束限制：** - 该参数仅支持SSEAlgorithm取值为kms时配置。  - 设置POSIX桶时，该参数取值为true，KMSMasterKeyID为必选项。   **取值范围：** - true：开启OBS桶密钥特性。  - false：关闭OBS桶密钥特性。   **默认取值：** false |
   
 表3ApplyServerSideEncryptionByDefault 
| **参数名称**          | **参数类型** | **是否必选** | **描述**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
|:---|:---|:---|:---|
| SSEAlgorithm      | String   | 必选       | **参数解释：** 桶默认加密配置要使用的服务端加密算法。 **约束限制：** 不涉及 **取值范围：** - kms：使用SSE-KMS加密方式，默认使用AES256算法；如果您需要使用SM4加密算法，还需要配置KMSDataEncryption。  - AES256：使用SSE-OBS加密方式，且使用AES256加密算法。   **默认取值：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| KMSDataEncryption | String   | 可选       | **参数解释：** SSE-KMS加密方式下的数据加密算法。 **约束限制：** 不涉及 **取值范围：** SM4：国密SM4算法。 **默认取值：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| KMSMasterKeyID    | String   | 可选       | **参数解释：** SSE-KMS加密方式下使用的KMS主密钥ID。 **约束限制：** - 如果用户没有提供该头域，那么默认的主密钥将会被使用。  - BucketKeyEnabled取值为true时，KMSMasterKeyID取值为携带用户在kms上创建的主密钥ID。   **取值范围：** - regionID:domainID(账号ID):key/key_id  - key_id   其中： - regionID是使用密钥所属region的ID，可在[地区和终端节点](https://developer.huaweicloud.com/endpoint?OBS)页面获取；  - domainID是使用密钥所属账号的账号ID，获取方法参见[如何获取账号ID和用户ID？](https://support.huaweicloud.com/sdk-browserjs-devg-obs/obs_24_1815.html)；  - key_id是从数据加密服务创建的密钥ID，获取方法请参见[查看密钥](https://support.huaweicloud.com/usermanual-dew/dew_01_0179.html)。   **默认取值：** 不涉及 |
| ProjectID         | String   | 可选       | **参数解释：** SSE-KMS加密方式下KMS主密钥所属的项目ID。 **约束限制：** - 如果KMS主密钥所属的项目为非默认项目，则需要通过该参数进行项目ID指定。  - 在未设置KMSMasterKeyID的情况下，不可设置项目ID。  - 使用非默认IAM项目下的自定义密钥对桶内对象进行SSE-KMS加密，只有密钥拥有者可以对加密后的对象进行上传下载类操作，非密钥拥有者不能对加密后的对象进行上传下载类操作。   **取值范围：** 与KMSMasterKeyID相匹配的项目ID，即ID为KMSMasterKeyID的主密钥所在项目的项目ID。 **默认取值：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
   
#### 返回结果说明
表4ICommonMsg 
| **参数名称**  | **参数类型** |                                                                                                                                                                                                       **描述**                                                                                                                                                                                                        |
|---|---|---|
| Status    | number   | **参数解释：** OBS服务端返回的HTTP状态码。 **取值范围：** 状态码是一组从2xx（成功）到4xx或5xx（错误）的数字代码，状态码表示了请求响应的状态。完整的状态码列表请参见[状态码](https://support.huaweicloud.com/api-obs/obs_04_0114.html)。 |
| Code      | string   | **参数解释：** OBS服务端返回的错误码。                                                                                                                                                                                                                                                                                                                                    |
| Message   | string   | **参数解释：** OBS服务端返回的错误描述。                                                                                                                                                                                                                                                                                                                                  |
| HostId    | string   | **参数解释：** OBS服务端返回的请求服务端ID。                                                                                                                                                                                                                                                                                                                               |
| RequestId | string   | **参数解释：** OBS服务端返回的请求ID。                                                                                                                                                                                                                                                                                                                                  |
| Id2       | string   | **参数解释：** OBS服务端返回的请求ID2。                                                                                                                                                                                                                                                                                                                               |
| Indicator | string   | **参数解释：** OBS服务端返回的详细错误码。                                                                                                                                                                                                                                                                                                                                |
   
