云数据库 PostgreSQL TDE 透明数据加密

随着数据安全保护的要求越来越严格,各国各地域的信息安全保护法都提到要求数据库进行加密存储。通过数据加密防止意外数据文件遗失导致的数据泄露问题。

相关产品
云数据库 PostgreSQL 产品页,含版本规格、价格与购买入口。

一、功能介绍

云数据库 PostgreSQL 提供透明数据加密(Transparent Data Encryption,TDE)功能,透明加密指数据的加解密操作对用户透明,支持对数据文件进行实时 I/O 加密和解密,在数据写入磁盘前进行加密,从磁盘读入内存时进行解密,可满足静态数据加密的合规性要求。加密使用的密钥由密钥管理服务 KMS 产生和管理。

二、支持版本

PostgreSQL 10及以上版本。

三、适用场景

透明数据加密指数据的加解密操作对用户透明,支持对数据文件进行实时 I/O 加密和解密,在数据写入磁盘前进行加密,从磁盘读入内存时进行解密,可满足静态数据加密的合规性要求。

四、加密原理

TDE 在数据库内核的数据页读写路径上完成加解密,对应用程序完全透明,业务无需感知,也无需修改任何 SQL 或应用程序代码。其工作原理如下:

·加密时机:数据页在写入磁盘前完成加密,从磁盘读入内存后立即解密,业务读写过程中不需要任何额外操作。

·加密粒度:以数据页(默认8KB)为单位进行加密。数据页的头部元数据(如日志序列号、页类型等)保留明文,便于数据库正常识别页结构;页内的数据区使用 AES-256 算法加密。

·加密与解密流程:每次数据页落盘时,内核在缓冲区中对该页的数据区执行加密后再写入磁盘;每次从磁盘读取数据页时,内核在返回给上层使用前先完成解密。因此磁盘上保存的始终是密文,而内存和网络传输中均为明文。

·加密范围:参与加密的是表、索引等主数据文件;WAL 日志不参与加密。

·安全性:加密后的数据文件无法脱离对应密钥被解读,即使数据文件被非法复制,也无法直接获取其中的明文数据,从而满足静态数据加密的合规性要求。

五、密钥管理

加密密钥由 腾讯云密钥管理服务(KMS)产生和管理,采用“主密钥 + 数据密钥”的两层密钥体系:

密钥类型 作用
用户主密钥(CMK) 用于加密保护数据密钥,可在密钥管理服务中创建和管理,或使用系统默认主密钥
数据密钥(DEK) 由 KMS 基于主密钥生成,用于 AES-256 加密业务数据,并以密文形式保存;仅在实例运行时由 KMS 解密后交给数据库内核使用

六、开通方式

TDE 在创建实例时开通,创建完成后不可关闭,也不可更换加密算法。开启透明数据加密功能与数据库透明加密的详细介绍,请参见 透明数据加密。

七、通过 SQL 查看

你可以在任意可用账号下执行以下语句查看实例的加密状态:

postgres=> SHOW data_encryption_cipher; data_encryption_cipher———————— none(1 row)

返回值说明:

返回值 含义
aes-256 实例已开启数据加密
none 实例未开启数据加密

八、通过控制台查看

登录 云数据库 PostgreSQL 控制台,进入云数据库 PostgreSQL 的实例详情页,在配置信息区域可查看该实例是否已开启数据加密。

九、使用限制

·加密能力在创建实例时确定,创建完成后不可关闭加密,也不可更换加密算法。

·WAL 日志不参与加密。

·加密实例暂不支持通过数据库大版本升级方式升级内核大版本。如需更换内核大版本,请评估后在目标大版本中新建实例并迁移数据。

十、Q:开启 TDE 加密后,业务代码需要修改吗?

A:不需要。TDE 的加解密在数据库内核中完成,对应用程序完全透明,读写数据的方式与未加密实例一致。

十一、Q:加密实例的备份、恢复和只读实例功能是否受影响?

A:不受影响。备份恢复、只读实例等常规能力均基于相同的密钥体系工作,使用方式与未加密实例一致。

赞 (0)
上一篇 4天前
下一篇 4天前