透明数据加密
可获得性
本特性自openGauss 2.1.0版本开始引入。
特性简介
透明数据加密(Transparent Data Encryption),是数据库在将数据写入存储介质时对数据进行加密,从存储介质中读取数据时自动解密,防止攻击者绕过数据库认证机制直接读取数据文件中的数据,以解决静态数据泄露问题。该功能对于应用层几乎透明无感知,用户可根据需要决定是否启用透明数据加密功能。
客户价值
为了防止攻击者绕过数据库认证机制直接读取数据文件中的数据,可以通过透明数据加密功能对数据库的数据文件进行加密,保证用户必须在数据库启动后通过正常途径连接数据库,才可以读取解密后的数据,达到数据保护的目的。
特性描述
采用三层密钥结构实现密钥管理机制,即根密钥(RK)、主密钥(CMK)和数据加密密钥(DEK)。主密钥由根密钥加密保护,数据加密密钥由主密钥加密保护。数据加密密钥用于对用户数据进行加密和解密,每个表对应一个数据加密密钥。
支持表级加密,允许用户在创建表时指定是否对表进行加密和使用的加密算法,加密算法支持AES_128_CTR和SM4_CTR两种算法,算法一旦指定不可更改。对于创建表时指定为加密的表,数据库会自动为该表申请创建数据加密密钥,并将加密算法、密钥密文和对应主密钥ID等参数使用”keyword=value”格式保存在pg_class系统表中的reloptions字段中。
对于加密表,允许用户切换表的加密状态,即将加密表切换为非加密表,或将非加密表切换为加密表。如果在创建表时未使能加密功能,后续无法再切换为加密表。
对于加密表,支持数据加密密钥轮转。密钥轮转后,使用旧密钥加密的数据仍使用旧密钥解密,新写入的数据使用新密钥加密。密钥轮转时不更换加密算法。
特性增强
无。
特性约束
当前版本主要实现对接华为云KMS服务,支持表级密钥存储,实现对行存表加密,规格约束如下:
- 支持heap存储行存表加密。
- 不支持列存加密,不支持物化视图加密,不支持ustore存储引擎加密。
- 不支持索引和Sequence加密,不支持XLOG日志加密,不支持MOT内存表加密,不支持系统表加密。
- 用户在创建表时可以指定加密算法,加密算法一旦指定不可更改。如果创建表时设置enable_tde为on,但是不指定加密算法encrypt_algo,则默认使用AES_128_CTR加密算法。
- 如果在创建表时未开启加密功能或指定加密算法,后续无法再切换为加密表。
- 对于已分配加密密钥的表,切换表的加密和非加密状态,不会更换密钥和加密算法。
- 数据密钥轮转只有开启表加密功能时才支持轮转。
- 不支持单集群跨region的多副本主备同步,不支持单集群跨region的扩容,不支持跨region的备份恢复、集群容灾和数据迁移场景。
- 混合云场景如果使用华为云KMS和管控面功能,则可以支持透明数据加密,其他KMS服务如果接口不兼容则无法支持。
- 加密表的查询性能比不加密时会有所劣化,对于性能有较高要求的情况下需谨慎开启加密功能。
依赖关系
依赖外部KMS提供密钥管理服务,目前支持对接华为云KMS服务。