2009-07-29 20 views
0

PIIと機密情報を含むデータベース表を使用しています。データの一部は、PIIおよび企業機密情報です。特に、データベースの外部のビュー(Oracleデータベース・リンク)によって別のプログラムにデータが公開されている場合は、設計者のドキュメントが開発者に提供されているとは限りません。PIIと機密情報を含む列のデータベース命名

列にPIIまたは機密情報が含まれていることを開発者に知らせるための命名規則はありますか?

答えて

2

列名?弱い。

すべてのPII属性を含むPIIデータの表を使用します。 PII以外のテーブルとPII以外のテーブルを分離してください。

非PIIとPIIの間の1対1の結合は、すべてコストがかかりません。また、PII表とPII列を明確かつ明確に使用できます。

1

私はS.Lottに同意しますが、私はもっと明示します。データが機密性が高い場合は、列名を実際に含まれている内容を意味するように選択することが重要であり、そのデータ型は実際に内容に適しています。制約は実際に問題のドメインと一致します。

そして、その上に、ノーPERSON_BASICを有する別のビュー(例えば、テーブルPERSONを有することになるなど、それらが適切に正しい場所に格納され、暗号化することができる別のテーブル、

1

にこのようなものを移動PII列を持つPERSON_PII)。このようにして、後でカラムが機密であると判断された場合(例えば、生年月日)、ビューを簡単に再作成して別のテーブルで大量のデータを再構築するのではなく、基本ビューからカラムを削除できます。

また、オプティマイザは、同じテーブルの列間の相関性が向上しています(時間が経つにつれてパフォーマンスが向上することが期待されます)。非PII表をPII表に結合すると、より複雑になりました。

別々のテーブルを作成して頻繁に結合する必要があると思う場合は、同じ人物のレコードが同じブロックになるようにクラスタを調べます。

パスワードまたはパッケージによって保護されたroleを使用して、PIIビュー/列へのアクセスを制御することを検討してください。

CONTEXTでも可能です。彼らは、列を見る前にコンテクストを設定するようにパッケージを呼び出すよう強制されます。 ビューは可能です

SELECT name, date_of_birth, 
     case when SYS_CONTEXT('SEC','xxx') ='ALLOW' THEN ssn END 
from ... 
関連する問題