個人情報漏洩とセキュリティ対策

個人情報を末端から漏洩させないようにするために、さてシステムは何をしてくれるだろう?

個人情報保護法が罰則規定つきで施行され始めたこともあるが、ここ何年か、セキュリティ関連技術はかなり目立っている。本来かなり地味というか専門的というかマニアックな技術分野であると思うのだが、展示会でもセミナー案内でも、いつでもセキュリティ関連の話題はよく目立つ。

ここのところ良く問題にされているのが個人情報の漏洩だが、個人がケアレスでデータの入った何かを誰かに渡してしまう(紛失するなり置き忘れるなり)を含めて、セキュリティという観点からシステム側はどのような保護機能を提供してくれるのか、少しゼミの四回生と話す機会があった。
そこで少し面白いことに気が付いた。

データベースシステムには多くの場合アクセス権管理機構がついている。が、それはユーザ、またやプログラムごとに、どのデータ(またはデータの一部分)に対して、どのようなアクセスを認めるか、といったことをほんの少し制限できるに過ぎない。データの制約についてはせいぜいフィールドを限定する、または他のフィールドとある条件で関連したものは認めるといった程度か。アクセスの種類にしても read/update/create/delete といった極めて primitive なことだけではないだろうか。( SQL command の種類を限定できる、という制約もあるだろうが、これは結局は read/write の制約と変わらない。)

このデータ管理機構がうまく機能する局面ももちろんあるだろうが、以下のような例には余り向かないことが分かる。

携帯電話の販売店店員は、窓口にやってくる全ての顧客の全ての登録された個人情報を見ることができるだろう。これは最も末端の社員(またはアルバイト!)が最も多くのフィールドに、かなり強い権利でアクセスできるように設定しなければならない。
対して季節ごと、地域ごとの売り上げの推移を分析しようとしている企業のコアにいる人たちには効果的に機能する。つまりマクロな分析をしたい人には個人情報と要ったミクロな情報は見せないように、といった設定がごく自然にできる。
この二者、なにかアンバランスだ。何かが足りない。

後者は確かに全件 5000 万件の個人情報にアクセスできることから来る大量個人情報漏洩や悪用の防止には役に立つ。しかしそれより前者の末端窓口担当者の方がより強い権利を持つアクセス権設定になっている。末端窓口担当者の方が情報管理について信頼できない率が高いと容易に想定されるのに、そこに最大の権限があるのはやはりおかしい。

この場合の末端担当者のデータへのアクセスは、おそらくデータベースの層ではなく、アプリケーションの層などで制約が掛けられているものと思われる。つまりある特定のアプリケーションを通じてでないと処理できない、といったように。だから末端担当者が query を直接叩いて顧客情報をごっそり持ち帰るような短絡的なことは出来ない、と。

しかし手元のアプリケーションは不正に改造され、窓口業務アプリになりすました偽アプリが次々と個人情報を収集して回る日が来るかも知れない。そもそもそれで完璧に管理できるのなら、データベースシステムにアクセス制限機構は不要だ。そもそも何故こんな二重管理になるのだ?データベースシステム側でやってくれればいいのに。

結局、現在のデータベースは「アクセスする対象」しかセキュリティ対策の視野に入って居らず、「アクセスする量、頻度、順序」といったもの(アクセスの振る舞い?)が洩れているためではないか。
あるアクセス権限をもったユーザからの query は、一度に 5 レコード以上の結果が出る場合エラーとする、とか、ある一定以上の頻度を超えたアクセスは断る、といった機能である。

従来的データベースシステムがもつアクセス管理機構を静的なものだったと捉え、それにこういった動的な制約を加える、と言った試みは、どこかで行われているのだろうか?これはこれで結構面白い題材だと思うが。セキュリティ対策の非常に原始的な部分、データベースやファイルシステムが提供してくれるアクセス管理システムにもまだやるべきことが残っているということか。



Yutaka Yasuda

2005.04.22