使用PII和敏感信息对列进行数据库命名

时间:2009-07-29 01:45:59

标签: database oracle database-design

我正在使用包含PII和敏感信息的数据库表。一些数据是PII和公司敏感信息。设计文档可能并不总是可供开发人员使用,尤其是当数据被数据库(Oracle数据库链接)外部的视图公开给另一个程序时。

是否有良好的命名约定,让开发人员知道该列包含PII或敏感信息?

3 个答案:

答案 0 :(得分:2)

列名?弱。

使用包含所有PII属性的PII数据表。保持PII表与其他具有非PII的表分开。

非PII和PII之间的一对一联合并不是那么昂贵。它提供了明确,明显的PII表和PII列的使用。

答案 1 :(得分:1)

我同意S.Lott但我会更明确。如果数据是敏感的,那么选择列名来表示它们实际包含的内容甚至更重要,数据类型实际上适合于内​​容;并且约束实际上与问题域匹配。

然后,最重要的是,将这些内容移动到另一个表格,在那里可以对它们进行适当的加密,存储在正确的位置等。

答案 2 :(得分:1)

我会有单独的视图(例如PERSON_BASIC没有PII列的表PERSON和PII列的PERSON_PII)。这样,如果稍后确定列是敏感的(例如出生日期),那么您可以轻松地重新创建视图以从基本视图中删除列,而不是使用单独的表获得的大量数据重组练习。

此外,优化器在同一个表上的列之间的相关性方面正在变得更好(并且您希望随着时间的推移而改进)。一旦你开始将非PII表加入PII表,你就会把它变得更复杂。

如果您选择单独的表格,并认为它们需要经常加入,请查看群集,以便同一个人的记录位于同一个块中。

考虑使用由密码或程序包保护的role来控制对PII视图/列的访问。

CONTEXT也可以这样做。在查看列之前,他们被迫调用包来设置上下文。 视图可以是

SELECT name, date_of_birth, 
       case when SYS_CONTEXT('SEC','xxx') ='ALLOW' THEN ssn END
from ...