「必須アクセス制御 (Mandatory Access Control、MAC)」は、システムによって実施されるアクセス制御機構で、セキュリティポリシーの実現に、認可上限と機密ラベルを使用します。簡単に説明すると、ユーザーがセッション開始時に選択したセキュリティレベル (認可上限または機密ラベル) と実行するプログラムを対応付け、そのレベルと同等または下位の情報、プログラム、デバイスだけにアクセスを許可する制御です。また、対応付けたレベルよりも下位のファイルに対しては、書き込みも禁止します。MAC は、ユーザーサイトのセキュリティポリシーに応じて実施され、これを書き換えるには、特別な承認または特権が必要となります。
「ユーザー認可上限」は、ユーザーサイトのセキュリティポリシーの一部として、セキュリティ管理者がサイトのすべてのユーザーに割り当てるものです。ユーザー認可上限は、ユーザーに委ねられたセキュリティの程度を示し、次の 2 つの要素で構成されます。
格付け - セキュリティの階層レベルを表す。人物で言えば信用の度合い、データで言えば要求される保護の度合いを示します。政府で使用されている格付けには、「TOP SECRET」、「SECRET」、「CONFIDENTIAL」、「UNCLASSIFIED」があります。また、業界標準ではありませんが、仮定的な格付け階層として、「PUBLIC」、「INTERNAL」、「NEED TO KNOW」、「REGISTERED」というような分類があります。
コンパートメント - 作業グループ、部門、プロジェクト、トピックなど、情報にアクセスできるグループを表す。アクセス可能なコンパートメントは、機密情報の必要性に応じて定義されます。
次の図は、一般的な認可上限を示しています。
Trusted Solaris は、文字列を使用して、ユーザーがアクセスできる情報を特定します。この文字列を「機密ラベル (SL)」と呼びます。機密ラベルにも、認可上限の場合と同様に、格付け部分とコンパートメント部分があります。 機密ラベルは、ウィンドウのタイトルバーの角括弧 ([ ]) の中か、画面の下のトラステッドストライプという特殊な領域の中に表示されます。システム設定によってはまったく表示されない場合もあります。図 1-3 は、機密ラベルが表示されるように設定されたケースで、機密ラベルとトラステッドストライプがそれぞれ示されています。
システム内のサブジェクトとオブジェクトはすべて機密ラベルを持っています。「サブジェクト」とは、オブジェクト間に情報を流したり、システムの状態を変更したりする能動的な存在であり、通常はプロセス (実行中プログラム) を指します。「オブジェクト」とは、データを保持していたり、受け取ったりする受動的な存在であり、データファイルやディレクトリ、プリンタなどのデバイスを指します。プロセスで kill を使用したときのように、場合によってはプロセスがオブジェクトになることもあります。
Trusted Solaris は、実行されたセキュリティ関連のトランザクションすべてを仲介します。サブジェクトの機密ラベルはオブジェクトの機密ラベルと比較され、どちらのラベルが「優位である」か (次の表を参照) によって、トランザクションは許可または拒否されます。ある機密ラベルは、次の 2 つの条件が満たされていれば、もう 1 つの機密ラベルよりも「優位」だとみなされます。
機密ラベルの格付け部分が、もう 1 つの機密ラベルの格付けと同等であるか、それよりも重要度が高いとき
ラベルのコンパートメント部分がすべてもう 1 つのラベルに含まれているとき
2 つのラベルは、同じ格付けと同じコンパートメントのセットを持っていれば、「同等」だとみなされます。ラベルが同等であれば、どちらも優位であると言えるため、アクセスが許可されます。1 つめのラベルが 2 つめのラベルよりも高い格付けを持っていたり、2 つめのラベルと同じコンパートメントを持っている場合、またはその両方に該当する場合は、1 つめのラベルの方が 2 つめのラベルよりも「完全に優位」であると言えます。どちらのラベルにも優位度が付けられない場合は、これらのラベルは「無関係」または「比較不可能」とみなされます。
読み取りトランザクションでは、サブジェクトの機密ラベルの方がオブジェクトの機密ラベルよりも優位でなければなりません。この法則によって、サブジェクトの信頼性は、オブジェクトにアクセスするための条件を確実に満たすことになります。また、サブジェクトの機密ラベルには、オブジェクトへのアクセスが許可されたすべてのコンパートメントグループが含まれることになります。
書き込みトランザクション、すなわち、サブジェクトによってオブジェクトが作成または変更された場合は、結果としてオブジェクトの機密ラベルの方がサブジェクトのラベルよりも優位になる必要があります。この法則によって、サブジェクトがオブジェクトの機密ラベルを降格させるようなことはなくなります。
必須アクセス制御の権限の方向を示すのに、WURD (Write Up Read Down: 「上位書き込み下位読み取り」) という頭文字を使用することがあります。しかし実際には、読み取りの場合も書き込みの場合も、トランザクションのサブジェクトとオブジェクトは通常同じ機密ラベルを持っているので、完全に優位であるかどうかを気にする必要はありません。
表 1-1 ラベル関係の例
ラベル 1 |
関係 |
ラベル 2 |
---|---|---|
TOP SECRET A B |
ラベル 1 はラベル 2 より (完全に) 優位 |
SECRET A |
TOP SECRET A B |
ラベル 1 はラベル 2 より (完全に) 優位 |
SECRET A B |
TOP SECRET A B |
ラベル 1 はラベル 2 より (完全に) 優位 |
TOP SECRET A |
TOP SECRET A B |
ラベル 1 はラベル 2 より優位 (または同等) |
TOP SECRET A B |
TOP SECRET A B |
無関係 |
TOP SECRET C |
TOP SECRET A B |
無関係 |
SECRET C |
TOP SECRET A B |
無関係 |
SECRET A B C |
機密ラベルの異なるファイル間でドラッグ&ドロップまたはコピー&ペーストを行うと、機密ラベルの変更権限がある場合は、確認のダイアログボックスが表示されます。変更権限がない場合は、トランザクションが中断されます。ダイアログボックスでは、宛先のラベルの昇格を受け入れたり (特別な承認がある場合)、宛先の機密ラベルをそのまま保持できるように情報を降格したり、トランザクションをすべてキャンセルすることができます。