透明数据加密
📄字数 2.3K
👁️阅读量 加载中...
透明数据加密(TDE/Transparent Data Encryption)旨在对存储于文件系统中的静态数据文件执行加密,以防范存储介质或数据文件被盗时,其中存储的敏感数据泄露。其加解密过程对于用户以及应用而言是不可见的,由数据库在文件数据与内存数据之间转换时自动执行数据加解密。
透明数据加密启用方式:
- 使用具有
ACL_SSO
权限的用户,创建加密机,请参阅加密机 - 切换回业务用户,可对以下对象设置加密机,加密其范围内的敏感数据:
注意
- 系统表不支持加密操作,仅支持对非系统表(即用户表)进行加密
- 加密机使用优先级为:表级 > 用户级 > 库级,新插入的数据或者创建的表,会按照此优先级查找加密机,并使用首个查找到的加密机执行加密,无需对表重复设置加密机
在执行加密操作时,还有以下事项需要特别注意:
重要
在启用级联(CASCADE)或强制(FORCE)选项,加密库与加密用户下表数据时,请谨慎操作,提前评估影响数据量,是否存在数据量大的表等,避免影响业务正常运行!
一、加密库
加密当前会话所在库下表数据。
1.1 语法格式
1.2 参数说明
- ( ICONST | SCONST ):指定加密机标识(ID或名称)
- ICONST:指定加密机ID,取值范围为[2,255]
- SCONST:指定加密机名称
- opt_cascade:指定加密的迭代性
- 未指定:设置库加密机,后续库下创建未指定加密机的表,将先尝试用户加密机加密,若不存在,再使用库加密机加密
CASCADE
:设置库加密机,并将库下所有已有用户表,应用opt_force
参数,使用库加密机加密
- opt_force:指定是否强制执行加密
- 未指定:当表未加密时,才使用指定加密机加密,否则不加密
FORCE
:强制执行加密,若表已加密,则使用原加密机解密后,再使用指定加密机重新加密
1.3 示例
示例1
加密库。sql-- 使用SYSSSO安全管理员登录并创建加密机 SQL> CREATE ENCRYPTOR 'enc_db' BY 'enc_key_value'; -- 使用SYSDBA系统管理员创建库并切换库 SQL> CREATE DATABASE db_enc; SQL> USE db_enc; -- 执行加密库 SQL> ENCRYPT DATABASE BY 'enc_db';
1
2
3
4
5
6
7
8
9
二、加密用户
加密指定用户下表数据。
2.1 语法格式
2.2 参数说明
- UserId:待加密用户名称
- ( ICONST | SCONST ):指定加密机标识(ID或名称)
- ICONST:指定加密机ID,取值范围为[2,255]
- SCONST:指定加密机名称
- opt_cascade:指定加密的迭代性
- 未指定:设置用户加密机,后续用户下创建未指定加密机的表,将使用用户加密机加密
CASCADE
:设置用户加密机,并将用户下所有已有用户表,应用opt_force
参数,使用用户加密机加密
- opt_force:指定是否强制执行加密
- 未指定:当表未加密时,才使用指定加密机加密,否则不加密
FORCE
:强制执行加密,若表已加密,则使用原加密机解密后,再使用指定加密机重新加密
2.3 示例
示例1
加密用户。sql-- 使用SYSSSO安全管理员登录并创建加密机 SQL> CREATE ENCRYPTOR 'enc_user' BY 'enc_key_value'; -- 使用SYSDBA系统管理员创建用户 SQL> CREATE USER user_enc IDENTIFIED BY 'Test@2002'; -- 执行加密用户 SQL> ENCRYPT USER user_enc BY 'enc_user';
1
2
3
4
5
6
7
8
三、加密表
加密指定表数据。
3.1 创建加密表
3.1.1 语法格式
此语法格式请参阅创建表,并指定opt_encrypt
语法子句。
3.1.2 示例
示例1
创建一张加密表。sql-- 使用SYSSSO安全管理员登录并创建加密机 SQL> CREATE ENCRYPTOR 'enc_tab_new' BY 'enc_key_value'; -- 切换回业务用户创建加密表 SQL> CREATE TABLE tab_enc(id INTEGER, name VARCHAR) ENCRYPT BY 'enc_tab_new';
1
2
3
4
5
3.2 加密已有表
3.2.1 语法格式
3.2.2 参数说明
- name_space:待加密表名称
- ( ICONST | SCONST ):指定加密机标识(ID或名称)
- ICONST:指定加密机ID,取值范围为[2,255]
- SCONST:指定加密机名称
- opt_force:指定是否强制执行加密
- 未指定:当表未加密时,才使用指定加密机加密,否则不加密
FORCE
:强制执行加密,若表已加密,则使用原加密机解密后,再使用指定加密机重新加密
3.2.3 示例
示例1
加密已有表。sql-- 使用SYSSSO安全管理员登录并创建加密机 SQL> CREATE ENCRYPTOR 'enc_tab_old' BY 'enc_key_value'; -- 切换回业务用户创建表 SQL> CREATE TABLE tab_enc(id INTEGER, name VARCHAR); -- 执行加密表 SQL> ENCRYPT TABLE tab_enc BY 'enc_tab_old';
1
2
3
4
5
6
7
8