最近数据泄露案例频繁发生,数据安全越来越被各大公司和企业所重视,不但要从管理上进行防范,从技术层面也需要严格控制。我研究了下与oracle相关的数据安全的产品和功能,归类如下:
本文主要介绍TDE(Transparent Data Encryption)TDE透明数据加密允许用户对各个表列或整个表空间进行加密。当用户向加密的列中插入数据时,透明数据加密会自动对该数据加密。当用户选择该列时,数据将自动解密。选择完毕后,数据将重新加密。- 对数据库功相关能透明(rman、压缩等),不需要额外操作。
默认情况下,钱夹创建于ORACLE_BASE/admin/ORACLE_SID/wallett目录下。如果没有,则手工创建。也可以修改该目录路径,但需要在sqlnet.ora文件进行配置。可以看到,设置完wallet密码后,wallet默认就是打开的。需要注意的是wallet的密码一旦生成之后,每次数据库重启之后,都必须使用命令显式打开。并且wallet一旦打开之后,在数据库实例关闭之前会一直处于打开状况,除非显式的通过close命令关闭。1. 加密列方法
ALTER TABLE ttt ADD (aaa VARCHAR2(128) ENCRYPT);ALTER TABLE ttt MODIFY (USER_ID ENCRYPT);ALTER TABLE ttt MODIFY (USER_ID DECRYPT);• BINARY_DOUBLE • BINARY_FLOAT • CHAR • DATE • INTERVAL DAY TO SECOND • INTERVAL YEAR TO MONTH • LOBs (Internal LOBs and SECUREFILE LOBs Only) • NCHAR • NUMBER • NVARCHAR2 • RAW • TIMESTAMP (includes TIMESTAMP WITH TIME ZONE and TIMESTAMP WITH LOCAL TIME ZONE) • VARCHAR21. 当列加密的字段类型不在支持范围内,可以使用表空间加密。
wallet密码可以通过orapki命令进行修改
orapki wallet change_pwd -wallet wallet_location[-oldpwd password ] [-newpwd password]wallet密码也可以通过图形界面修改,不做示例了。使用SQL 创建的wallet 的问题是不能自动登陆,这样我们在关闭wallet或者重启实例后,都需要手动的来open wallet。不过Oracle 提供了wallet 自动登陆功能,可以在创建后使用owm(Oracle wallet manager)来修改。
在oracle用户终端输入own命令调出gui界面,使用owm工具修改。TDE可以对也可以对expdp,rman,compress等功能适用,这里就不一一测试了。使用场景更偏向于数据的安全。隐藏敏感数据,不被人知晓,更多的时候是防止数据库上的数据文件以及备份被”偷窃“之后的数据泄密。
使用场景,可以对一些敏感数据进行加密(信用卡和帐户号码、地址、姓名和个人身份号码(驾驶证,身份证)),或者对关键数据进行加密,如薪水、研究结果、客户信息等。如需要对外键列中的数据进行加密,或者需要除 B-TREE 树外的索引,又或者需要对列级TDE 不支持的数据类型进行加密,可选择表空间级别加密。