概述
最近有个需求是需要把某列声明成加密的,剩下的全部由Oracle完成。当用户插入或者更新数据时,列值会被截获、加密,然后用加密后的格式保存。然后,当这一列被查询时,又会自动对列值进行解密,然后把解密后的文本(明文)返回给用户。用户甚至都不需要知道发生过加密和解密——也就是所谓的透明。全部都是由Oracle代码内部完成,不需要任何触发器或者复杂的过程逻辑。
那么,这个怎么实现呢?下面用实例来演示下:
TDE
1、概念
TDE的目的:用最小的代价加密敏感数据,避免可能的对数据文件的盗窃带来的破坏。不过,注意,强调的重点是透明——也就是说,加密是自动进行的,解密也一样。在数据库中。Oracle不会区分用户。当一个用户具有查询对象的权限时,Oracle都会明文给出数据值
TDE总共有三层加密,第一层,wallet密钥的验证密码,这个值是人工设置的密码,第二层wallet密钥,第三层,表密钥,所以只要任何一层没被窃取,你的数据都是相对安全的。
2、使用限制
- 不能在主键,外键列使用TDE
- 对于使用了TDE的列我们只能创建b树索引。
- 大对象数据类型不可以使用