ポイント

●アクセス制御には,任意アクセス制御(DAC),強制アクセス制御(MAC),ロールベースのアクセス制御(RBAC)の3種類ある
●任意アクセス制御(DAC)は,オブジェクトの所有者がアクセス権限を設定する
●強制アクセス制御(MAC)は,あらかじめ設定されたレベル分けによって,強制的に読み取りや書き込みなどの権限が制限される
●ロールベースのアクセス制御(RBAC)は,ロール(役割)によって実行できる操作が制限される

 あるユーザーがサーバーにログインしました。しかし,そのサーバー上のすべてのリソースやサービスを利用できるわけではありません。許されている行為は,あらかじめ管理者によって決められている(=アクセス制御されている)からです。今回は,代表的な3つのアクセス制御方式を見ていきましょう。代表的な3つのアクセス制御方式とは,任意アクセス制御(DAC),強制アクセス制御(MAC),ロールベースのアクセス制御(RBAC)です。

任意アクセス制御(DAC)

 任意アクセス制御(DAC:Discretionary Access Control)では,オブジェクト(ファイルなど)の所有者が,メンバーの属性ごとに権限を設定します。

 例えば,「持ち主(Owner)」,「グループ(Group)」,「全員(Everyone)」など,各ファイルやディレクトリにアクセスしてくるメンバーの属性ごとに,「読み取り(Read)」,「書き込み(Write)」,「実行(eXecute)」などの権限を決めて,このルールに従ってアクセスを制御します。LinuxやUNIXが標準で採用しているファイルへのアクセス制御方式が,この任意アクセス制御方式です(図1)。


図1 任意アクセス制御(DAC)の例
UNIXやLinuxが標準で採用しているファイル/ディレクトリに対するアクセス制御方式がDACである。

強制アクセス制御(MAC)

 二つめのアクセス制御方式である「強制アクセス制御(MAC:Mandatory Access Control)」に話を移しましょう。MACは,操作主体と操作対象それぞれにセキュリティ・レベルを段階分けして,その段階(レベル)を比較することで強制的にアクセス権限を決定する方式です。操作主体(サブジェクト)はユーザーやアプリケーション,操作対象(オブジェクト)はファイルやディレクトリが該当します。

 具体例を挙げて説明しましょう。

 操作主体,操作対象とも1~3のそれぞれ1~3の3種類にレベル分けして運用されていたとします。そして,アクセス権限は以下のルールに従うものとします。

操作主体のレベル ≧ 操作対象のレベル :読み取りが許可される
操作主体のレベル ≦ 操作対象のレベル :書き込みが許可される

 この場合,レベル2に分類されたユーザーAは,各ファイルのレベルを比較して,

自分よりレベルの数値が小さいファイルX(レベル1)は読み取りのみが可能
自分と同じレベルのファイルY(レベル2)は読み取りと書き込みが可能
自分よりレベルの数値が大きいファイルZ(レベル3)は書き込みのみが可能

というようにアクセスが制限されます(図2)。

図2 強制アクセス制御(MAC)の例
操作主体のレベルと,操作対象のレベルを比較して,アクセス権限が決まる。

 ところで,通常はファイルを修正(書き込み)するとき,対象のファイルを読み出してから修正を加えます。3番目の「書き込みのみが可能」,つまり,読み取りができないのに,書き込みのみが許可されているというのは一体どういうことなのか,イメージできるでしょうか?