Solaris Trusted Extensions 開発ガイド

マルチレベルポート


注意 – 注意 –

マルチレベルポートを使用して 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() などの関数によってほかのラベルと比較できます。

ゾーンは単一レベルポートおよびマルチレベルポートにすることができます。「マルチレベルポートについて」を参照してください。