当前位置: 首页 > news >正文

GaussDB 数据库架构师修炼(十三)安全管理(5)-全密态数据库

1 数据库加密方案概述

​1)根据加密位置不同,可将加密方案分为如下3种:
驱动内加密:全密态特性
执行模块加密:加解密函数
存储模块加密:透明加密特性

2)不同方案的加密位置与粒度等不同,存在以下差异:

加解密函数 透明加密

   全密态等值查询                

 全密态软硬融合
安全性      低     中      高      高
可用性      中                 高      低     中
性能      低     高      中     中
膨账度      高     低       中      中
易用性       低     高        高      高

总结:从表格指标分析,安全性高选择全密态,可用性&性能高选择透明加密。

2 加解密函数

1) 特点

  • 加密方式:通过SQL语句调用加密函数
  • 解密方式:通过SQL语句调用解密函数
  • 加密位置:执行模块
  • 密钥管理:应用通过SQL语句传给数据库

2) 优点

  • 迁移方便:几乎所有数据库都免费支持该功能
  • 可用性高:合理控制执行流程后,不影响数据运算

3) 缺点

  • 易用性低:应用控制加解密流程与密钥管理
  • 安全性低:密钥需传输至数据库
  • 性能低:单次加密数据少,在数据密文上建索引
  • 膨胀度高:加密次数多,每次加密都产生膨胀

3 加密码举例

--加密:i_am_plain
csdn=> select gs_encrypt('i_am_plain', 'i_am_password_ 1', 'aes256_gcm_sha256');gs_encrypt
----------------------------------------------------------------------------------2/OEo16xu2QGfpfssBgEVklBQUaX1x2edwLnNF0Uiv/8rE6IrgWFTOZIK0nL1Z0HthHD4X5WnMEH1w==
(1 row)csdn=>--解密:i_am_plain
csdn=> select gs_decrypt('2/OEo16xu2QGfpfssBgEVklBQUaX1x2edwLnNF0Uiv/8rE6IrgWFTOZIK0nL1Z0HthHD4X5WnMEH1w==', 'i_am_password_ 1', 'aes256_gcm_sha256');gs_decrypt
------------i_am_plain
(1 row)csdn=>

4 透明加密   

1)特性原理
TDE表定义:透明加密特性(Transparent Data Encryption, TDE)提供加密存储功能。在建表时,可为表设置TDE属性
加密方式:向TDE表写入数据后,数据库自动加密并存储数据
解密方式:从TDE表查询数据时,数据库自动读取并解密数据
加密位置:存储模块
密钥管理:数据库自动管理,依赖密钥管理服务
2)优点
安全性较高:采用多级密钥方案,选取安全的加密算法
高可用:在执行模块数据处于明文格式,数据运算不受影响
性能高:充分数据存储特点与缓存机制,以数据页为粒度加解密
易用性高:加解密和密钥管理由数据库自动管理
膨胀度低:加密次数少, 一次加密一个数据页

3)透明加密密钥管理

  • 加密模型

多级加密:透明加密采用多级加密模型。

  • 数据密钥管理

密钥用途:默认情况下, 一个TDE表都有由一个数据密钥 加密。发生密钥轮转时, 一个TDE表可能由多个数据密钥 加密。
密钥生成:用户创建TDE表时,数据库会TDE表生成一个 独立的数据密钥。
密钥保护:所有数据密钥都由一个主密钥加密保护。

  • 主密钥管理

密钥用途:所有数据生成的数据密钥都会被主密钥加密。
密钥生成:主密钥由独立的华为云密钥服务生成。
密钥保护:华为云密钥服务对主密钥提供保护。

4)透明加密流程

  1.  主密钥管理

  创建主密钥:华为云提供密钥服务,支持创建和存储主密钥,每个主密钥都有独立的ID 。
访问主密钥:应用可通过Restful接口访问主密钥

      2. 特性管理

  配置特性:通过GUC参数开启透明加密功能,并配置用于访问密钥服务的参数。
3. 定义表加密
创建加密表:在创建表时,只需要设置。enable_tde属性,数据库便会自动加密表,并自动管理密钥。
4.读写加密表
存储数据:向加密表写入数据后,数据将被自动加密存储到磁盘,操作加密表的语法无任何变化。
查询数据:数据库从磁盘读取数据后自动解密数据。

5 透明加密举例

1)创建主密钥
在华为云中数据加密控制台, 可进入右侧界面所示的密钥管理服务,可在界面上创建主密钥
2)开启透明加密特性
在华为云中数据库控制台,可 进入右侧界面开启透明加密特性,并指定主密钥


3)查看透明加密特性

  •   查看透明加密功能是否已开启

  •   查看是否已自动配置访问密钥服务的参数

4)操作加密表

  •   创建加密表

  •   查看加密表基本信息

  •   向加密表写入数据

  •   从加密表查询数据

  •   轮转加密表的密钥

  •   转换加密表

步骤1:查看是否开启透明加密功能 enable_tde

[Ruby@dtest1 ~]$ gsql -h 192.168.0.71 -p 8000 -d postgres -U root -W huawei@1Pwd -ar
gsql ((GaussDB Kernel 505.2.1 build 159cea95) compiled at 2024-12-27 09:22:44 commit 10161 last mr 21504 release)
SSL connection (cipher: ECDHE-RSA-AES128-GCM-SHA256, bits: 128)
Type "help" for help.gaussdb=> show enable_tde;enable_tde
------------on
(1 row)gaussdb=>

步骤2:查看访问密钥服务的参数 tde_key_info

 gaussdb=> show tde_key_info; -- 查看访问密钥服务的参数 tde_key_infokeyType=...........

步骤3:创建TDE表

gaussdb=> CREATE TABLE t2  (c1  INT, c2 TEXT) WITH  (enable_tde = on, encrypt_algo =  'aes_128_ctr');

步骤4:查看加密表的加密信息 relname  | reloptions

SELECT relname,reloptions  FROM  pg_class WHERE  relname = 't1';  relname  | reloptions
----------+   ------------------------------------------------------------------------------
t1       | {enable_tde=on,encrypt_algo=AES_ 128_CTR, key_type=...,dek_cipher=...

步骤4:向加密表写入数据,数据将被加密存储

INSERT  INTO t1 VALUES  ( 1, 'tde plain 123');

步骤5:合法用户可直接查询数据明文,数据库会自动解密数据

SELECT * FROM t1;
------+- --------------
1  | tde plain 123(1 row)

步骤6:轮转加密表的密钥

gaussdb=> ALTER TABLE t1  ENCRYPTION  KEY  ROTATION;
ALTER TABLE

步骤7:将加密表转换为非加密表

gaussdb=> ALTER TABLE t1 SET  (enable_tde = off);

http://www.dtcms.com/a/335434.html

相关文章:

  • 17.5 展示购物车缩略信息
  • JMeter(进阶篇)
  • 3D打印——给开发板做外壳
  • 蓝凌EKP产品:JSP 性能优化和 JSTL/EL要点检查列表
  • Trae 辅助下的 uni-app 跨端小程序工程化开发实践分享
  • Docker之自定义jkd镜像上传阿里云
  • Spring AI 集成阿里云百炼平台
  • vscode无法检测到typescript环境解决办法
  • SpringCloud 03 负载均衡
  • 向量数据库基础和实践 (Faiss)
  • QT 基础聊天应用项目文档
  • Flutter vs Pygame 桌面应用开发对比分析
  • Android原生(Kotlin)与Flutter混合开发 - 设备控制与状态同步解决方案
  • 安卓开发者自学鸿蒙开发2页面高级技巧
  • 第一阶段总结:你的第一个3D网页
  • 【牛客刷题】成绩统计与发短信问题详解
  • OpenMemory MCP发布!AI记忆本地共享,Claude、Cursor一键同步效率翻倍!
  • 【FreeRTOS】刨根问底6: 应该如何防止任务栈溢出?
  • JavaScript性能优化实战(四):资源加载优化
  • FreeRTOS源码分析八:timer管理(一)
  • Hunyuan-GameCraft:基于混合历史条件的高动态交互游戏视频生成
  • 健身房预约系统SSM+Mybatis实现(三、校验 +页面完善+头像上传)
  • 基于Node.js+Express的电商管理平台的设计与实现/基于vue的网上购物商城的设计与实现/基于Node.js+Express的在线销售系统
  • Visual Studio Code 基础设置指南
  • iSCSI服务配置全指南(含服务器与客户端)
  • 12.web api 3
  • Docker入门:容器化技术的第一堂课
  • Chrome插件开发实战:todoList 插件
  • IP 分片和组装的具体过程
  • 二分查找(Binary Search)