0

环境:带有基于 Java 的应用程序的 Oracle 11g DB

我们正在寻找加密数据库中的数据,用于表的一些敏感列。
我们希望这些列被解密并且对一组用户 A 可见。我们不希望这些加密列对另一组用户 B 可见。但是,这个用户集 B 应该能够看到其余的表的非加密列。

从各种文章和帖子中,我了解到 TDE 在列级别进行透明的加密和解密,但是如果上述基于用户/角色的加密,列级别粒度是否可行,则无法找到明确的信息。

我们可以使用 TDE 实现上述目标吗?

4

1 回答 1

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 可以插入和更新它。

于 2015-01-21T06:02:14.930 回答