個人情報保護法から見るセキュアOSの必要性 2

セキュアOSとは?

セキュアOSとは?

セキュアOSの基本的な考え方は、「従来のOSの問題である特権ユーザを何とかしよう」という実にシンプルなものです。この考え方をベースとして、 セキュアOSは「強制アクセス制御」と「最小特権」という2つのしくみを実現します。では、それぞれ説明していきましょう。


強制アクセス制御

強制アクセス制御は、いかなるユーザやプロセスも回避できないアクセス制御のしくみです。

従来のOSでも、一般ユーザに対してはアクセス制御を行うことができました。しかし、特権ユーザや特権ユーザの権限を持つプロセスにはアクセス制御 ができません。UNIXやLinuxでは、rwxで示されるようなパーミッションチェックがありましたが、root権限を持つユーザやプロセスはチェック を受けません。またWindowsでは、先ほども説明したとおり、Administratorユーザが自由にセキュリティポリシーを変えることが可能であ り、実質的に回避することができます。

そのため、特権ユーザはアクセス制御の「抜け道」として利用されることになり、システム管理やサーバアプリケーションに使える便利な権限として利用 される一方で、不正者の攻撃対象にもなっていました。「強制アクセス制御」は、この「抜け道」を防ぐために、特権ユーザであっても必ずアクセス制御を受け るようにします。

この「強制アクセス制御」というしくみを利用することで、実質的に特権ユーザの存在を無効化することが可能です。

最小特権

最小特権は、ユーザやプロセスに必要最小限の権限を与えるようにするしくみです。

この考え方は、前回紹介された「個人データへのアクセス制御を行う上で望まれる事項」そのものと言ってよいでしょう。ユーザやプロセスに必要最小限の権限しか与えないことによって、仮に不正が行われたとしても、被害を最小限に抑えようという考え方です。

従来のOSでは、特権ユーザしか持たない権限があるため、システム管理者などに特権ユーザ権限を与える必要がありました。しかし、セキュアOSでは 「強制アクセス制御」によって、特権ユーザに対してもアクセス制御をかけることができます。そのため、アクセス制御によって特権ユーザの権限を分割し、必要な権限のみを与えていくことが可能になります。

この「権限を分割し、必要なものだけを与える設定を行うしくみ」が「最小特権」です。次回以降でセキュアOS製品の紹介を行いますが、各製品の違いの1つとして挙げられるのが、「最小特権」における権限分割の粒度や設定のしかたです。

セキュリティ管理者の導入

「強制アクセス制御」と「最小特権」によって、特権ユーザを実質的に排除し、ユーザやプロセスに必要最小限のアクセス権限を与えられることはおわかりいただけたかと思います。

そこで問題になるのは「誰が権限を与えるのか=誰がアクセス制御設定を行うのか」ということです。セキュアOSでは、従来のシステム管理者に対して独立な「セキュリティ管理者」という概念を導入し、セキュリティ管理者がアクセス制御の設定を行います。

「セキュリティ管理者がアクセス制御設定を行う」というところだけを見ると、WindowsのAdministratorと同じようにも見えます。 しかし、Windowsでは、特権ユーザ権限でセキュリティポリシーを変更できました。つまり、「システム管理者=セキュリティ管理者」であったわけで す。

一方セキュアOSでは「システム管理者=セキュリティ管理者」ではありません。あくまで、セキュリティ管理者とシステム管理者は独立した概念です。 たとえ不正を行おうとする者がシステム管理者の持つ特権ユーザ権限を奪ったとしても、セキュリティ管理者にはなれないようになっています。

従来OSとの互換性と強制アクセス制御

セキュアOSは、「従来のOS」のセキュリティ機能を強化させることを目指しており、「新 しいOS」を作ろうとしているものではありません。ですから、従来のOSとの互換性を保つことが重要です。たとえば、セキュリティ管理者が設定した制限に 反しない限り、従来のOSで動作しているアプリケーションが動作することを前提としています。

しかし、従来のOSとの互換性を残したまま「強制アクセス制御」は本当に可能なのか?という疑問を持たれる方も多いと思います。そこで、「強制アクセス制御」のしくみを簡単に説明します。

従来のOSでのアクセス処理

強制アクセス制御のしくみを知るためには、従来のOSがどのような処理を行っているかを知る必要があります。ここではLinuxを例に取り、従来のOSとセキュアOSのしくみを説明します。

ユーザがファイルなどのリソースにアクセスする時の動作を簡単に説明すると、図1のようになります。

Linuxでのリソースへのアクセス
図1:Linuxでのリソースへのアクセス


(1)ユーザのコマンド実行
ユーザがファイル閲覧用のlessコマンドなどを用いて、ファイルなどのリソースにアクセス要求を行う。
(2)プロセスがアクセスに対応するシステムコールを発行
コマンド実行によって生成されたプロセスが、ファイルなどのリソースにアクセスするためのシステムコール(ファイルのopenやreadなど)を呼び出す。OSは、そのシステムコールに対応する関数(図では関数A)を呼び出す。
(3)パーミッションチェック
呼び出された関数A内部で、実際のアクセスを含む処理の前にパーミッションチェックを行う。
(4)実際の処理
(3)でパーミッションチェックが通れば、リソースへのアクセスを含めた、システムコールに対応する処理を行う。
(5)リソースへのアクセス
(4)の中でリソースへのアクセスが行われる。

ご存知の通り、従来のLinuxには(3)のようなパーミッションチェックというアクセス 権限チェックが存在します。しかし、図1に示すように、特権ユーザであるrootなら無条件でアクセスを許されてしまいます。「強制アクセス制御」を実現 するためには、特権ユーザに対してもチェックを行うセキュリティチェックを、どこかに実装する必要があります。

この記事をシェアしてください

人気記事トップ10

人気記事ランキングをもっと見る