我正在使用包含PII和敏感信息的数据库表。一些数据是PII和公司敏感信息。设计文档可能并不总是可供开发人员使用,尤其是当数据被数据库(Oracle数据库链接)外部的视图公开给另一个程序时。
是否有良好的命名约定,让开发人员知道该列包含PII或敏感信息?
答案 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 ...