あなたの大切な情報を守ります
−データベースのセキュリティ設計支援−
1.知らないうちに情報が漏洩している!?
社内のプロジェクトを管理するデータベースについて考えてみましょう(図1)。プロジェクトデータベースには機密データベースSPと一般データベースSPの2つの種類があるとします。管理者Mは機密データベースSPの内容を見ることはできるが、社員Eは見ることも書き込むこともできないとします。一般データベースPは、管理者Mは見ることも書き込むこともできるが、社員Eは見ることだけが許可されているとしましょう。このプロジェクトデータベースを運用していると、ある日、突然、社員Eに機密データベースSPの内容が漏れていました。
どうしてこのようなことが起こるのでしょうか?データベース内に格納されているデータに対して、ユーザ毎に読み込みや書き込み等のアクセス権を設定しただけでは情報が漏洩してしまう場合があるのです。プロジェクトデータベースの例では、管理者Mが機密データベースSP内に記録されているプロジェクトXに関する戦略、予算、担当者等の情報を読み出し、知らずに、あるいは、誤って、それを一般データベースPに書き込んだとします。すると、図1に示すように、プロジェクトXの機密性の高い内容が社員Eの目にふれてしまうことになります。
2.どのようにして情報を守るか
プロジェクトデータベースの例のように、社員Eに機密性の高い情報が間接的に漏洩してしまう経路を隠れパスと言います。データベースのセキュリティを実現するには、このような隠れパスを検出し、情報の漏洩が起こらないようにする必要があります。当研究所では、情報フロー制御モデルというセキュリティモデルに基づいてデータベースのセキュリティを実現する方式について研究しています。
情報フロー制御モデルでは、データと、データにアクセスするユーザに対してセキュリティレベルというレベルを設定します。そして、セキュリティレベルの低い方からセキュリティレベルの高い方へのみ情報が流れるようにデータベースへのアクセスを制御します。従って、図2に示すように、ユーザはセキュリティレベルの低いデータを読み込むことができ、また、セキュリティレベルの高いデータに書き込むことができます。しかし、セキュリティレベルの高いデータを読み込むことと、セキュリティレベルの低いデータに書き込むことは禁止されます。このようにすると、セキュリティレベルの低いユーザは、セキュリティレベルの高いデータの内容を見ることができないので、機密情報が漏洩するのを防ぐことができます。
セキュリティレベルの低いデータに書き込みことを禁止しているのは、隠れパスを生じさせないためです。もし、セキュリティレベルの低いデータに書き込むことを許可してしまうと、先述の例(図1)のように隠れパスが生じます。
3.どのようにしてセキュリティレベルを設定するのか
セキュリティレベルに基づいてデータベースのアクセスを制御することにより、隠れパスをなくし、データベースのセキュリティを実現することができますが、それでは、このセキュリティレベルはどのようにして設定したらよいでしょうか? このセキュリティレベルはあらかじめシステムで設定しておく必要があります。
データベースに対するセキュリティ上の要求条件には、ユーザがあるデータにアクセスしたいというアクセス要求と、あるデータにはあるユーザからのアクセスを禁止したいという機密要求とがあります。本方式では、(1)これらの2つのセキュリティ上の要求条件を受け付けて、(2)これらの要求の間の矛盾、即ち、隠れパスがないかどうかを調べ、(3)もし、矛盾が存在すれば、アクセス要求を変更する等の方法により、矛盾を解消した上で、(4)アクセス要求と機密要求を満たすようにセキュリティレベルの設定を行います。
4.セキュリティレベル設定例
次世代データベースとして注目されているオブジェクト指向データベースのセキュリティ設計に適用した例を図3に示します。オブジェクト指向データベースでは、データはいくつかのクラスに分類され、クラス内のデータは、クラス毎に定義されているメソッドと呼ばれる手続きを介してアクセスされます。この顧客情報データベースに対するアクセス要求とは、たとえば、「ユーザAはすべての情報を見たい」というものです。機密要求は、「ユーザCには加入者の加入サービス情報を見せたくない」というようなものです。セキュリティ設計支援システムでは、これらの要求の間の矛盾を検出し、矛盾があれば、それを解消した上で、それらの要求を満足するように、クラス、クラス内の各々のデータ(インスタンスと呼ぶ)、メソッド、および、ユーザに対して、セキュリティレベルを自動的に設定します。ユーザAのセキュリティレベルは3に設定され、全てのメソッド、クラス、インスタンスのセキュリティレベルは3以下に設定されていますので、ユーザAはメソッドを介して顧客情報データベース内の全ての情報にアクセスできることがわかります。また、ユーザCのセキュリティレベルは1で、加入者の加入サービス情報のセキュリティレベルは2あるいは3ですので、加入サービス情報を見ることができないようになっていることがわかります。
5.おわりに
ここでは、個々のデータに対する直接の機密保護について述べましたが、当研究所では、あるデータの内容から他のデータの内容が推定されてしまう、いわゆる推論による機密漏洩に対するセキュリティに関する研究も進めています。
Copyright(c)2002(株)国際電気通信基礎技術研究所

