JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
Trusted Extensions 開発者ガイド     Oracle Solaris 10 1/13 Information Library (日本語)
search filter icon
search icon

ドキュメントの情報

はじめに

1.  Trusted Extensions API およびセキュリティーポリシー

ラベルの理解

ラベルのタイプ

機密ラベル

認可上限ラベル

ラベル範囲

ラベルコンポーネント

ラベルの関係

Trusted Extensions API

ラベル API

アクセス制御の決定にラベルが使用される方法

ラベル API のタイプ

機密ラベル API

認可上限ラベル API

ラベル範囲 API

Trusted X Window System API

ラベルビルダー API

Trusted Extensions セキュリティーポリシー

マルチレベル操作

大域ゾーン内のライトダウンポリシー

デフォルトのセキュリティー属性

デフォルトのネットワークポリシー

マルチレベルポート

MAC 除外ソケット

ゾーンとラベル

大域ゾーン内のラベル

ラベル付きゾーン

2.  ラベルと認可上限

3.  ラベルのコード例

4.  印刷とラベル API

5.  プロセス間通信

6.  Trusted X Window System

7.  ラベルビルダー API

8.  信頼できる Web ガードプロトタイプ

9.  Solaris Trusted Extensions ラベル API のための試験的な Java バインディング

A.  プログラマーのリファレンス

B.  Trusted Extensions API リファレンス

索引

Trusted Extensions セキュリティーポリシー

機密ラベルはデータへのアクセスを制御し、データの格付けを保持します。すべてのプロセスおよびオブジェクトは、MAC による決定で使用される機密ラベルを持っています。ラベルはシステムセキュリティーポリシーによって解釈される属性です。「システムセキュリティーポリシー」とは、システムで処理される情報を保護するために、システムソフトウェアによって強制される規則のセットです。

次のセクションでは、Trusted Extensions のセキュリティーポリシーがマルチレベル動作、ゾーン、およびラベルにどのように影響するかについて説明します。

マルチレベル操作

複数のセキュリティーレベルで実行する操作を作成するとき、次の問題について考慮する必要があります。

大域ゾーン内のプロセスのみが、指定されたラベルでプロセスを開始できるため、複数のセキュリティーレベルで実行される操作は大域ゾーンによって制御されます。

大域ゾーン内のライトダウンポリシー

プロセスなどのサブジェクトが、そのサブジェクトより優位性の低いラベルを持つオブジェクトを書き込む能力を「ライトダウン」と言います。大域ゾーンのライトダウンポリシーは管理的に指定されます。大域ゾーンのプロセスは ADMIN_HIGH ラベルで実行するため、ほかのラベルに関連付けられている特定のファイルシステムを大域ゾーン内に読み取り/書き込みでマウントすることができます。ただし、これらの特殊なファイルシステムマウントをオートマウントマップ内で管理的に指定する必要があり、これらは大域ゾーンオートマウンタによってマウントする必要があります。これらのマウントでは、エクスポートされたファイルシステムと同じラベルを持つゾーンのゾーンパスの内部にマウントポイントを持つ必要があります。ただし、これらのマウントポイントは、ラベル付けされたゾーンの内部から可視であってはいけません。

たとえば、PUBLIC ゾーンにゾーンパス /zone/public がある場合、/zone/public/home/mydir という書き込み可能なマウントポイントは許可されます。ただし、/zone/public/root/home/mydir という書き込み可能なマウントポイントは、ラベル付けされたゾーンによってアクセスできますが、大域ゾーンによってアクセスできないため、許可されません。ゾーンを超えた NFS マウントは許可されません。つまり、NFS マウントされたファイルは、ファイルシステムをマウントしたゾーン内で実行するプロセスによってのみアクセスできるということを意味します。大域ゾーンプロセスは、標準の任意アクセス制御 (DAC) ポリシーに従って、このようなファイルにライトダウンすることができます。

ゾーンに関連付けられたローカルファイルシステムは、ファイルの「アクセス権」およびアクセス制御リスト (ACL) を使用する DAC によって、大域ゾーンプロセスからのアクセスから保護されます。各ゾーンの root (/) ディレクトリの親ディレクトリは、root プロセスか、file_dac_search 特権を表明するプロセスによってのみアクセス可能です。

一般に、大域ゾーンからライトダウンする機能は制限されています。通常、ライトダウンが使用されるのは、setflabel() インタフェースを使用してファイルがふたたび格付けされる場合や、特権ユーザーがファイルマネージャーアプリケーションの別のゾーンにファイルをドラッグアンドドロップする場合に限られます。

デフォルトのセキュリティー属性

デフォルトのセキュリティー属性は、ほかの「ホストタイプ」から Trusted Extensions ホストに届くメッセージに割り当てられます。この属性は、ネットワークデータベースファイル内の設定に従って割り当てられます。ホストタイプ、それらでサポートされるセキュリティー属性、およびネットワークデータベースファイルのデフォルトについては、『Trusted Extensions 管理者の手順』を参照してください。

デフォルトのネットワークポリシー

データを送信または受信するネットワーク操作のデフォルトポリシーでは、ローカルプロセスとリモートピアが同じラベルを持つ必要があります。このポリシーは、ネットワークラベルが ADMIN_LOW である大域ゾーンを含めたすべてのゾーンに適用されます。ただし、デフォルトのネットワークポリシーは、ファイルシステムのマウント用のポリシーよりも柔軟性があります。Trusted Extensions には、デフォルトのネットワークポリシーをオーバーライドするための管理インタフェースとプログラムインタフェースが提供されています。たとえば、システム管理者は大域ゾーンまたはラベル付けされたゾーンに MLP を作成して、異なるラベルでの待機を可能にすることができます。

マルチレベルポート


注意

注意 - マルチレベルポートを使用して MAC ポリシーに違反する場合は、十分に注意してください。このメカニズムを使用する必要がある場合、使用しているサーバーアプリケーションが MAC ポリシーを適用していることを確認してください。


マルチレベルポート (MLP) は tnzonecfg 管理データベースに一覧で示されます。ゾーン内部のプロセスが net_bindmlp 特権を表明する場合、これらのプロセスは MLP にバインドできます。ポート番号が 1024 より小さい場合、net_privaddr 特権も表明される必要があります。このようなバインディングにより、プロセスがバインドされている IP アドレスに関連付けられたすべてのラベルで、プロセスが接続を受け入れることができます。ネットワークインタフェースに関連付けたラベルは、tnrhdb データベースと tnrhtp データベースで指定されます。ラベルの指定は、範囲、明示的に列挙されたラベルのセット、または両方の組み合わせによって行うことができます。

MLP にバインドされた特権付きプロセスが TCP リクエストを受け取ると、応答はリクエスト側のラベルを付けて自動的に送信されます。UDP データグラムの場合、SO_RECVUCRED オプションで指定されたラベルを付けて応答が送信されます。

特権付きプロセスには、リクエストのラベルをほかのパラメータと比較することによって、さらに制限された MAC ポリシーを実装することができます。たとえば、Web サーバーは、リクエスト側プロセスのラベルと URL で指定されたファイルのラベルとを比較できます。リモートラベルは、リモートピアの資格情報を返す getpeerucred() 関数を使用して判別することができます。ピアが同じホスト上のゾーン内で実行中の場合、ucred_get() ライブラリルーチンによって資格情報の完全なセットが返されます。ピアがローカルであるかリモートであるかに関係なく、ピアのラベルは ucred_getlabel() 関数を使用することによって ucred データ構造からアクセスできます。このラベルは bldominates() などの関数を使用することによって、ほかのラベルと比較できます。

ゾーンはシングルレベルポートおよびマルチレベルポートを持つことができます。「マルチレベルポート情報」を参照してください。

MAC 除外ソケット

Trusted Extensions ソフトウェアには、エンドポイントと低いラベルで通信するためにソケットを使用できることを指定する、明示的なソケットオプション SO_MAC_EXEMPT が提供されています。


注意

注意 - SO_MAC_EXEMPT ソケットオプションは不用意に使用しないでください。このソケットオプションを使用して MAC ポリシーを無効にするときは、十分に注意してください。このメカニズムを使用する必要がある場合、使用しているクライアントアプリケーションが MAC ポリシーを適用していることを確認してください。


Trusted Extensions ソフトウェアでは、SO_MAC_EXEMPT オプションの使用が次のように制限されています。

詳細は、user_attr(4) のマニュアルページを参照してください。

場合によっては、ソケットがライブラリによって管理されるときなど、ソケットオプションを明示的に設定することが実用的でないこともあります。このような場合、ソケットオプションを暗黙的に設定することができます。setpflags() システムコールによって、ユーザーは NET_MAC_AWARE プロセスフラグを設定できます。このプロセスフラグを設定するには、net_mac_aware 特権も必要です。プロセスフラグが有効になっている間に開いているすべてのソケットには、SO_MAC_EXEMPT ソケットオプションが自動的に設定されます。setpflags(2) および getpflags(2) のマニュアルページを参照してください。

変更または再コンパイルできないアプリケーションの場合、ppriv -M コマンドを使用して net_mac_aware プロセスフラグをアプリケーションに渡します。この場合、アプリケーションによって開かれたすべてのソケットには、SO_MAC_EXEMPT オプションが設定されます。ただし、アプリケーションの子プロセスは、このプロセスフラグまたは関連した特権を持ちません。

SO_MAC_EXEMPT ソケットオプションを使用する必要があるときは、可能な場合は常に、アプリケーションのソースコードを精査して変更してください。このようなコードへの変更ができない場合や安全な方法が使用できない場合、ppriv -M コマンドを使用してもかまいません。

SO_MAC_EXEMPT ソケットオプションは Oracle Solaris OS ではあまり使用されていませんでした。このオプションは、NFS クライアントによって使用されていました。NFS クライアントは、信頼されないオペレーティングシステム上で異なるラベルで実行している NFS サーバーと通信することが必要な場合があります。NFS クライアントは MAC ポリシーを適用して、不適切なリクエストが認められないようにします。

Oracle Solaris OS では、NFS サーバーおよびクライアントコードの両方に MAC ポリシーが組み込まれて MAC ポリシーを適用することで、Oracle Solaris クライアントまたはサーバーと、信頼されないクライアントまたはサーバーの間の通信で MAC ポリシーが使用可能になります。信頼されないホストが Trusted Extensions を実行するシステムと通信できるようにするには、信頼されないホストが tnrhdb データベースにエントリを持つ必要があります。詳細は、『Trusted Extensions 管理者の手順』の「トラステッドネットワークデータベースの構成 (タスクマップ)」を参照してください。

ゾーンとラベル

Trusted Extensions で構成されたシステム上のすべてのオブジェクトはゾーンに関連付けられています。このようなゾーンは「ラベル付きゾーン」と呼ばれます。ラベル付きゾーンは非大域ゾーンで、通常のユーザーからアクセスできます。複数のラベルでクリアされたユーザーは、それらの各レベルでゾーンへのアクセスが許可されます。

大域ゾーン」は、システムのセキュリティーポリシーを制御するファイルおよびプロセスが格納されている特殊なゾーンです。大域ゾーン内のファイルには、役割と特権プロセスによってのみアクセスできます。

大域ゾーン内のラベル

大域ゾーンにはラベルの範囲が割り当てられます。範囲は ADMIN_LOW から ADMIN_HIGH まであります。ADMIN_HIGH および ADMIN_LOW は「管理ラベル」です。

ほかのゾーンと共有される大域ゾーン内のオブジェクトには、ADMIN_LOW ラベルが割り当てられます。たとえば、/usr/sbin、および /lib ディレクトリ内のファイルには、ADMIN_LOW ラベルが割り当てられます。これらのディレクトリとその内容は、すべてのゾーンで共有されます。これらのファイルおよびディレクトリは通常、パッケージからインストールされ、パッケージ化またはパッチ適用の手順中を除けば一般的には変更されません。ADMIN_LOW ファイルを変更するには、通常の場合、スーパーユーザーまたはすべての特権を持つユーザーが、プロセスを実行する必要があります。

大域ゾーン専用の情報には ADMIN_HIGH ラベルが割り当てられます。たとえば、大域ゾーン内のすべてのプロセスと、/etc ディレクトリ内のすべての管理ファイルには、ADMIN_HIGH ラベルが割り当てられます。役割に関連付けられているホームディレクトリには、ADMIN_HIGH ラベルが割り当てられます。ユーザーに関連付けられているマルチレベル情報にも、ADMIN_HIGH ラベルが割り当てられます。「マルチレベル操作」を参照してください。大域ゾーンへのアクセスは制限されています。システムサービスおよび管理役割のみが、大域ゾーン内でプロセスを実行できます。

ラベル付きゾーン

非大域ゾーンは「ラベル付きゾーン」と呼ばれます。各ラベル付きゾーンには一意のラベルがあります。ラベル付きゾーン内のすべてのオブジェクトには、同じラベルがあります。たとえば、ラベル付きゾーン内で実行するすべてのプロセスは、同じラベルを持ちます。ラベル付きゾーン内で書き込み可能なすべてのファイルは、同じラベルを持ちます。複数のラベルについてクリアされたユーザーは、各レベルでラベル付きゾーンにアクセスできます。

Trusted Extensions では、ゾーンのためのラベル API のセットが定義されています。これらの API は、ラベル付きゾーンに関連付けられたラベルと、それらのゾーン内のパス名を取得します。

これらの API の詳細については、「ゾーン内のラベルへのアクセス」を参照してください。

ファイルのラベルは、ゾーンのラベルまたはファイルを所有するホストのラベルに基づいています。したがって、ファイルのラベルを変更する場合、ファイルは適切なラベル付きゾーンまたは適切なラベル付きホストに移動する必要があります。ファイルのラベルを変更するこのプロセスは、ファイルの「再格付け」とも言います。setflabel() ライブラリルーチンは、ファイルを移動することによってファイルのラベルを変更することができます。ファイルのラベルを変更するには、プロセスは file_upgrade_sl 特権または file_downgrade_sl 特権を表明する必要があります。getlabel(2) および setflabel(3TSOL) のマニュアルページを参照してください。

特権の設定についての詳細は、『Oracle Solaris 10 セキュリティー開発者ガイド』の第 2 章「特権付きアプリケーションの開発」を参照してください。