暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

DB吐槽大会,第80期 - PG 不支持透明加密(TDE)功能

原创 digoal 2022-01-20
258

作者

digoal

日期

2021-10-09

标签

PostgreSQL , tde , 透明加密 , 安全


视频回放

1、产品的问题点
- PG 不支持透明加密(TDE)功能, 实际上这个功能已开发好, 又因为没有完整的regress test被打回了.
- 《PostgreSQL 14 preview - TDE cluster_key_command 配置例子》
- 《PostgreSQL 14 preview - 支持TDE功能, 支持加密数据文件, 支持加密WAL日志文件》

2、问题点背后涉及的技术原理
- 安全风险存在于:
- 网络窃取客户端与数据库传输的内容
- 通过SSL链路、数据类型透明加密(传输加密内容)可以杜绝
- 机房直接窃取存储介质
- 通过介质加密、数据库数据文件TDE功能、数据类型透明加密(存储加密内容)可以杜绝
- 操作系统入侵, 窃取数据文件
- 通过数据文件加密(数据库数据文件TDE功能)、数据类型透明加密(存储加密内容)可以杜绝
- 数据库入侵, 通过流复制协议拷贝明文数据文件.
- 通过数据库数据文件TDE功能、数据类型透明加密(存储加密内容)可以杜绝
- 数据库入侵, 直接窃取数据库存储的表、字段、行等内容
- 数据类型透明加密(存储加密内容)可以杜绝
- 透明加密是指对业务没有侵入的加密方法, 例如不影响原有的计算、索引、排序等功能.
- 一般对业务有感的加密, 直接使用加密后的值无法像使用原始值一样进行计算、排序的动作, 因为加密后存储的内容发生了变化. 例如pgcrypto加密插件, 如果存储加密后的值, 排序和原始值的顺序肯定是不一样的, 也不能直接使用加密值进行加减乘除计算.
- 《DB吐槽大会,第30期 - PG 某些敏感信息未隐藏》

3、这个问题将影响哪些行业以及业务场景
- 通用

4、会导致什么问题?
- 非透明加密对业务有侵入,
- 无法实现数据库端的计算(等值查询除外, 但是等值查询也可能因为加密的hash value空间变小, 映射冲突导致结果与原始查询不一致. 需要拿到结果后在业务端使用原始值再次过滤. )
- 不能使用索引排序功能
- 不能使用排序功能
- 不能使用索引进行范围查询
- 非透明加密的密钥必须存储在客户端, 如果存储在数据库端有数据安全风险.

5、业务上应该如何避免这个坑
- 可以使用文件系统加密替代TDE

6、业务上避免这个坑牺牲了什么, 会引入什么新的问题
- 文件系统加密安全级别不够高, 在操作系统文件系统挂载的情况下, 可以拷贝明文的数据文件.

7、数据库未来产品迭代如何修复这个坑
- 希望TDE功能尽快合并到PG未来的大版本中. 解决机房直接窃取存储介质、操作系统入侵, 窃取数据文件、数据库入侵, 通过流复制协议拷贝明文数据文件的安全风险.
- 希望支持类型的透明加密, 例如阿里云提供的 SGX 全加密数据库功能. 解决所有安全风险. 需要硬件支持(例如CPU支持enclave)
- https://developer.aliyun.com/article/785984

期望 PostgreSQL 增加什么功能?

类似Oracle RAC架构的PostgreSQL已开源: 阿里云PolarDB for PostgreSQL云原生分布式开源数据库!

PostgreSQL 解决方案集合

德哥 / digoal's github - 公益是一辈子的事.

digoal's wechat

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论