【问题标题】:Encrypting data in oracle databaseoracle数据库中的数据加密
【发布时间】:2014-07-28 17:08:18
【问题描述】:
可以通过哪些方式对数据进行加密?比如说工资列,如果可能的话,即使管理员也不应该看到加密的列,数据应该只能通过应用程序对应用程序中定义的具有访问权限的用户可见,应用程序的更改(添加新功能来加密/在应用程序级别解密)将是最后的手段并且是最小的。
到目前为止,我已经想到了 2 种方法,任何新的想法或以下的优点和缺点都将不胜感激:
1.使用Oracle TDE(透明数据加密)。
- 缺点:管理员可能会授予自己查看数据的权限
2. 创建触发器以在插入之前进行加密,并在管道中创建要检索的内容。
【问题讨论】:
标签:
oracle
encryption
tde
【解决方案1】:
Oracle Database Vault 是防止 DBA 访问存储在数据库中的数据的唯一方法。然而,这是一个额外的成本产品,它要求您拥有一组额外的安全管理员,他们的工作是授予 DBA 他们实际需要的任何权限。
除此之外,您还需要寻找在数据库之外的应用程序中加密和解密数据的解决方案。这将涉及对数据库结构进行更改(即salary 列将被声明为raw 而不是number)。它涉及应用程序更改以调用加密和解密例程。这需要您解决通常是这类解决方案失败的关键管理问题。将加密密钥存储在应用程序可以检索它但管理员无法访问的地方通常并非易事。然后您需要确保单独备份和恢复密钥,因为数据库中的加密数据没有密钥是无用的。
不过,在大多数情况下,我倾向于建议正确的方法是让 DBA 查看数据并审计他们运行的查询。如果您发现某个特定的 DBA 出于乐趣而运行查询,而不是在其工作过程中偶尔查看一些数据,您可以在此时采取行动。知道他们的查询正在被审计通常足以阻止 DBA 访问她并不真正需要的数据。