# 场景二：透明加解密配置及操作举例
#### 概述
数据透明加解密功能通过先进的加密系统，实现了数据库中密文数据的无缝解密，将其转换为明文供用户访问和使用。同时，该功能还能自动将用户的操作数据从明文加密为密文，并安全地存储回数据库中。在整个过程中，用户几乎察觉不到任何变化，从而确保了操作的流畅性和便捷性。
此功能不仅显著提升了数据的安全性，防止了敏感信息的泄露，还通过简化用户交互流程，显著优化了用户体验。用户无需直接参与复杂的加密解密操作，即可享受到安全的数据访问服务，实现了数据保护与使用便利性的完美平衡。
#### 配置方式
1. 确保业务系统能够正常使用，网络通畅、磁盘空间健康等等。
2. 请参见[插件部署](https://support.huaweicloud.com/usermanual-dbss/dbss_03_0023.html#dbss_03_0023__section752083544018)将插件部署到用户业务系统。
3. 加密网关服务正常启动并可以正常访问。
4. 加密网关已将用户业务系统相关信息配置完成（包括网段和用户等信息）。
5. 确保要测试或使用的数据已经配置好加密策略并执行加密完毕。
 
#### 测试结果
这里使用一个测试接口展示效果：
- 首先展示数据库中的实际数据（已加密）。
  图1数据库中的实际数据   
  ![](https://support.huaweicloud.com/usermanual-dbss/zh-cn_image_0000002721042009.png "点击放大") 
- 未集成插件和集成插件后，业务系统的查询结果对比如下：
  图2未集成插件-应用程序的执行结果展示   
  ![](https://support.huaweicloud.com/usermanual-dbss/zh-cn_image_0000002721162131.png "点击放大")
  图3集成插件后-应用程序的执行结果展示   
  ![](https://support.huaweicloud.com/usermanual-dbss/zh-cn_image_0000002721162133.png "点击放大") 
可以看出，集成插件后，业务系统将自动将密文解密成明文供用户使用。
#### 其他说明
1. 除了集成加密插件外，还可以使用配置加密代理服务等功能，实现类似的透明加解密功能。
2. 详细的应用用户配置请参见[应用用户](https://support.huaweicloud.com/usermanual-dbss/dbss_03_0043.html)。
3. 详细的应用网段配置请参见[插件同步管理](https://support.huaweicloud.com/usermanual-dbss/dbss_03_0020.html)。
4. 插线下载地址，请参见[下载插件](https://support.huaweicloud.com/usermanual-dbss/dbss_03_0023.html)。
 
#### 使用约束
暂不支持的数据操作方式（以MySQL为例）：
1. Select查询数据类型语句中，包含temp关键字的暂不支持，例如：
   ```
   SELECT * FROM UDFTESTER.STUDENT_INFO TEMP WHERE TEMP.GENDER = '男'
   ```
   
2. Insert插入数据类型的自循环的批量插入数据，例如：
   ```
   INSERT INTO SCHOOL.STUDENT_INFO (STUDENT_ID, NAME, GENDER, MAJOR) WITH RECURSIVE TEMP(LEVEL) AS ( SELECT 1 UNION ALL SELECT LEVEL + 1 FROM TEMP WHERE LEVEL < 10 ) SELECT CONCAT('2024', LEVEL) AS STUDENT_ID, CONCAT('学生', LEVEL) AS NAME, CASE WHEN MOD(LEVEL, 2) = 0 THEN '女' ELSE '男' END AS GENDER, '计算机科学与技术' AS MAJOR FROM TEMP;
   ```
   
3. insert包含嵌套格式，例如：
   ```
   INSERT INTO SCHOOL.STUDENT_INFO (STUDENT_ID, NAME, GENDER, MAJOR) SELECT CONCAT('2024', LPAD(CAST((SELECT COUNT(*) FROM SCHOOL.STUDENT_INFO) + 1 AS CHAR), 4, '0')), '批量导入学生', CASE WHEN (SELECT COUNT(*) FROM SCHOOL.STUDENT_INFO) % 2 = 0 THEN '男' ELSE '女' END, '计算机科学与技术' FROM DUAL
   ```
   
4. update更新数据类型的包含嵌套格式，例如：
   ```
   UPDATE SCHOOL.STUDENT_INFO SET GENDER = '未知' WHERE NAME IN ( SELECT NAME FROM ( SELECT NAME FROM SCHOOL.STUDENT_INFO WHERE NAME LIKE '%雪%' ) t )
   ```
   
5. 加密字段不支持大小比较，如大于、小于、order by、between等。
6. 不支持函数计算操作，如AVG、MAX、MIN、SUM及计算表达式。
7. 不支持视图、触发器及存储过程操作，涉及where等条件后的'='比较，必须在'='号两端字段均做加密或者均未做加密。
8. 加密表名及字段名含有通配符的不支持进行配置加密。
 
