Solaris Trusted Extensions 開発ガイド

MAC 適用外ソケット

Trusted Extensions ソフトウェアには、下位ラベルの終端と通信するためにソケットを使用できるように指定する明示的なソケットオプション SO_MAC_EXEMPT があります。


注意 – 注意 –

SO_MAC_EXEMPT ソケットオプションは絶対に誤って使用しないでください。このソケットオプションを使用して MAC ポリシーを無効にする際には、十分に注意してください。このメカニズムを使用する場合、クライアントアプリケーションで MAC ポリシーが強制されていることを確認してください。


Trusted Extensions ソフトウェアは、SO_MAC_EXEMPT オプションの使用を次のように制限します。

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

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

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

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

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

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


注 –

Trusted Extensions API を Solaris OS で使用する方法の例は、Solaris ソースコードを参照してください。OpenSolaris の Web サイト の左のナビゲーションバーにある「Source Browser」をクリックします。Source Browser を使用して Solaris のソースコードを検索します。