
# 应用场景
#### 场景描述
透明加密，是指数据库对将要落盘的数据自动进行加密，读取磁盘数据的时候自动进行解密，同时外部用户或应用程序对数据使用过程中整个加解密过程无感知。通过存储层的静态数据加密，即使磁盘文件被窃取，但磁盘中敏感信息已经加密，窃取者无法解密而得不到真实的用户数据，从而保证了数据库的安全。
GaussDB透明加密技术提供了精细的表级加密粒度，在创建表时指定是否需要被加密，后续数据库可自动对表中数据在落盘时进行加密存储。
GaussDB透明加密技术提供了安全的密钥存储方案，密钥通过外部第三方密钥管理服务进行托管，数据库通过RESTful等方式调用外部的密钥创建或解密功能。数据密钥明文存储在内存中，使用哈希表缓存，保证密钥的查询效率，并且提供密钥明文定时清除机制保证密钥明文的安全性。数据密钥密文会跟随数据页面一起落盘存储，从而保证了数据解密过程中的准确性和高效性。
GaussDB透明加密技术提供了灵活的密钥轮转方案，一个加密表对应一个数据密钥，当用户认为当前的加密表的密钥时间过长或者不再安全以后，可以使用密钥在线轮转功能，将当前加密表的数据密钥轮转为新的数据密钥。
#### 触发条件
配置GUC参数enable_tde为on，并基于选用的密钥管理服务信息正确配置GUC参数tde_key_info，重启数据库集群后生效。
#### 业务影响
- 轻量的DDL业务语句改造 对于新建表或历史表，通过参数enable_tde配置表选项即可完成加密表转换；避免传统加密方案（如应用加密）带来的开发、测试和维护成本。
  
- 存在一定程度的性能劣化 由于加解密算法需执行复杂数学运算与数据处理逻辑，会额外占用硬件资源并增加数据传输延迟，消耗系统算力与时间资源，因此透明加密功能将造成一定程度的性能劣化，建议仅对存储有敏感数据的表进行加密改造。加密表配置为AES_128_CTR国际算法性能与明文表性能基本持平，但配置为SM4_CTR国密算法则存在明显性能劣化。
  
- 依赖外部密钥管理服务可用性 新建加密表或数据库节点启动后针对加密表的第一次数据处理，均会触发对外部密钥管理服务的网络请求或动态库接口调用；因此启用透明加密功能需保证外部密钥管理服务的高可用能力完备。
  
 
