
# 数据保护技术
#### 数据存储安全
为了确保您的个人敏感数据（例如用户名、密码、手机号码等）不被未经过认证、授权的实体或者个人获取，DLI对用户数据的存储和传输进行加密保护，以防止个人数据泄露，保证您的个人数据安全。
#### 数据备份服务说明
DLI服务不提供数据备份功能，您需根据业务需求定期导出数据并将数据备份存储，以保障数据安全。
导出数据请参考[导出DLI表数据至OBS中](https://support.huaweicloud.com/usermanual-dli/dli_01_0010.html)**。**
#### 数据销毁机制
用户删除DLI队列后，存储在集群上的用户个人敏感数据会随之删除。
用户在控制台上删除填写的手机号、邮箱，并关闭消息通知功能后，数据库中会同步删除用户的手机号、邮箱信息。
#### 数据传输安全
用户个人敏感数据将通过TLS 1.2、TLS1.3进行传输中加密，所有华为云DLI服务的API调用都支持 HTTPS 来对传输中的数据进行加密。
#### Spark作业传输通信加密
Spark作业支持通过配置[表1]中的参数开启通信加密。
![](https://support.huaweicloud.com/productdesc-dli/public_sys-resources/note_3.0-zh-cn.png)
请确保已上传密钥和证书到指定的OBS路径下，并在作业配置中的其他依赖文件中引入。
 表1Spark作业传输开启通信加密配置项 
| 参数                                     | 说明                                                                                            | 配置示例 |
|:---|:---|:---|
| spark.network.crypto.enabled           | 该参数用于启用或禁用数据在节点之间传输时的加密。当设置为true时，Spark会加密Executor和Driver之间以及Executor之间的所有通信。这是确保数据传输安全的重要配置。 | true |
| spark.network.sasl.serverAlwaysEncrypt | 该参数用于配置服务器端是否使用加密来与客户端通信。当设置为true时，服务器将要求所有客户端使用加密连接，这可以提高通信的安全性。                             | true |
| spark.authenticate                     | 该参数用于配置是否对Spark应用程序的组件进行身份验证。启用身份验证可以防止未授权的访问。这个参数可以设置为true来启用身份验证。                           | true |
   
#### Flink作业传输通信加密
在Flink作业可以通过配置[表2]中的参数来开启SSL传输。
![](https://support.huaweicloud.com/productdesc-dli/public_sys-resources/note_3.0-zh-cn.png)
- 打开Task Manager之间data传输通道的SSL，会对性能会有较大影响，建议结合安全和性能综合考虑是否开启。
- 证书文件还需要在作业配置页面的"其他依赖文件"中完成配置。
- OBS路径/opt/flink/usrlib/userData/为默认存储依赖文件路径。
- 请确保已上传密钥和证书到指定的OBS路径下，并在作业配置中的其他依赖文件中引入。
 
 表2Flink作业传输通信加密配置参数 
| 参数                               | 说明                                                                                | 是否必须 | 配置示例                                                                                                                                                |
|:---|:---|:---|:---|
| security.ssl.enabled             | 打开SSL总开关。                                                                         | 是    | true                                                                                                                                                |
| akka.ssl.enabled                 | 打开akka SSL开关。                                                                     | 否    | true                                                                                                                                                |
| blob.service.ssl.enabled         | 打开blob通道SSL开关。                                                                    | 否    | true                                                                                                                                                |
| taskmanager.data.ssl.enable      | 打开taskmanager之间通信的SSL开关。                                                          | 否    | true                                                                                                                                                |
| security.ssl.algorithms          | 设置SSL加密的算法。                                                                       | 否    | TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 |
| security.ssl.keystore            | keystore的存放路径，"flink.keystore"表示用户通过generate_keystore.sh\*工具生成的keystore文件名称。      | 是    | /opt/flink/usrlib/userData/flink.keystore                                                                                                           |
| security.ssl.keystore-password   | keystore的password，-表示需要用户输入自定义设置的密码值。                                             | 是    | -                                                                                                                                                   |
| security.ssl.key-password        | ssl key的password，-表示需要用户输入自定义设置的密码值。                                              | 是    | -                                                                                                                                                   |
| security.ssl.truststore          | truststore存放路径，"flink.truststore"表示用户通过generate_keystore.sh\*工具生成的truststore文件名称。 | 是    | /opt/flink/usrlib/userData/flink.truststore                                                                                                         |
| security.ssl.truststore-password | truststore的password，-表示需要用户输入自定义设置的密码值。                                           | 是    | -                                                                                                                                                   |
| security.ssl.rest.enabled        | REST API接口是否启用SSL/TLS加密。                                                          | 是    | false                                                                                                                                               |
| security.ssl.verify-hostname     | 用于控制在建立SSL/TLS连接时是否验证对端的主机名（hostname）与证书中的信息是否匹配。                                 | 否    | false                                                                                                                                               |
| security.ssl.protocol            | 指定SSL/TLS连接时所使用的协议版本                                                              | 否    | TLSv1.2、TLSv1.3                                                                                                                                     |
| security.ssl.encrypt.enabled     | Flink集群内部以及与其他组件之间通信时是否启用数据加密                                                     | 否    | false                                                                                                                                               |
   
开启Flink作业传输通信加密配置示例：
```
security.ssl.enabled: true
security.ssl.encrypt.enabled: false
security.ssl.key-password: ***
security.ssl.keystore-password: ***
security.ssl.keystore:  /opt/flink/usrlib/userData/*.keystore
security.ssl.protocol: TLSv1.2
security.ssl.rest.enabled: false
security.ssl.truststore-password: ***
security.ssl.truststore:  /opt/flink/usrlib/userData/*.truststore
security.ssl.verify-hostname: false
```
