对于数据库的安全性而言,除了使用用户、权限和角色进行控制外,还可以通过数据加密或者数据掩码来实现,关于透明的数据加密,可以对个别表列或整个表空间进行加密。当用户向加密的列中插入数据时,透明数据加密会自动加密该数据。当用户选择该列时,数据将自动解密。选择完毕后,数据将重新加密。
本篇就Oracle 12c中的透明数据加密进行演示。
1 演示环境
SQL> select * from v$version;
BANNER CON_ID
-------------------------------------------------------------------------------- ----------
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production 0
PL/SQL Release 12.1.0.2.0 - Production 0
CORE 12.1.0.2.0 Production 0
TNS for Linux: Version 12.1.0.2.0 - Production 0
NLSRTL Version 12.1.0.2.0 - Production 0
2 配置透明的数据加密
1)查看数据库兼容性
如果希望配置完整的表空间加密特性,则必须将数据库的compatible初始化参数设置为11.2.0.0或更高。
SQL> show parameter compatible
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
compatible string 12.1.0.2.0
2)创建基于密码的软件密钥库
创建密钥库,需要使用administer key management SQL语句,对应的密钥库目录必须存在,否则出错。
SQL> administer key management create keystore '/u01/app/oracle/admin/ORCL/wallet' identified by system;
keystore altered.
3)打开(关闭)密钥库
在创建基于密码的软件密钥库之后,如果要使用,必须手动打开它。
SQL> administer key management set keystore open identified by system;
keystore altered.
如果不需要加密了,可以使用以下命令将密钥库关闭:
administer key management set keystore close identified by system;
4)创建主加密密钥
主加密密钥存储在密钥存储库中,用于保护表密钥和表空间加密密钥。默认情况下,主加密密钥是由透明数据加密生成的随机密钥。
SQL> administer key management set key identified by system with backup using 'passwd key backup';
keyst