Solaris Trusted Extensions 開発ガイド

Trusted Extensions API

この節では、このマニュアルで説明される次の 3 つの Trusted Extensions API の概要を説明します。

これらの Trusted Extensions API のほかに、Solaris OS で使用できるセキュリティー API を使用できます。Trusted Extensions で実行されるアプリケーションでは、その他のセキュリティー属性の操作が必要な場合があります。たとえば、ユーザーおよびプロファイルデータベースには、ユーザー、役割、承認、およびプロファイルに関する情報が格納されています。これらのデータベースは、だれがプログラムを実行できるかを制限できます。さまざまな Solaris プログラム、さらに他社製アプリケーションに特権をコーディングすることができます。

これらの Solaris OS セキュリティー API に関する詳細は、『Solaris セキュリティーサービス開発ガイド』の第 2 章「特権付きアプリケーションの開発」を参照してください。

Solaris OS は、データの所有者がデータへのアクセスをだれに許可するかを決定する「任意アクセス制御」(DAC) を提供します。Trusted Extensions ソフトウェアは、必須アクセス制御 (MAC) と呼ばれる追加のアクセス制御を提供します。MAC では、一般ユーザーは「セキュリティーポリシー」を指定したり上書きしたりできません。セキュリティー管理者がセキュリティーポリシーを設定します。

アプリケーションは Trusted Extensions API を使用して、ホスト、ゾーン、および役割のラベルを取得します。セキュリティーポリシーが許可する場合、API によってユーザープロセスまたは役割プロセスに対してラベルを設定できます。ゾーンまたはホストに対するラベルの設定は、管理上の手続きであり、プログラム化する手続きではありません。

ウィンドウラベルをカスタマイズするためにアプリケーションを作成できます。Trusted Extensions ソフトウェアは、ラベル作成の基本的なユーザーインタフェースをアプリケーションに追加するための Motif ベースのプログラミングインタフェースを提供します。ラベル作成インタフェースによって、ユーザーは有効な機密ラベルおよび認可上限を対話形式で作成できます。

ラベル API は不透明なラベルで機能します。「不透明なラベル」では、ラベルの内部構造は外に現れません。不透明なラベルを使用することによって、ラベルの内部構造が変化しても、API で作成した既存のプログラムが機能するようにできます。たとえば、ラベルの特定ビットを配置するためにラベル API を使用することはできません。ラベル API では、ラベルの取得およびラベルの設定が可能です。セキュリティーポリシーによって許可されている場合のみ、ラベルの設定を行えます。

ラベル API

ラベル、ラベル範囲、およびラベル制限は、Trusted Extensions が設定されているシステム上の情報にだれがアクセスできるかを決定します。

ラベル API を使用して、ラベル、ラベル範囲と制限、およびラベル関係に対してアクセス、変換、および比較を実行します。ラベルは別のラベルより優位になったり、別のラベルから分離したりできます。

label_encodings ファイルには、それぞれの Trusted Extensions 環境に適した機密ラベル、認可上限ラベル、ラベル範囲、およびラベル関係が定義されています。このファイルはラベルの表示も制御します。セキュリティー管理者が label_encodings ファイルの作成および管理を担当します。label_encodings(4) のマニュアルページを参照してください。

プロセスのラベルは、プロセスが実行されるゾーンによって決定されます。

すべてのオブジェクトはラベルに関連付けられ、ラベル範囲に関連付けられる場合もあります。オブジェクトは、定義されたラベル範囲内の特定ラベルでアクセスできます。ラベル範囲に関連付けられるオブジェクトは、次のとおりです。

ラベルについての詳細は、「ラベルの型」を参照してください。

アクセス制御の決定にラベルを使用する

MAC は、ラベルを持つアプリケーションを実行するプロセスのラベル、またはプロセスがアクセスしようとするオブジェクトのラベル範囲を比較します。MAC は、プロセスが下位ラベルを読み取るのを許可し、等位ラベルに書き込むのを許可します。


Label[Process] >= Label[Object]

マルチレベルポート (MLP) に対するプロセス制約は、複数ラベルの要求を待機し、要求の発信元に応答を送信できます。Trusted Extensions では、そのような応答は等位書き込みです。


Label[Process] = Label[Object]

ラベル API の型

機密ラベル API

機密ラベル API は、次のために使用できます。

この API については、第 2 章「ラベルと認可上限」を参照してください。

認可上限ラベル API

ユーザー、デバイス、およびネットワークインタフェースにはラベル範囲があります。範囲の上限は、実質上の認可上限です。範囲の上限と範囲の下限が同じである場合、範囲は単一のラベルです。

認可上限ラベル API は、次のために使用できます。

この API については、第 2 章「ラベルと認可上限」を参照してください。

ラベル範囲 API

ラベル範囲は、次に対して制限を設定するために使用します。

ラベル範囲は管理のために割り当てられます。ラベル範囲は、ユーザー、役割、ホスト、ゾーン、ネットワークインタフェース、プリンタ、およびその他のオブジェクトに適用できます。

次の方法によって、ラベル範囲に関する情報を取得できます。

この API については、第 2 章「ラベルと認可上限」を参照してください。

トラステッド X ウィンドウシステム API

トラステッド X ウィンドウシステム, Version 11 サーバーがログイン時に起動します。このサーバーは、信頼できるプロセス間通信 (IPC) パスを使用してワークステーションウィンドウシステムを処理します。ウィンドウ、プロパティー、セレクション、および ToolTalkTM のセッションが複数の機密ラベルで別個のオブジェクトとして作成されます。この複数の機密ラベルでの別個のオブジェクトの作成は、「多インスタンス化」と呼ばれます。Motif ウィジェット、Xt イントリンシクス、Xlib、およびデスクトップインタフェースによって作成されるアプリケーションは、セキュリティーポリシーの制約内で実行されます。この制約は X11 プロトコルに対する拡張によって強制されます。

第 6 章「トラステッド X ウィンドウシステム」では、「Trusted Extensions セキュリティーポリシー」に示されるセキュリティー属性情報にアクセスできるプログラミングインタフェースについて説明しています。このプログラミングインタフェースは、ラベルおよび認可上限をテキストに変換する場合にも使用できます。そのテキストは、トラステッド X ウィンドウシステムで表示するために指定した幅およびフォントリストによって制限できます。

トラステッド X ウィンドウシステムは、次のセキュリティー属性を格納します。

監査 ID 

トラステッドパスフラグ 

グループ ID 

トラステッドパスウィンドウ 

インターネットアドレス 

ユーザー ID 

プロセス ID 

X ウィンドウサーバー所有者 ID 

機密ラベル 

X ウィンドウサーバー認可上限 

セッション ID 

X ウィンドウサーバー最小ラベル 

トラステッドパスフラグは、トラステッドパスウィンドウとしてウィンドウを指定します。トラステッドパスウィンドウは、信頼できないプログラムによってシステムがアクセスされないように保護します。このウィンドウは、スクリーンストライプ、ログインウィンドウなどのように、常に最上位に位置するウィンドウです。

付録 B 「Solaris Trusted Extensions API リファレンス」 に、X11 トラステッド IPC パスを作成するために使用できる拡張機能がリストされています。

ラベルビルダー API

Trusted Extensions ソフトウェアは、アプリケーションのためにグラフィカルユーザーインタフェース (GUI) を作成できるラベルビルダー API を提供します。GUI はユーザー入力を受け取って、その入力から有効なラベルを作成します。

Solaris Trusted Extensions が構成されているシステム は、ラベル作成の基本的なユーザーインタフェースをアプリケーションに追加するための Motif ベースのプログラミングインタフェースを提供します。ラベル作成インタフェースによって、ユーザーは有効な機密ラベルおよび認可上限を対話形式で作成できます。このプログラミングインタフェースについては、第 7 章「ラベルビルダー API」を参照してください。