読者です 読者をやめる 読者になる 読者になる

開発コードネーム 『Beck』 その2

(注)以下は、例えば物理的に隔離された高価なセキュリティールームを用意することができない、
検証環境が無い、その他いろいろ、そもそも「そんなにお金をかけれない」といった状況で
「ソフトウェアの機能+少々の運用ルール」のみで個人情報の保護を実現する方法を
できる限り考えているだけです。世の中はお金持ちばかりでは無いので。
私の居る現場では、個人情報保護のため、特別な権限を持った人のみが入れるセキュリティルームがあります。
でも、そんな環境はどこの現場でも用意できるものではないと思い、
現場で、特別な権限を持たないような人であっても、別の部屋を用意しなくても、
個人情報漏洩の責任を負わされることを気にすることなく仕事が行える状態になり、
また、個人情報の保護、漏洩の防止を実現できる方法は無いか?と試しに考えてみたまでです。
 

「(1)システム管理者側の機能を贅沢にする」について。

個人情報の保護を考慮して、システムの障害原因調査やシステム動作の解析が行える設計としたい。

「ユーザーの個人情報」を「架空の個人情報(実在しない個人情報)」に置き換えたデータを使用して、
システム障害の原因調査が行えるような機能を盛り込むことにする。

今、要件を想像中で、っていうか言われたこと無いけど、そういう感じの要件あるだろう。
システム動作についてデータ調査を依頼したい状況の場合、
調査依頼先が、システムの開発元や保守・運用担当などであったとしても、
「本番環境における個人情報に関するデータを見られたくない」なんていう要望も少なからず、あるはずだ。

そんなご要望にお応えして、
「ご安心ください、個人情報は見えません。『架空の個人情報』が見える状態でデータ調査が可能なんです。」
といったような状況を実現するためのシステムの仕様、取り決め事などを考えている。
そんで軽く運用のイメージを描いてるところだ。詳細は後でまとめるとして。

まずは概要から。

一応の前提(システムの利用権限に関する決め事など)
・システム導入先の組織をA社とする。
・本番運用にて、ユーザー登録時に個人情報は暗号化してDBに登録する仕組みとする。
・暗号キーに関する情報(データ暗号化/復号化の際に使用するパスワード等)を保管するのはA社のみ。
 開発元はA社のその情報を破棄する。
システム開発担当の人たち(ソースが見れる人たち)に対しても
 システム本番運用時のA社固有の暗号キーに関する情報を秘密にしておく。
・本番運用時の個人情報が含まれたデータを「システム開発元(調査を行う側)」は取得することはできない。
・A社のユーザー本人は、自身のユーザーIDが分かる状態。
・ユーザーIDに該当する人が本当は誰なのか?が分かる権限を持つのはA社の「システム担当者」のみ。
・「システム開発元(調査を行う側)」の権限では、A社の本番環境のログインユーザー情報と
 ログインパスワードを知ることはできない。
・「システム開発元(調査を行う側)」の権限で、調査用DBを使用した場合には、
 ログインパスワードを知らなくても「ユーザーID」のみでログイン可能。
f:id:masawan-guitar:20161008195039p:plain

だいたい上記みたいな感じで運用させてみたい、ということだ。

例えば「給与の情報とか、データベースを覗いたら丸裸!」みたいなシステムよりはマシだとは思える。
開発元や保守・運用の人などに対しても、名前を見せないようにすることくらいしたほうがよいと思う。
AES暗号化はエチケット(礼儀作法)のようなものだ。システムにデリカシーは必要だ。
「AES-256」にしようかな。

@IT マスターIT/暗号技術:第3回 AES暗号化
http://www.atmarkit.co.jp/ait/articles/1506/18/news019.html

Microsoft Developer Network(MSDN)
SQL Server 2016 暗号化アルゴリズムの選択」
 https://msdn.microsoft.com/ja-jp/library/ms345262.aspx
「CREATE SYMMETRIC KEY (Transact-SQL)」
 https://msdn.microsoft.com/ja-jp/library/ms188357.aspx

システム動作の解析や、障害の原因調査のような業務では、
個人が誰であるかを特定できない性質の「個人を意味するシステム上のユニークなキー」の情報は必要。
個人が誰であるかを推測し難くするためには「ユニークなキー」は定期的に振り直した方がよいのかな。
まあ、その「ユニークなキー」を本番運用環境DBと調査用DBで一致させるようにする。
→ データベースが自動作成した「uniqueidentifier」型の識別子を利用する。

広告を非表示にする