
# 运行MRS作业时如何读取OBS加密数据
MRS 1.9.x支持使用OBS文件系统中加密后的数据来运行作业，同时支持将加密后的作业运行结果存储在OBS文件系统中。目前仅支持通过OBS协议访问数据。
OBS支持使用KMS密钥的加解密方式对数据进行加解密，所有的加解密操作都在OBS完成，同时密钥管理在DEW服务。
如需在MRS中使用OBS加密功能，用户需要有"KMS Administrator"权限，且需要在相应组件进行如下配置。
![](https://support.huaweicloud.com/usermanual-mrs/public_sys-resources/note_3.0-zh-cn.png)
如果集群同时开启"[OBS权限控制](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0632.html)"功能，此时会使用ECS配置的默认委托"MRS_ECS_DEFAULT_AGENCY"或者用户设置的自定义委托的AK/SK访问OBS服务，同时OBS服务会使用接收到的AK/SK访问密码安全中心获取KMS密钥状态，因此需要在使用的委托上绑定"MRS Agency KMSAccess"策略，否则在处理加密数据时OBS会返回"403 Forbidden"的错误信息。目前MRS服务会在默认委托"MRS_ECS_DEFAULT_AGENCY"绑定"MRS Agency KMSAccess"策略，用户使用的自定义委托则需要用户自己绑定。
#### 前提条件
如需使用OBS加密功能，请先配置MRS访问OBS功能，具体请参考[配置MRS集群通过IAM委托对接OBS](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0768.html)。
#### Hive配置
1. 登录[MRS管理控制台](https://console.huaweicloud.com/mrs/)。
2. 在左侧导航栏选择"现有集群" ，单击集群名称。
3. 选择"组件管理 \> Hive \> 服务配置"。
4. 将"基础配置"切换为"全部配置"，搜索并配置如下参数： 
   ![](https://support.huaweicloud.com/usermanual-mrs/zh-cn_image_0000001925500529.png "点击放大")
   表1数据加密参数 
   | 参数                                 | 取值      | 说明                                                                                                                                                                                                                                                                     |
   |:---|:---|:---|
   | fs.obs.server-side-encryption-type | SSE-KMS | - SSE-KMS：表示使用KMS密钥的加解密方式。  - NONE：表示关闭加密功能。                                                                        |
   | fs.obs.server-side-encryption-key  | -       | 表示用来加密的KMS密钥ID。该参数可不配置。 当参数"fs.obs.server-side-encryption-type"配置为"SSE-KMS"且该参数未配置时，OBS会使用OBS服务的默认KMS密钥完成加密。                                                                                                                             |
   | fs.obs.connection.ssl.enabled      | true    | 标识是否与OBS建立安全连接。 - true：开启安全连接，当需要使用OBS加解密功能时该参数必须配置为"true"。  - false：关闭安全连接。   |
      
   
   
5. 单击"保存配置"，根据界面提示保存修改的参数。
 
#### Hadoop配置
**方式一：通过界面配置。**
1. 登录[MRS管理控制台](https://console.huaweicloud.com/mrs/)。
2. 在左侧导航栏选择"现有集群" ，单击集群名称。
3. 选择"组件管理 \> HDFS \> 服务配置"
4. 将"基础配置"切换为"全部配置"，搜索并配置如下参数： 
   表2数据加密参数 
   | 参数                                 | 取值      | 说明                                                                                                                                                                                                                                                                                                                                                                                                               |
   |:---|:---|:---|
   | fs.obs.server-side-encryption-type | SSE-KMS | - SSE-KMS：表示使用KMS密钥的加解密方式。  - NONE：表示关闭加密功能。                                                                                               |
   | fs.obs.server-side-encryption-key  | -       | 表示用来加密的KMS密钥ID。该参数可不配置。 当参数"fs.obs.server-side-encryption-type"配置为"SSE-KMS"且该参数未配置时，OBS会使用OBS服务的默认KMS密钥完成加密。                                                                                                                                                                                                                                                |
   | fs.obs.connection.ssl.enabled      | true    | 标识是否与OBS建立安全连接。 - true：开启安全连接，当需要使用OBS加解密功能时该参数必须配置为"true"。  - false：关闭安全连接。   |
      
   
   
5. 单击"保存配置"，根据界面提示保存修改的参数。
6. 以**root** 用户登录Master节点，密码为用户创建集群时设置的**root** 密码（若集群存在多个Master节点，请分别登录每个Master节点进行[步骤 6]\~[步骤 8]的操作）。
7. 执行以下命令，切换到客户端目录，例如"/opt/Bigdata/client"。 
   **cd /opt/Bigdata/client**
   
   
8. 执行以下命令更新客户端配置，并输入用户名和密码，用户名为**admin** ，密码为用户创建集群时设置的**admin** 密码。
   
   **./autoRefreshConfig.sh**
   
   
**方式二：通过客户端配置文件配置。**
在Master节点上的客户端配置文件（例如"/opt/Bigdata/client/HDFS/hadoop/etc/hadoop/core-site.xml"）中的增加如下参数配置（若集群存在多个Master节点，请分别登录每个Master节点进行该操作）。
表3数据加密参数 
| 参数                                 | 取值      | 说明                                                                                                                                                                                                                                                                   |
|:---|:---|:---|
| fs.obs.server-side-encryption-type | SSE-KMS | - SSE-KMS：表示使用KMS密钥的加解密方式。  - NONE：表示关闭加密功能。                                                            |
| fs.obs.server-side-encryption-key  | -       | 表示用来加密的KMS密钥ID。该参数可不配置。 当参数"fs.obs.server-side-encryption-type"配置为"SSE-KMS"且该参数未配置时，OBS会使用OBS服务的默认KMS密钥完成加密。                                                                                                                           |
| fs.obs.connection.ssl.enabled      | true    | 标识是否与OBS建立安全连接。 - true：开启安全连接，当需要使用OBS加解密功能时该参数必须配置为"true"。  - false：关闭安全连接。   |
   
#### Spark配置
**方式一：通过界面配置。**
1. 登录[MRS管理控制台](https://console.huaweicloud.com/mrs/)。
2. 在左侧导航栏选择"现有集群" ，单击集群名称。
3. 选择"组件管理 \> Spark \> 服务配置"
4. 将"基础配置"切换为"全部配置"，搜索并配置如下参数： 
   表4数据加密参数 
   | 参数                                 | 取值      | 说明                                                                                                                                                                                                                                                                        |
   |:---|:---|:---|
   | fs.obs.server-side-encryption-type | SSE-KMS | - SSE-KMS：表示使用KMS密钥的加解密方式。  - NONE：表示关闭加密功能。                                                                    |
   | fs.obs.server-side-encryption-key  | -       | 表示用来加密的KMS密钥ID。该参数可不配置。 当参数"fs.obs.server-side-encryption-type"配置为"SSE-KMS"且该参数未配置时，OBS会使用OBS服务的默认KMS密钥完成加密。                                                                                                                                |
   | fs.obs.connection.ssl.enabled      | true    | 标识是否与OBS建立安全连接。 - true：开启安全连接，当需要使用OBS加解密功能时该参数必须配置为"true"。  - false：关闭安全连接。   |
      
   
   
5. 单击"保存配置"，根据界面提示保存修改的参数。
6. 以root用户登录Master节点，密码为用户创建集群时设置的root密码（若集群存在多个Master节点，请分别登录每个Master节点进行[步骤 6]\~[步骤 8]的操作）。
7. 执行以下命令，切换到客户端目录，例如"/opt/Bigdata/client"。 
   **cd /opt/Bigdata/client**
   
   
8. 执行以下命令更新客户端配置，并输入用户名和密码，用户名为**admin** ，密码为用户创建集群时设置的**admin** 密码。
   
   **./autoRefreshConfig.sh**
   
   
**方式二：通过客户端配置文件配置。**
在Master节点上的客户端配置文件（例如"/opt/Bigdata/client/Spark/spark/conf/core-site.xml"）中的增加如下参数配置（若集群存在多个Master节点，请分别登录每个Master节点进行该操作）。
表5数据加密参数 
| 参数                                 | 取值      | 说明                                                                                                                                                                                                                                                                    |
|:---|:---|:---|
| fs.obs.server-side-encryption-type | SSE-KMS | - SSE-KMS：表示使用KMS密钥的加解密方式。  - NONE：表示关闭加密功能。                                                            |
| fs.obs.server-side-encryption-key  | -       | 表示用来加密的KMS密钥ID。该参数可不配置。 当参数"fs.obs.server-side-encryption-type"配置为"SSE-KMS"且该参数未配置时，OBS会使用OBS服务的默认KMS密钥完成加密。                                                                                                                           |
| fs.obs.connection.ssl.enabled      | true    | 标识是否与OBS建立安全连接。 - true：开启安全连接，当需要使用OBS加解密功能时该参数必须配置为"true"。  - false：关闭安全连接。   |
   
#### Presto配置
1. 登录[MRS管理控制台](https://console.huaweicloud.com/mrs/)。
2. 在左侧导航栏选择"现有集群" ，单击集群名称。
3. 选择"组件管理 \> Presto \> 服务配置"
4. 将"基础配置"切换为"全部配置"，搜索并配置如下参数： 
   表6数据加密参数 
   | 参数                                 | 取值      | 说明                                                                                                                                                                                                                                                                       |
   |:---|:---|:---|
   | fs.obs.server-side-encryption-type | SSE-KMS | - SSE-KMS：表示使用KMS密钥的加解密方式。  - NONE：表示关闭加密功能。                                                                  |
   | fs.obs.server-side-encryption-key  | -       | 表示用来加密的KMS密钥ID。该参数可不配置。 当参数"fs.obs.server-side-encryption-type"配置为"SSE-KMS"且该参数未配置时，OBS会使用OBS服务的默认KMS密钥完成加密。                                                                                                                              |
   | fs.obs.connection.ssl.enabled      | true    | 标识是否与OBS建立安全连接。 - true：开启安全连接，当需要使用OBS加解密功能时该参数必须配置为"true"。  - false：关闭安全连接。   |
      
   
   
5. 单击"保存配置"，根据界面提示保存修改的参数。
 
