Trusted Solaris 管理の手順

特権を使用しないとエラーが発生するプログラム

Trusted Solaris 環境において特権がないためにエラーを発生するもっとも典型的なプログラムは、標準 Solaris 環境でスーパーユーザーとして実行する必要があるプログラムです (たとえば、setuid をスーパーユーザーにして動作するようなプログラム)。この種類のプログラムには、プロファイルでスーパーユーザーの実効 UID を割り当てることができます。あるいは、実 UID を必要とする場合は、(セキュリティ管理者役割の判断により)、そのプログラムをスーパーユーザー役割に割り当てることもできます。

ほとんどのアプリケーションは、MAC などの Trusted Slaris のセキュリティ機構を持たない環境で作成されます。このため、セキュリティと、新しいプログラムで実現しようとしている内容について完全に理解しなければ、プログラムを評価することができません。

ユーザーに代わってあらかじめ厳密なチェックを行なったとしても、DAC に違反するような標準 UNIX アプリケーション管理者が、MAC と同様のチェックを行うことはありません。つまり、このようなプログラムに MAC の無効化特権を付与した場合、ユーザーが任意で MAC を無効にできる方法を提供してしまうことになります。

セキュリティ上の考慮が必要な点について、UNIX プログラムで一般的に使用される rcp(1) の動作を例に挙げて説明します。rcp コマンドは、ネットワーク内でファイルをコピーするコマンドで、setuid を root として実行されます。root として実行すると、プログラムは、標準の UNIX システムのすべての特権を使用して実行されます。このプログラムは DAC 制限の回避を許可されていますが、ファイルの DAC アクセス権をチェックして、rcp コマンドを実行したユーザーが、ファイルへのアクセス権を持っていることを確認します。ただし、rcp では MAC 制限は行われません。また、 file_mac_read 特権や file_mac_write 特権を付与したとしても、ファイルへのアクセス時に MAC 関連のチェックを行う組み込み機能もありません。したがって、rcp は、システムのセキュリティポリシーを実現するために割り当てられた特権を使用することができません。

これと類似したプログラムに、実行に必要な特権を単純に割り当て、Trusted Solaris のセキュリティポリシーに従って動作するように修正しなかった場合、そのプログラムはシステムセキュリティに違反することになります。システムセキュリティに違反せずに実行できるようにするには、プログラムのソースコードにコードを追加する必要があります。たとえば、ファイルの読み取りや書き込みを行うときに MAC 制限を回避しなければならない場合、必要な MAC チェックを行うコードを追加して、ソースコードを変更する必要があります。

ソフトウェアの中には、特権が必要な理由が明確でないものもあります。さらに、プログラムの実行に特権が必要ないものもあります。けれども、システムのセキュリティポリシーに違反するような機能を持たないプログラムであっても、共用ログファイル中の処理の履歴を追跡したり、/dev/kmem (mem(7D) を参照) から読み取りを行うなど、セキュリティに違反する内部作業を行なっている可能性があります。内部で発生するポリシー違反は、ユーザーに便利な機能を提供するだけで、アプリケーションを正しく操作するためには特に重要でない場合があります。サイトでソースコードを調べられる場合は、アプリケーションのパフォーマンスに影響を与えることなく、ポリシーの無効化を必要とする操作を削除できないか検討します。

MAC 検査を行わずにファイルの読み取りや書き込みを行うなど、いくつかの面で Trusted Solaris のセキュリティポリシーに違反するプログラムについては、可能であれば、ソースコードに必要な MAC 検査を追加します。そうでなければ、そのプログラムの移植は控えてください。