ラベルと認可上限は、Trusted Extensions の必須アクセス制御 (MAC) で中心的な機能を果たします。これらは、各ユーザーがアクセスできるプログラム、ファイル、およびディレクトリを決定します。ラベルと認可上限は、1 つの「格付け」構成要素と任意の数の「コンパートメント」構成要素から構成されます。格付けコンポーネントは、TOP SECRET や CONFIDENTIAL などの、セキュリティーの階層レベルを表します。コンパートメントコンポーネントは、共通な情報へのアクセスを必要とするユーザーのグループを表します。コンパートメントの一般的な例として、プロジェクト、部署、物理的な場所などがあります。承認されたユーザーには、ラベルは読みやすい形式で表示されますが、内部的にはラベルは数値として処理されます。数値によるラベルと人が読みやすい形式のラベルは、label_encodings ファイルで定義されます。
Trusted Extensions は、試行されるセキュリティー関連トランザクションのすべてを仲介します。このソフトウェアは、アクセス元のエンティティー (一般的にはプロセス) のラベルと、アクセス先のエンティティー (通常はファイルシステムオブジェクト) のラベルを比較します。このソフトウェアは、どちらのラベルが「優位」であるかに応じて、トランザクションを許可または拒否します。ラベルは、割り当て可能なデバイス、ネットワーク、フレームバッファー、別のホストなど、ほかのシステムリソースへのアクセスを決定する場合にも使用されます。
次の 2 つの条件を満たす場合、一方のエンティティーのラベルが、他方のエンティティーのラベルよりも優位であると言います。
一方のエンティティーのラベルの格付け構成要素が、他方のエンティティーの格付けと同等かそれよりも高い。セキュリティー管理者は、label_encodings ファイルで格付けに数値を割り当てます。ソフトウェアはこれらの数値を比較して、優位性を決定します。
2 つのラベルの格付けが同じで、コンパートメントのセットも同じである場合、これらのラベルは「同等」であるとされます。ラベルが同等であれば、相互に優位となり、アクセスは許可されます。
一方のラベルのコンパートメントに他方のラベルのコンパートメントがすべて含まれ、このラベルの格付けが他方よりも高いか、両方のラベルの格付けが同等である場合、最初のラベルは他方のラベルより「完全に優位」であると言います。
どちらのラベルにも優位が付けられない場合、これらのラベルは「無関係」または「比較不可能」とみなされます。
次の表に、ラベルの優位の比較例を示します。この例では、NEED_TO_KNOW の格付けは INTERNAL よりも上位にあります。3 つのコンパートメントとして Eng、Mkt、および Fin があります。
表 1–1 ラベル関係の例
ラベル 1 |
関係 |
ラベル 2 |
---|---|---|
NEED_TO_KNOW Eng Mkt |
ラベル 1 はラベル 2 より (完全に) 優位 |
INTERNAL Eng Mkt |
NEED_TO_KNOW Eng Mkt |
ラベル 1 はラベル 2 より (完全に) 優位 |
NEED_TO_KNOW Eng |
NEED_TO_KNOW Eng Mkt |
ラベル 1 はラベル 2 より (完全に) 優位 |
INTERNAL Eng |
NEED_TO_KNOW Eng Mkt |
ラベル 1 はラベル 2 より優位 (または同等) |
NEED_TO_KNOW Eng Mkt |
NEED_TO_KNOW Eng Mkt |
無関係 |
NEED_TO_KNOW Eng Fin |
NEED_TO_KNOW Eng Mkt |
無関係 |
NEED_TO_KNOW Fin |
NEED_TO_KNOW Eng Mkt |
無関係 |
INTERNAL Eng Mkt Fin |
Trusted Extensions には、 ADMIN_HIGH と ADMIN_LOW の 2 つの特殊な管理ラベルがあり、ラベルまたは認可上限として使用されます。これらのラベルは、システムリソースを保護するために使用され、一般ユーザーではなく管理者用のラベルです。
ADMIN_HIGH は最大のラベルです。ADMIN_HIGH は、システム中のすべてのラベルに対して優位であり、管理データベースや監査証跡などのシステムデータが読み取られるのを防ぎます。ADMIN_HIGH ラベルが付いたデータを読み取るには、大域 ゾーンで操作する必要があります。
ADMIN_LOW は最小のラベルです。一般ユーザーのラベルも含め、システム内のその他すべてのラベルは、ADMIN_LOW に対して優位になります。必須アクセス制御では、ユーザーはユーザーのラベルよりも低いラベルのファイルにデータを書き込むことができません。したがって、一般ユーザーは ADMIN_LOW ラベルのファイルを読み取ることはできますが、修正することはできません。一般的に ADMIN_LOW は、/usr/bin のファイルなど、共有されている誰でも実行可能なファイルを保護するために使用されます。
システムのラベルコンポーネント (格付け、コンパートメント、および関連規則) はすべて、ADMIN_HIGH ファイルの label_encodings ファイルに保存されます。このファイルは、/etc/security/tsol ディレクトリに保存されます。セキュリティー管理者は、サイトの label_encodings ファイルを設定します。ラベルエンコーディングファイルには、次の内容が含まれます。
コンポーネントの定義 – 格付け、コンパートメント、ラベル、および認可上限を、必要な組み合わせと制約の規則を含めて定義します
印刷の指定 – プリンタ出力の印刷バナー、トレーラ、ヘッダー、フッター、およびその他のセキュリティー機能で使用される、識別情報と取り扱い情報です
詳細は、label_encodings(4) のマニュアルページを参照してください。詳しい情報は、『Solaris Trusted Extensions ラベルの管理』と『コンパートメントモードワークステーションのラベル作成: エンコード形式』も参照してください。
「ラベル範囲」は、ユーザーが操作を実行できる使用可能なラベルのセットです。ユーザーとリソースは、どちらにもラベル範囲があります。ラベル範囲で保護可能なリソースには、割り当て可能なデバイス、ネットワーク、インタフェース、フレームバッファー、コマンドやアクションなどが含まれます。ラベル範囲は、上限が認可上限によって、下限が最小ラベルによって定められます。
範囲は必ずしも、最大ラベルと最小ラベル間のすべてのラベルの組み合わせを含む必要はありません。label_encodings ファイルの規則で、特定の組み合わせを無効にできます。ラベルが範囲に含まれるためには、ラベルエンコーディングファイルの適用可能なすべての規則で許可される、「適格な形式」である必要があります。
ただし、認可上限は適格な形式である必要はありません。たとえば、label_encodings ファイルで、ラベルでコンパートメント Eng、Mkt、および Fin の組み合わせが禁止されている場合を考えます。 INTERNAL Eng Mkt Fin は、有効な認可上限ですが、有効なラベルではありません。認可上限として、この組み合わせはユーザーが INTERNAL Eng、INTERNAL Mkt、および INTERNAL Fin のラベルのファイルにアクセスすることを許可します。
ユーザーに認可上限と最小ラベルを割り当てると、ユーザーが操作の実行を許可される「アカウントラベル範囲」の上限と下限が決まります。次の式は、アカウントラベル範囲を表しています。≤ は、「前者より後者が優位であるか、両者が同等」であることを表します。
最小ラベル ≤ 許可されたラベル ≤ 認可上限
ユーザーは、認可上限を超えず、最小ラベルよりも優位なラベルで操作が許可されます。ユーザーの認可上限または最小ラベルが明示的に設定されていない場合は、label_encodings ファイルで定義されたデフォルトが有効になります。
ユーザーが複数ラベルまたは単一ラベルで操作を実行できるよう、認可上限と最小ラベルを割り当てることができます。ユーザーの許可上限と最小ラベルが等しい場合、このユーザーは 1 つのラベルだけで操作できます。
「セッション範囲」は、Trusted Extensions のセッション中にユーザーが利用可能なラベルのセットです。セッション範囲は、ユーザーのアカウントラベル範囲内であり、かつシステムに設定されたラベル範囲内である必要があります。ログイン時にユーザーがシングルラベルのセッションモードを選択する場合、セッション範囲はそのラベルに制限されます。ユーザーが複数ラベルのセッションモードを選択する場合、ユーザーによって選択されたラベルがセッションの認可上限になります。セッションの認可上限は、セッション範囲の上限を定義します。ユーザーの最小ラベルは、下限を定義します。ユーザーは、最小ラベルのワークスペースでセッションを開始します。ユーザーはセッション中に、セッション範囲内の別のラベルのワークスペースに切り替えることができます。
ラベルは、デスクトップに表示されるほか、プリンタ出力など、デスクトップで実行される出力にも表示されます。
アプリケーション – アプリケーションはプロセスを開始します。これらのプロセスは、アプリケーションが起動されたワークスペースのラベルで動作します。ラベル付きゾーンのアプリケーションには、ファイルとしてゾーンのラベルでラベルが付けられます。
デバイス – デバイスを通過するデータは、デバイス割り当てとデバイスのラベル範囲で制御されます。デバイスを使用するユーザーは、デバイスのラベル範囲内にあり、デバイスを割り当てるために承認される必要があります。
ファイルシステムのマウントポイント – すべてのマウントポイントにはラベルが設定されます。ラベルは getlabel コマンドを使用して表示できます。
ネットワークインタフェース – IP アドレス (ホスト) には、ラベル範囲を記述するテンプレートがあります。ラベルなしのホストにも、デフォルトのラベルがあります。
プリンタと印刷 – プリンタにはラベル範囲があります。ラベルは本文ページに印刷されます。ラベル、取り扱い情報、およびその他のセキュリティー情報が、バナーとトレーラページに印刷されます。Trusted Extensions で印刷を構成するには、第 15 章ラベル付き印刷の管理 (手順)と『Solaris Trusted Extensions ラベルの管理』の「印刷出力のラベル」.を参照してください。
プロセス – プロセスはラベル付けされています。プロセスは、プロセスが開始されたワークスペースのラベルで動作します。プロセスのラベルは、plabel コマンドを使用して表示できます。
ユーザー – ユーザーはデフォルトラベルとラベルの範囲を割り当てられています。ユーザーのワークスペースのラベルは、ユーザーのプロセスのラベルを表します。
ウィンドウ – ラベルは、デスクトップのウィンドウ上部に表示されます。デスクトップのラベルは、色でも示されます。色はデスクトップのスイッチと、ウィンドウ上部のタイトルバーに表示されます。
ウィンドウが別のラベルのワークスペースに移動しても、このウィンドウは元のラベルを維持します。
ゾーン – すべてのゾーンには固有のラベルがあります。ゾーンで所有されるファイルとディレクトリは、ゾーンのラベルになります。詳細は、getzonepath(1) のマニュアルページを参照してください。