yuan-er

导航

 

GaussDB-透明数据加密

可获得性

本特性自V500R002C00版本开始引入。

特性简介

透明数据加密(Transparent Data Encryption,TDE)提供表级数据加密存储功能。当用户使用本特性提供的语法创建加密表后,数据库向磁盘写入加密表数据前,会自动将其加密;同时,数据库从磁盘读取加密表数据后,会自动将其解密。

客户价值

安全:本特性可有效解决攻击者绕过数据库认证机制直接读取数据库文件引起静态数据泄露的问题。

易用:用户在创建表时,通过语法指定表是否需要被加密,数据库可自动对数据进行加密存储。

性能:本特性仅在数据写入磁盘时加密,并以数据页为粒度对数据进行加密,对数据库性能影响较小。

特性描述

多级加密:本特性使用多级加密模型,密钥分为主密钥(CMK)和数据加密密钥(DEK),数据由DEK加密,而DEK由CMK加密,CMK由外部密钥管理服务(Key Management Service,KMS)加密存储。数据库在运行过程中,需要通过网络或其他途径访问外部密钥管理者,以实现对DEK进行加解密。

表级加密:在创建表时,通过ENABLE_TDE语法指定表为加密表,通过ENCRYPT_ALGO语法指定使用何种加密算法,同时,数据库会自动为每个加密表生成1个DEK。对于每个加密表,数据库会在系统表和数据文件中存储加密信息以及DEK密文。

密钥管理:CMK由外部密钥管理者生成并存储。目前的外部密钥管理者主要指密钥管理服务(Key Management Service,KMS),大部分云服务提供商均提供KMS。

密钥轮转:本特性提供DEK轮转语法,加密表与非加密表转换语法。

特性增强

503.2.0:

  • 密钥管理支持。
  • 存储引擎支持Ustore。

505.1.0:

  • 支持段页式表。
  • 支持hashbucket表。
  • 支持对索引加密,支持直接将非加密表转换为加密表。

特性约束

规格

  • 加密规格
    • 加密对象:支持对astore表、ustore表、临时表、unlog表、段页式表等表加密,不支持对压缩表、物化视图、toast表等其他表加密。支持对btree索引、ubtree索引加密。
    • 加密算法:支持AES_128_CTR(默认算法)、SM4_CTR。
  • 密钥规格
    • 密钥管理:主密钥由单独的密钥服务管理,支持以下密钥服务:华为云密钥管理服务()、第三方密钥管理服务(third_kms)。
    • 密钥隔离:每个加密表都使用单独的数据密钥。
    • 密钥复用:如果对索引进行加密,则索引与基表使用相同的数据密钥与加密算法,不支持单独指定索引的加密算法。
    • 密钥轮转机制:进行密钥轮转时,表中新数据页将使用新密钥,旧数据页仍使用旧密钥,执行VACUUM FULL等重建数据文件的操作后,旧数据页才会使用新密钥。
  • 使用规格
    • 加密表转换:1. 将非加密表转换为加密表时,表中新数据页将会被加密,旧数据页不会立刻被加密,执行VACUUM FULL等重建数据文件的操作后,旧数据页才会被加密。
    • 2. 将加密表转换为非加密表时,表中新数据页将不会被加密,旧数据页仍处于加密状态,执行VACUUM FULL等重建数据文件的操作后,旧数据页才会被解密。NOTICE:使用third_kms时,密钥由第三方加密库管理。第三方加密库并非华为提供,需要保证该动态库功能执行正常与安全。
    • 如果第三方动态库异常或其他不可控因素,可能会导致数据库进程异常、进程崩溃、内存泄露等,需要联系第三方动态库进行解决,请谨慎使用。

约束

  • 运行环境约束网络约束:需保证每个数据库节点与KMS之间网络通畅。
  • 配置约束特性开关:如果开启透明加密,创建加密表并向加密表中写入数据,在关闭透明加密功能后,无法对加密表进行读写操作。
  • 功能约束
    • 索引加密:只支持对基表为加密表的索引进行加密。
    • 加密范围:支持对表和索引的数据文件中的数据进行加密,不支持对网络传输、xlog文件、pg_static系统表文件和core文件等其他介质中的数据进行加密。
    • 废弃数据:不对数据库清理机制产生的废弃数据进行加密。
    • 超长数据:由于加密表的数据页容量小于非加密表,如果非加密表中含长度接近8000字节的单条非toast数据,请谨慎该表转换为加密表,否则可能出现加密表可能无法存储超长数据的异常。解决异常的方案是通过ALTER .. SET (enable_tde=off)语法将加密表还原为非加密表,异常场景示例如下:
      • 异常示例1:将表转换为加密表后,执行VACUUM FULL tablename语法语法失败。
      • 异常示例2:将表转换为加密表后,UPDATE旧数据失败。
  • 特性交互约束
    • 备份恢复:不支持细粒度备份恢复。
    • repair:调用repair函数修复加密表的数据页时,不对生成的临时文件中数据进行加密。
  • 其他约束
    • 性能劣化:与非加密表相比,在加密表上进行DML操作时,性能会较小劣化。
    • 数据膨胀:与非加密表相比,加密表数据文件中存储了加密信息,存储空间缩小5%以内。

依赖关系

本特性依赖外部密钥管理服务提供密钥管理功能。

更多详情请参考GaussDB 文档中心:https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/24.1.30/productdesc/qlh_03_0001.html

posted on 2024-11-26 09:57  数据库笔记  阅读(8)  评论(0)    收藏  举报