外观
GaussDB 数据加密
传输加密
SSL/TLS 加密:
- 支持 SSL/TLS 协议,加密客户端与数据库之间的通信
- 提供证书管理功能,支持自签名证书和第三方权威证书
- 配置参数
ssl控制是否启用 SSL 连接 - 配置参数
ssl_cert_file和ssl_key_file指定证书和私钥路径
SSL 配置步骤:
- 生成 SSL 证书和私钥
- 配置数据库参数启用 SSL
- 重启数据库生效
- 客户端连接时指定 SSL 选项
示例配置:
yaml# 数据库配置文件 ssl = on ssl_cert_file = '/data/gaussdb/ssl/server.crt' ssl_key_file = '/data/gaussdb/ssl/server.key' ssl_ca_file = '/data/gaussdb/ssl/root.crt'
存储加密
透明数据加密 (TDE):
- 对数据文件进行透明加密,应用无需修改代码
- 支持 AES-128、AES-192、AES-256 等加密算法
- 加密范围包括数据文件、日志文件和备份文件
- 密钥层次结构:主密钥 -> 表空间密钥 -> 数据块密钥
TDE 配置步骤:
- 生成主密钥
- 启用 TDE 功能
- 创建加密表空间
- 在加密表空间中创建表
示例操作:
sql-- 生成主密钥 CREATE SECRET KEY FOR ENCRYPTION WITH ALGORITHM 'AES_256_CBC' IDENTIFIED BY 'MasterKeyPassword'; -- 启用 TDE ALTER SYSTEM SET tde_enable = on; -- 创建加密表空间 CREATE TABLESPACE encrypted_ts WITH ENCRYPTION = on LOCATION '/data/gaussdb/encrypted_ts'; -- 在加密表空间创建表 CREATE TABLE encrypted_table ( id INT PRIMARY KEY, data VARCHAR(100) ) TABLESPACE encrypted_ts;
列级加密
敏感数据保护:
- 对特定列进行加密,粒度更细
- 支持多种加密算法和密钥长度
- 提供加密列的查询和更新功能
- 适合保护信用卡号、身份证号等敏感字段
列级加密类型:
- 确定性加密:相同明文生成相同密文,支持等值查询
- 随机加密:相同明文生成不同密文,安全性更高
- 哈希加密:单向加密,适合密码存储
示例用法:
sql-- 创建带列加密的表 CREATE TABLE user_info ( user_id INT PRIMARY KEY, username VARCHAR(50), credit_card VARCHAR(16) ENCRYPTED WITH (ENCRYPTION_TYPE = DETERMINISTIC, ALGORITHM = 'AES_256_CBC', IDENTIFIED BY 'ColumnKeyPassword') ); -- 插入数据 INSERT INTO user_info VALUES (1, 'user1', '1234567890123456'); -- 查询数据(自动解密) SELECT * FROM user_info;
密钥管理
密钥类型:
- 主密钥:用于加密其他密钥,是加密体系的核心
- 表空间密钥:用于加密表空间数据
- 列密钥:用于加密特定列数据
- SSL 密钥:用于传输加密
密钥管理功能:
- 密钥生成:支持自动和手动生成密钥
- 密钥轮换:定期更换密钥,提高安全性
- 密钥备份:支持密钥备份和恢复
- 密钥销毁:安全删除不再使用的密钥
密钥轮换示例:
sql-- 生成新的主密钥 CREATE SECRET KEY FOR ENCRYPTION WITH ALGORITHM 'AES_256_CBC' IDENTIFIED BY 'NewMasterKeyPassword'; -- 轮换主密钥 ALTER SYSTEM ROTATE ENCRYPTION KEY;
加密性能影响
传输加密性能:
- SSL 加密会增加 CPU 开销,约 5%-15%
- 建议在生产环境中启用传输加密
- 可通过调整 SSL 协议版本和加密算法平衡安全性和性能
存储加密性能:
- TDE 加密主要影响 IO 操作,约 10%-20%
- 列级加密影响特定列的查询和更新性能
- 建议对敏感数据进行加密,非敏感数据可考虑不加密
加密合规性
支持的合规标准:
- GDPR(通用数据保护条例)
- HIPAA(健康保险流通与责任法案)
- PCI DSS(支付卡行业数据安全标准)
- 等保 2.0(网络安全等级保护制度)
合规性配置建议:
- 启用传输加密保护数据传输安全
- 对敏感数据启用存储加密
- 定期进行密钥轮换
- 实施严格的访问控制
- 保留完整的审计日志
加密故障排除
常见问题及解决方法:
- SSL 连接失败:检查证书有效性和配置参数
- TDE 解密失败:检查主密钥状态和表空间配置
- 性能下降:调整加密算法或考虑部分数据加密
- 密钥丢失:使用备份密钥恢复,或重新初始化加密系统
诊断工具:
- 使用
gs_sslcmd工具测试 SSL 连接 - 查看数据库日志定位加密相关错误
- 使用
gs_checkperf工具分析加密性能影响
- 使用
常见问题(FAQ)
Q1: GaussDB 支持哪些加密算法?
A1: GaussDB 支持多种加密算法,包括 AES-128、AES-192、AES-256、SM4 等对称加密算法,以及 RSA、ECC 等非对称加密算法。不同加密场景支持的算法可能有所不同。
Q2: 如何启用 GaussDB 的传输加密?
A2: 启用传输加密需要以下步骤:1)生成 SSL 证书和私钥;2)在数据库配置文件中设置 ssl = on 并指定证书路径;3)重启数据库服务;4)客户端连接时指定 SSL 选项。
Q3: TDE 加密会影响数据库性能吗?
A3: TDE 加密主要影响 IO 操作性能,一般会带来 10%-20% 的性能开销。具体影响程度取决于硬件配置、数据量和查询模式。对于敏感数据,建议权衡安全性和性能后决定是否启用 TDE。
Q4: 如何备份和恢复 GaussDB 的加密密钥?
A4: 可以使用 GaussDB 提供的密钥管理工具备份和恢复加密密钥。备份密钥时需要设置安全的密码,恢复时使用相同密码解密。建议将密钥备份存储在安全的离线位置。
Q5: 列级加密和 TDE 有什么区别?
A5: 列级加密只对表中的特定列进行加密,粒度更细,适合保护个别敏感字段;TDE 对整个表空间进行加密,透明度更高,应用无需修改代码。可以根据实际需求选择合适的加密方式,也可以结合使用。
