
# DLI安全最佳实践
数据湖探索（Data Lake Insight，简称DLI）是完全兼容Apache Spark、Apache Flink生态，提供一站式的流处理、批处理、交互式分析的Serverless融合处理分析服务。用户不需要管理任何服务器，即开即用。
本文提供了DLI使用过程中的安全最佳实践，旨在为提高整体安全能力提供可操作的规范性指导。根据该指导文档，您可以持续评估DLI的安全状态，更合理地组合使用DLI提供的多种安全能力，提高对DLI的整体安全防御能力，保护存储在DLI的数据及传输过程中的数据不被泄露或篡改。
为了加强DLI服务的安全性，本文将从以下几个维度给出建议，您可以根据业务需要在本指导的基础上进行安全配置。
- 加强权限管理。
- 数据备份和恢复
- 加密存储数据
- 使用委托访问外部服务
- 安全审计日志
- 升级计算引擎到最新版本
#### 加强权限管理
DLI服务支持通过IAM对用户权限进行精细化管理，通过设置不同的企业组织和操作权限，达到对DLI访问权限隔离。
通过IAM，您可以在华为云账号中给员工创建IAM用户，并使用策略来控制他们对华为云资源的访问范围。例如您的员工中有负责软件开发的人员，您希望他们拥有DLI的使用权限，但是不希望他们拥有删除DLI等高危操作的权限，那么您可以使用IAM为开发人员创建用户，通过授予仅能使用DLI，但是不允许删除DLI的权限策略，控制他们对DLI资源的使用范围。
DLI服务权限分类如[表1]所示，其可控制的资源请参考[DLI的指定资源与对应路径](https://support.huaweicloud.com/usermanual-dli/dli_01_0451.html)。
 表1DLI权限分类 
| **权限大类**                                 | **权限小类** | **控制台操作**                                                                                                                                                            | **SQL** **语法**                                                                                                          |
|:---|:---|:---|:---|
| 队列权限                                     | 队列管理权限   | 请参考[队列权限管理](https://support.huaweicloud.com/usermanual-dli/dli_01_0015.html)                                                                                         | 无                                                                                                                       |
| 队列权限                                     | 队列使用权限   | 请参考[队列权限管理](https://support.huaweicloud.com/usermanual-dli/dli_01_0015.html)                                                                                         | 无                                                                                                                       |
| 数据权限                                     | 数据库权限    | 请参考[在DLI控制台配置数据库权限](https://support.huaweicloud.com/usermanual-dli/dli_01_0447.html)和[在DLI控制台配置表权限](https://support.huaweicloud.com/usermanual-dli/dli_01_0448.html) | 请参考 《[权限列表](https://support.huaweicloud.com/sqlref-spark-dli/dli_08_0140.html)》  。 |
| 数据权限                                     | 表权限      | 请参考[在DLI控制台配置数据库权限](https://support.huaweicloud.com/usermanual-dli/dli_01_0447.html)和[在DLI控制台配置表权限](https://support.huaweicloud.com/usermanual-dli/dli_01_0448.html) | 请参考 《[权限列表](https://support.huaweicloud.com/sqlref-spark-dli/dli_08_0140.html)》  。 |
| 数据权限                                     | 列权限      | 请参考[在DLI控制台配置数据库权限](https://support.huaweicloud.com/usermanual-dli/dli_01_0447.html)和[在DLI控制台配置表权限](https://support.huaweicloud.com/usermanual-dli/dli_01_0448.html) | 请参考 《[权限列表](https://support.huaweicloud.com/sqlref-spark-dli/dli_08_0140.html)》  。 |
| 作业权限                                     | Flink作业  | 请参考[配置Flink作业权限](https://support.huaweicloud.com/usermanual-dli/dli_01_0479.html)                                                                                    | 无                                                                                                                       |
| 程序包权限  | 程序包组权限   | 请参考[配置DLI程序包权限](https://support.huaweicloud.com/usermanual-dli/dli_01_0477.html)                                                                                     | 无                                                                                                                       |
| 程序包权限  | 程序包权限    | 请参考[配置DLI程序包权限](https://support.huaweicloud.com/usermanual-dli/dli_01_0477.html)                                                                                     | 无                                                                                                                       |
| 跨源认证权限                                   | 跨源认证权限   | 请参考[跨源认证权限管理](https://support.huaweicloud.com/usermanual-dli/dli_01_0480.html)                                                                                       | 无                                                                                                                       |
   
#### 数据备份和恢复
DLI服务提供了数据导入和导出接口，可以针对关键数据定期导出到OBS进行数据备份，出现数据异常损坏时，通过导入接口从OBS备份数据导入到DLI服务。建议每日或每周执行数据导出备份，当数据损坏时，可以通过备份文件恢复数据，从而保证数据可靠性。
相关操作链接：
- [通过SQL语句导出数据到OBS](https://support.huaweicloud.com/sqlref-spark-dli/dli_08_0205.html)
- [通过SQL语句从OBS导入数据到DLI表](https://support.huaweicloud.com/sqlref-spark-dli/dli_08_0100.html)
 
#### 加密存储数据
为提升用户数据的安全性，DLI服务支持使用OBS加密桶作为数据表存储。建议针对敏感数据，在创建DLI表时，使用OBS加密桶作为数据表的存储。
相关操作链接：
- [OBS加密桶](https://support.huaweicloud.com/usermanual-obs/obs_03_0088.html)
- [在DLI中创建OBS表](https://support.huaweicloud.com/sqlref-spark-dli/dli_08_0077.html)
 
#### 使用委托访问外部服务
各云服务之间存在业务交互关系，一些云服务需要与其他云服务协同工作，需要您创建云服务委托，将操作权限委托给DLI服务，让DLI服务以您的身份使用其他云服务，代替您进行一些资源运维工作。例如：在DLI新建Flink作业所需的AKSK存储在DEW中，如需允许DLI在执行作业时访问DEW数据，需要提供IAM委托将DEW数据操作权限委托给DLI，允许DLI服务以您的身份访问DEW服务。
使用Flink 1.15和Spark 3.3及以上版本的引擎执行作业时，可以在作业配置中添加新建的自定义委托信息。在Flink、Spark作业运行过程中，作业程序可以获取您配置的自定义委托信息，使用该委托来访问其他云服务。建议针对自定义委托权限进行最小化处理，只配置Flink、Spark作业运行过程中需要的必要权限，防止权限范围扩大。
相关操作链接：
- [创建自定义委托](https://support.huaweicloud.com/usermanual-dli/dli_01_0616.html)
- [典型的自定义委托使用场景](https://support.huaweicloud.com/usermanual-dli/dli_01_0619.html)
 
#### 安全审计日志
DLI服务支持日志审计功能，可以实时记录用户对数据的所有相关操作。通过对用户访问数据行为的记录、分析和汇报，用来帮助您事后生成合规报告、事故追根溯源，提高数据资产安全性。
相关操作链接：[使用CTS审计DLI服务](https://support.huaweicloud.com/usermanual-dli/dli_01_0318.html)
#### 开启SQL防御
大数据平台使用SQL进行数据分析和处理，提升了数据分析的易用性的同时，也暴露出一定的问题，例如SQL输入语句质量良莠不齐、SQL问题难定位、大SQL语句消耗资源过多等。低质量的SQL会对数据分析平台系统带来不可预料的冲击，影响系统的性能或者平台稳定性。
DLI在Spark SQL引擎中增加SQL防御能力，基于用户可理解的SQL防御策略，实现对典型大SQL、低质量SQL的主动防御，包括事前提示、拦截和事中熔断，并不强制改变用户的SQL提交方式、SQL语法，对业务零改动且易落地。
相关操作链接：[配置SQL防御规则](https://support.huaweicloud.com/usermanual-dli/dli_01_0612.html)
#### 升级计算引擎到最新版本
开源社区会不定期披露新发现的漏洞，DLI会评估Spark和Flink引擎内核版本的实际风险，发布新的内核版本。为了提升易用性和安全性，建议建立定期版本检查机制，并将大数据作业使用的引擎版本升级为最新。
相关操作链接：[升级DLI作业的引擎版本](https://support.huaweicloud.com/dli_faq/dli_03_0002.html)
