金仓数据库KingbaseES用户表加密
关键字:
KingbaseES、用户表加密、安全特性、人大金仓、KingbaseES、
什么是用户表加密?
加密对象目前包含表空间、表和 WAL 日志,对应的加密方式为表空间加密、表加密和 WAL 日志加密。注意的是表空间加密方式和表加密方式是互斥的,同一加密对象不允许同时支持这两种加密方式。您可以在表级别、表空间级别以及 WAL 日志级别加密敏感数据。表加密对选定的表加密数据。表空间加密使您能够加密表空间中存储的所有数据。WAL 日志加密是对开启 WAL 日志加密功能的数据库产生的 WAL 日志进行加密。表加密、表空间加密和 WAL 日志加密都使用基于密钥管理的体系结构。未经授权的用户无法从存储和备份文件中读取数据,除非他们拥有密钥来解密数据。
表加密功能采用加密算法保护数据库表的数据在磁盘上存储不被非法获取。加密的对象包括表文件、及表的索引、辅助文件。以数据库表为粒度指定是否加密。
加密表使用方法
- 创建加密表
需要在表的定义最后加上 ENCRYPTED 关键字,可以指定密钥或者使用随机密钥,或者指定表加密设备和算法。
如下所示:
CREATE TABLE tablename table definition ENCRYPTED [ BY 'encryptkey' ];
CREATE TABLE tablename table definition ENCRYPTED [ BY [ key = encryptkey ] [ , method = encryptmethod ]];
参数说明
table definition 创建表时的其他设定,如列定义、继承、分区等。表加密功能支持继承表和分区表设置为加密表。
ENCRYPTED ENCRYPTED 必须为语句中最后一个设置项,设定新建表为加密表,生成随机密钥为加密密钥。当指定密钥时使用 ENCRYPTED BY encryptkey 语法。
encryptkey 指定表加密使用的密钥串,字符串最大有效长度 16 字节,超出长度会被截断。表及表的附属对象使用同一个密钥加密。
encryptmethod 指定加密表的加密方式(设备或算法)。
- 删除、访问加密表
加密表的访问方式 (DQL、DML) 和删除方式 (DROP) 不受表透明存储加密的影响。
- 修改加密状态
ALTER 语法支持修改数据库表的加密状态。修改时可能会重新生成存储文件,当表数据量较大时需要占用大量资源。
修改为加密:
ALTER TABLE tablename ENCRYPTED;
修改为非加密:
ALTER TABLE tablename UNENCRYPTED;
ALTER TABLE tablename NOT ENCRYPTED;
修改表的加密算法和密钥:
ALTER TABLE tablename ENCRYPTED [ BY 'encryptkey' ];
ALTER TABLE tablename ENCRYPTED [ BY [ key = encryptkey ] [ , method = encryptmethod ]];
- 查看加密表状态
支持函数和视图的方式判断表是否为加密表。
sysencrypt.is_table_encrypted 函数:
SELECT sysencrypt.is_table_encrypted('tablename')
sysencrypt.sys_table_encrypt 视图:
SELECT * FROM sysencrypt.sys_table_encrypt;