环境:带有基于Java的应用程序的Oracle 11g数据库
我们希望加密数据库中的数据,用于表格的一些敏感列 我们希望这些列能够被解密并且对一组用户A可见。 我们不希望这些加密列对另一组用户B可见。 但是,此用户集B应该能够看到表中其余的非加密列。
从各种文章和帖子中,我了解TDE在列级别上进行了传统的加密和解密,但是如果上述基于用户/角色的加密能够以列级粒度进行,则无法找到明确的信息。
我们可以使用TDE实现上述目标吗?
答案 0 :(得分:0)
我不是DBA,但根据我对TDE的理解,从任何查询中查看时加密都不明显。它只加密磁盘数据文件中的数据,因此如果直接从文件中转储它就无法读取。
一个优秀的DBA可能有更好的答案,但只是袖手旁观,这就是我的建议。
有敏感数据的两个字段。一个是明确的(虽然TDE可能是一个好主意)而另一个是以某种方式混淆。这些字段可以标准化为单独的表。不允许直接访问表格,而是使用视图。该视图将被定义为:
create view TableName as
select ...,
case ROLE when 'A' then clear_field else obfuscated_field end as FieldName,
...
from SensitiveTable
join PossibleNormalizedTable on ... ;
您还需要视图上的触发器。如果只有A可以清楚地看到该字段,可能只有A可以插入并更新它。