機密ラベル (SL) と認可上限は、Trusted Solaris の必須アクセス制御の中核となる要素です。この 2 つにより、どのユーザーがどのファイルやディレクトリにアクセスできるかが確定します。情報ラベル (IL) は、文書に記載されている情報の機密度を把握するのに役立ちます。なお、情報ラベルは任意設定です。
機密ラベルと情報ラベルは、CMW ラベルという構造にまとめられています。CMW ラベルは、もともとプログラマ用に提供されているものです。一般に使用する場合は、機密ラベルと情報ラベルを別々のものと考えて構いません。
この項では、ラベル間の関係、システムで使用される全ラベルのソースとなる label_encodings ファイル、ユーザーが使用できるラベルを確定するさまざまな要素について説明します。
Trusted Solaris の制御対象となるトランザクションは、セキュリティ関連のトランザクションすべてです。Trusted Solaris は、まず、アクセスする側とされる側の機密ラベルを比較し、どちらのラベルが「優位」 (下記参照) かによって、そのトランザクションを許可または拒否します。次に、この両者の情報ラベル (任意設定) を比較し、必要に応じて、アクセスされる側の情報ラベルを昇格させます。これについては、『Trusted Solaris ユーザーズガイド』の第 1 章「Trusted Solaris の紹介」を参照してください。
次の 2 つの条件が満たされれば、一方のラベル (機密ラベルまたは情報ラベル) はもう一方よりも優位であるとみなされます。
一方の機密ラベルの格付けがもう一方の格付けと同等であるか、それよりも高い場合 (label_encodings ファイルの格付けには、セキュリティ管理者によって番号が付けられており、優位度を判定する際にはこの番号が比較される)
一方のコンパートメントのセット (情報ラベルの場合はマーキングも含む) にもう一方のコンパートメント (およびマーキング) がすべて含まれる場合
格付けが同じで、持っているコンパートメントのセット (情報ラベルの場合はマーキングも) が同じである場合、2 つのラベルは「同等」とみなされます。ラベルが同等の場合は、互いに優位であると言えるため、アクセスが許可されます。最初のラベルの格付けが 2 番目のラベルの格付けよりも高い場合や、最初のラベルのコンパートメントに 2 番目のラベルのコンパートメントがすべて含まれる場合、最初のラベルは 2 番目のラベルよりも「完全に優位」であるとみなされます。ラベルに優劣が付けられない場合は、これらのラベルは「無関係」または「比較不能」とみなされます。
次の表は、ラベル間の優位度の比較例を示しています。
表 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 より(完全に) 優位 |
「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」 |
システムのラベル要素とは、格付け、コンパートメント、マーキング、その他関連規則などのことです。これらはすべて、/etc/security/tsol/ ディレクトリにある label_encodings ファイルに格納されています。このラベルエンコーディングファイルの設定は、サイトの必要に応じて、セキュリティ管理者が行います。ラベルエンコーディングファイルには、次の情報が格納されます。
label_encodings ファイルの詳細は、label_encodings(4) のマニュアルページ、『Trusted Solaris のラベル管理』および『コンパートメントモードワークステーションのラベル作成: エンコード形式』を参照してください。
システムには複数のラベルが存在します。したがって、ラベルを理解するためには、これを範囲で捉えるのが良いでしょう。ラベル範囲とは、ユーザーまたはユーザークラスが操作を行う際に使用する機密ラベルのセットで、最下位ラベル、最上位ラベル、制約などによって定義されています。ただし、最上位ラベルから最下位ラベルまでの全ラベルをラベル範囲と呼ぶわけではありません。ラベルエンコーディングファイルには、特定のラベルの組み合わせをラベル範囲から除外するような規則も含まれており、こうした規則すべてに適合した「正しい形式」のラベルだけが、ラベル範囲内にあると見なされます。一方、認可上限は正しい形式でなくても構いません。たとえば、ラベルエンコーディングファイルの規則で、機密ラベルのコンパートメント A、B、C の組み合わせがすべて禁止されている場合、「TS A B C」は、認可上限としては有効ですが、機密ラベルとしては無効です。この認可上限では、ユーザーは、「TS A」、「TS B」、「TS C」というラベルのファイルに対してアクセスを許可されます。
Trusted Solaris には、「ADMIN_HIGH」と「ADMIN_LOW」の 2 種類の特別な管理ラベルが提供されており、これらを機密ラベル、情報ラベル、認可上限として使用します (label_encodings ファイルでリネーム可能)。この 2 種類のラベルは管理者用で、通常のユーザーが使用することはできません。
「ADMIN_HIGH」は、システム内の最上位のラベルで、管理データベースや監査トレールなどのシステムデータが読み取られないよう保護するためのものです。現在の機密ラベルで ADMIN_HIGH のラベルのデータを読み取るには、作業を ADMIN_HIGH (一般に管理役割に設定) に切り替えるか、上位読み取り用の特権が必要になります。
「ADMIN_LOW」は、システム内の最下位のラベルです。必須アクセス制御により、ユーザーは、サブジェクトの機密ラベルよりも低い機密ラベルのファイルにはデータを書き込めません。したがって、最下位の機密ラベルである ADMIN_LOW をファイルに適用すれば、一般ユーザーは、そのファイルを読み取ることしかできなくなります。ADMIN_LOW は、通常、公共の実行可能ファイルと構成ファイルが変更されないように保護する目的で使用されます。ADMIN_LOW で作業しているユーザーと下位書き込み用の特権を持ったユーザーだけが、このラベルを持つファイルに書き込むことができます。
認可範囲は、ユーザーのクラスに適用されるラベル範囲です。この範囲は、組織のセキュリティポリシーの一部として、セキュリティ管理者により承認されます。label_encodings ファイルには、次の 2 種類の認可範囲が定義されます。
システム認可範囲
ユーザー認可範囲
「システム認可範囲」は、管理者が使用する全機密ラベルと全情報ラベルのセットです。システム認可範囲には、ADMIN_HIGH と ADMIN_LOW の 2 種類があり、それぞれ label_encodings ファイルの規則で制約されています。システム認可範囲の規則は、システムが許可していないラベルの組み合わせを除外するためのものです。
次の図は、システム認可範囲として許可されているラベルが、規則によって制約される仕組みを示しています。
図 1-1 (a) は、格付け TS (「TOP SECRET (最高機密)」)、S (「SECRET (極秘)」)、C (「CONFIDENTIAL (マル秘)」)と、コンパートメント A、B の組み合わせ全種類を示しています。
図 1-1 (b) は、label_encodings ファイルの「REQUIRED COMBINATIONS」部分の規則の例と、その効果を示したものです。矢印が指しているのは規則によって除外されたラベルで、横線で削除されています。規則を表す構文「B A」は、B というコンパートメントを持つラベルには必ず A も含まれていなければならないことを示しています (ただし、コンパートメント A には、他のコンパートメントを組み合わせる必要はありません)。コンパートメント B には、A と組み合わされている状態だけが許可されているため、ラベル「TS B」、「S B」、「C B」はどれも正しい形式とみなされず、システム認可範囲から除外されます。
「ユーザー認可範囲」は、システム認可範囲内で 1 人のユーザーが潜在的にアクセスできる最も広範なラベルのセット、つまり、システム認可範囲のサブセットです。ここには、ADMIN_HIGH と ADMIN_LOW は含まれません。ユーザー認可範囲は、label_encodings ファイルの「ACCREDITATION RANGE」部分にある一連の規則によって、さらに細かく制約されます。ユーザー認可範囲の規則では、管理者だけに許可されたラベルの組み合わせは除外されます。次の図の例は、前の図の続きとして、「ACCREDITATION RANGE」部分に記述された 3 種類の規則が、どのようにユーザー認可範囲に反映されるかを示したものです。矢印が示す組み合わせが、この 3 種類の規則によって許可された正しい形式のラベルです。
図 1-2 に示すように、ユーザー認可範囲には ADMIN_HIGH と ADMIN_LOW は含まれません。格付け「TS」との組み合わせは、「TS B」を除き、すべて範囲に含まれています。「TS B」は、先のシステム認可範囲で、「REQUIRED COMBINATIONS」部分の「B A」という規則によってすでに除外されています (同様に、「S B」と「C B」も除外済み)。格付け「S」の組み合わせでは、「S A B」が唯一有効なものとして範囲に含まれています。また、格付け「C」の組み合わせは、「C A」を除くすべてが有効となっています (「C B」はシステム認可範囲の規則により除外済み)。
label_encodings ファイルは、そのほかにも、「最下位認可上限」、「最下位機密ラベル」などの規則によって、ユーザーが使用できるラベルを制約します。「最下位認可上限」では、管理者がユーザーに割り当てることのできるもっとも低い認可上限のデフォルトを定義します。「(認可範囲の) 最下位機密ラベル」では、Trusted Solaris のセッション用に、管理者がユーザーに割り当てることのできるもっとも低い正しい形式の機密ラベルを定義します (この最下位機密ラベルは、システム全体に適用されるものです。個々のアカウントに割り当てられる最下位機密ラベルと混同しないよう注意してください)。一般に、最下位認可上限と最下位機密ラベルは同じ値に設定されますが、これは必須条件ではありません。label_encodings ファイルには、これ以外にも必要なラベルの組み合わせや制約に関する規則が記述されます。
アカウントラベル範囲は、個々のユーザーや役割に付与される機密ラベルの有効範囲です。ユーザーが最初にログインしたときに表示されるセッション機密ラベルを設定するダイアログボックスと「認可上限 (Clearance)」ダイアログボックスには、このアカウントラベル範囲に従って、ユーザーが使用できる機密ラベルの候補が表示されます。これについては、『Trusted Solaris ユーザーズガイド』の第 2 章「Trusted Solaris 環境へのアクセスとログアウト」の「セッションレベルの設定」を参照してください。アカウントラベル範囲内として許可されるラベルには、次のような意味があります。
ユーザー認可範囲の定義 - ユーザーは、ユーザー認可範囲に含まれていない機密ラベルを使用できない
label_encodings ファイルの (認可範囲の) 最下位機密ラベルの定義 - ユーザーに割り当てられる絶対的に最下位の機密ラベルを定義する
tsoluser データベースのユーザー認可上限の定義 - アカウントラベル範囲の上限を定義する
tsoluser データベースには、ユーザーおよび役割のセキュリティ属性が保持されています。これらは、管理者がユーザーマネージャを使用して編集します。
tsoluser データベースの (アカウントラベル範囲の) 最下位機密ラベルの設定 - label_encodings ファイルの (認可範囲の) 最下位機密ラベルによって無効にされていない場合に限り、アカウントラベル範囲の下限を設定する
アカウントラベル範囲は、ユーザー認可範囲のサブセットであり、やはり label_encodings ファイルの最下位機密ラベルによって制約を受けます。次の図は、前の認可範囲の例の続きとして、アカウントラベル範囲の例を示しています。
このユーザーのアカウント範囲は、一番上にあるユーザー認可上限の「TS A B」から、一番下の (アカウントラベル範囲の) 最下位機密ラベルの「C」までとなります。これらの定義により、ユーザーがログインできるラベルは、「TS A B」、「TS A」、「TS」、「S A B」に限定されます。ユーザーの (アカウントラベル範囲の) 最下位機密ラベルは「C」であり、label_encodings ファイルの最下位機密ラベルと偶然一致しています。2 つの最下位機密ラベルが異なる場合は、高い方の機密ラベルがアカウントラベル範囲の下限として設定されます。
ユーザーの認可上限を (アカウントラベル範囲の) 最下位機密ラベルと同じに設定すると、そのユーザーは、事実上、その機密ラベルのシングルラベルセッションで操作することになります。
「セッション範囲」は、Trusted Solaris セッションでユーザーが使用できる機密ラベルのセットです。これは、次のものを示します。
ユーザーのアカウントラベル範囲
ユーザーのセッションモード (シングルラベルまたはマルチラベル)
セッション機密ラベルを設定するダイアログボックス (シングルラベルセッションの場合)、または「認可上限 (Clearance)」ダイアログボックス (マルチラベルセッションの場合) にユーザーが指定する認可上限
ユーザーのワークステーションのラベル範囲
マルチラベルセッションの場合、「認可上限 (Clearance)」ダイアログボックスに、セッション認可上限の候補が表示されます。セッション認可上限の候補の範囲は、上限がユーザー認可上限、下限は (認可範囲の) 最下位認可上限か (アカウントの) 最下位機密ラベルのどちらか高いほうになります。ただし、このとき label_encodings ファイルにある認可上限の規則で、必要な組み合わせまたは制約が定められていなくてはなりません。シングルラベルセッションの場合もセッション認可上限候補の範囲は変わりませんが、やはり label_encodings ファイルにある機密度の規則で、必要な組み合わせまたは制約が定められていなくてはなりません。
ログインデバイスに範囲を設定することも可能です。この設定は、 device_allocate ファイルに最上位と最下位の機密ラベルを指定することによって行います。詳細は、「Trusted Solaris によるデバイスアクセスの制御」を参照してください。
この例では、セッション認可上限を、図 1-3 のラベル「S A B」から「TS A B」までの範囲で選択して指定することができます。ユーザー認可上限よりも最下位認可上限の方が優位だと、そのユーザーはログインできません。ユーザーの (アカウントラベル範囲の) 最下位機密ラベルが (認可範囲の) 最下位機密ラベルよりも優位でない場合は、(認可範囲の) 最下位機密ラベルがセッション範囲の下限として定義されます。
引き続き、図 1-4 (a) の例は、ユーザーがマルチラベルセッションを選択し、セッション認可上限として「S A B」を指定した場合に使用できる機密ラベルの範囲を示しています。「S A B」と「C」の間に存在していたラベルは許容外として除外されてしまったため、事実上、ユーザーが作業できるラベルは、「S A B」、「C A B」、「C」のいずれかとなります。
図 1-4 (b) は、ユーザーがシングルラベルセッションを選択し、セッション機密ラベルとして「C A B」を指定した場合のラベルの範囲を示しています。ここで、「C A B」は、最下位認可上限よりも下位にありながらアクセス可能になっています。これは、ユーザーがセッション認可上限ではなく、セッション機密ラベルとして「C A B」を選択しているからです。また、これはシングルラベルセッションなので、ユーザーは 1 つのラベルでしか作業できません。この例では「C A B」を指定していますが、代わりに「S A B」または「C」を指定することもできます。
次の図は、使用可能な機密ラベルの段階的な削除例を示しています。削除された機密ラベルには、どの範囲で選別されたかがわかるように横線が引かれ、次の範囲からは消去されています。
表 1-2 は、ユーザーが選択するセッション別に、使用できるセッションラベルの範囲とその可用性を示したものです。いちばん左側のカラムは、セッションで使用するラベル設定の種類です。続く 2 つのカラムはマルチレベルセッションを選択した場合、右側の 2 つのカラムはシングルレベルセッションを選択した場合を示しています。「一般ケース」のカラムには、ラベルタイプの確定方法を示します。「例」のカラムには、ログイン時にユーザーが選択するセッションの一般的なものを示しています。
表 1-2 Trusted Solaris セッションで使用できるラベル
|
マルチレベルセッション |
シングルレベルセッション |
||
---|---|---|---|---|
|
一般ケース |
例 1: 認可上限 [SECRET A B]を指定 |
一般ケース |
例 2: セッション機密ラベル [SECRET A B]を指定 |
初期ワークスペースの SL |
アカウントラベル範囲内の最下位の機密ラベル |
[CONFIDENTIAL] |
ユーザーが指定したセッション機密ラベル |
[SECRET A B] |
使用可能なワークスペースの SL |
セッション認可上限を上限とするアカウントラベル範囲内のすべての機密ラベル |
[CONFIDENTIAL] [CONFIDENTIAL A B] [SECRET A B] |
ユーザーが指定したセッション機密ラベル |
[SECRET A B] |
例 1 を見ると、初期のワークスペースは、ユーザーのアカウントラベル範囲内の最下位の機密ラベルである [CONFIDENTIAL] に設定されており、このユーザーが作業できるワークスペースの機密ラベルは、[CONFIDENTIAL]、[CONFIDENTIAL A B]、または [SECRET A B] になっています (機密ラベルを切り替えるには、ワークスペースの機密ラベルを変更してから、そのワークスペースのボタンをクリックする)。
例 2 では、ユーザーの初期のワークスペースの SL は [SECRET A B] に設定されています。これはシングルレベルセッションなので、ユーザーが使用できるワークスペースの SL は [SECRET A B] だけとなります。
機密ラベル、情報ラベル、取り扱い情報は、すべてのプリンタで自動的に印刷することができます。また、そのほかのセキュリティ機能を印刷するように設定することもできます。次の図は、一般的なバナーページを示しています。Trusted Solaris のプリンタの設定方法については、『Trusted Solaris 管理の手順』の「印刷管理」の該当する章と、『Trusted Solaris のラベル管理』を参照してください。