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

1 数据库加密方案概述

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

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

|---------|-----------|----------|-------------|-------------|
| | 加解密函数 | 透明加密 | 全密态等值查询 | 全密态软硬融合 |
| 安全性 | 低 | 中 | 高 | 高 |
| 可用性 | 中 | 高 | 低 | 中 |
| 性能 | 低 | 高 | 中 | 中 |
| 膨账度 | 高 | 低 | 中 | 中 |
| 易用性 | 低 | 高 | 高 | 高 |

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

2 加解密函数

  1. 特点
  • 加密方式:通过SQL语句调用加密函数
  • 解密方式:通过SQL语句调用解密函数
  • 加密位置:执行模块
  • 密钥管理:应用通过SQL语句传给数据库
  1. 优点
  • 迁移方便:几乎所有数据库都免费支持该功能
  • 可用性高:合理控制执行流程后,不影响数据运算
  1. 缺点
  • 易用性低:应用控制加解密流程与密钥管理
  • 安全性低:密钥需传输至数据库
  • 性能低:单次加密数据少,在数据密文上建索引
  • 膨胀度高:加密次数多,每次加密都产生膨胀

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接口访问主密钥

  1. 特性管理

配置特性:通过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_info
  keyType=...........

步骤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);
相关推荐
用户962377954481 天前
DVWA 靶场实验报告 (High Level)
安全
数据智能老司机2 天前
用于进攻性网络安全的智能体 AI——在 n8n 中构建你的第一个 AI 工作流
人工智能·安全·agent
数据智能老司机2 天前
用于进攻性网络安全的智能体 AI——智能体 AI 入门
人工智能·安全·agent
用户962377954482 天前
DVWA 靶场实验报告 (Medium Level)
安全
red1giant_star2 天前
S2-067 漏洞复现:Struts2 S2-067 文件上传路径穿越漏洞
安全
用户962377954482 天前
DVWA Weak Session IDs High 的 Cookie dvwaSession 为什么刷新不出来?
安全
cipher3 天前
ERC-4626 通胀攻击:DeFi 金库的"捐款陷阱"
前端·后端·安全
一次旅行6 天前
网络安全总结
安全·web安全
red1giant_star6 天前
手把手教你用Vulhub复现ecshop collection_list-sqli漏洞(附完整POC)
安全
ZeroNews内网穿透6 天前
谷歌封杀OpenClaw背后:本地部署或是出路
运维·服务器·数据库·安全