ソフトウェアに特権が割り当てられた場合や、代替のユーザー ID またはグループ ID での実行時には、そのソフトウェアが「トラステッド」とみなされます。信頼されたソフトウェアは、Trusted Extensions のセキュリティーポリシーによる制約を必ずしも受けません。信頼できないソフトウェアでも、「トラステッド」にできることに注意してください。慎重な調査によってソフトウェアが信頼できる方法で特権を使用することが明らかになるまで、セキュリティー管理者はソフトウェアに特権を与えることを保留します。
トラステッドシステムでは、プログラムは次の 3 つのカテゴリに分類されます。
セキュリティー属性を必要としないプログラム – 一部のプログラムはシングルのレベルで動作し、特権を必要としません。これらのプログラムは、/usr/local などの公開ディレクトリにインストールできます。アクセスするには、ユーザーと役割の権利プロファイルにプログラムをコマンドとして割り当てます。
root ユーザーとして動作するプログラム – 一部のプログラムは、setuid 0 で実行されます。これらのプログラムには、権利プロファイルで 0 の実効 UID を割り当てることができます。セキュリティー管理者は、プロファイルを管理役割に割り当てます。
アプリケーションが信頼できる方法で特権を使用できる場合は、アプリケーションに必要な特権を割り当てます。プログラムを root として実行しないでください。
特権が必要なプログラム – 明らかな理由がないにもかかわらず、特権が必要とされるプログラムもあります。システムのセキュリティーポリシーに違反すると思われる機能を実行していないプログラムでも、内部的な動作がセキュリティーに違反している可能性があります。たとえば、プログラムが共有されたログファイルを使用していたり、/dev/kmem から読み取りを行なっている可能性があります。セキュリティーに関する注意は、mem(7D) のマニュアルページを参照してください。
内部的なポリシーの上書きが、アプリケーションの正常な動作にとって特に重要でない場合もあります。このような上書きは、ユーザーへの便宜のために提供されているに過ぎません。
組織としてソースコードにアクセスできる場合は、アプリケーションのパフォーマンスに影響を与えずに、ポリシーの上書きを必要とする操作を削除できるかどうかを確認してください。
プログラムの開発者がソースコードで特権のセットを操作できても、セキュリティー管理者が必要な特権をプログラムに割り当てていなければ、プログラムは正常に動作しません。トラステッドプログラムの作成では、開発者とセキュリティー管理者が共同で作業する必要があります。
トラステッドプログラムを作成する開発者には、次のタスクが必要です。
プログラムを正常に動作させるために、どこで特権が必要かを理解する。
特権ブラケットなどの、プログラムで特権を安全に使用するための技術を習得して使用する。
特権をプログラムに割り当てるときに、セキュリティーの関連性に注意する。プログラムはセキュリティーポリシーに違反してはならない。
トラステッドディレクトリからプログラムにリンクされた共有ライブラリを使用して、プログラムをコンパイルする。
詳細は、『Oracle Solaris セキュリティーサービス開発ガイド』を参照してください。Trusted Extensions のコード例については、『Solaris Trusted Extensions 開発ガイド』を参照してください。
セキュリティー管理者は、新しいソフトウェアをテストおよび評価します。ソフトウェアを信頼できると判断したら、セキュリティー管理者はプログラムの権利プロファイルとその他のセキュリティーに関する属性を構成します。
セキュリティー管理者には次のような責任があります。
プログラマやプログラム配布プロセスが信頼できることを確認する。
次の情報源のいずれかから、プログラムに必要な特権を決定する。
プログラマに確認する。
ソースコードを調べて、プログラムが使用する予定の特権を検索する。
ソースコードを調べて、プログラムがユーザーに要求する承認を検索する。
ppriv コマンドにデバッグオプションを使用して、特権の使用を検索する。この例は、ppriv(1) のマニュアルページを参照してください。
ソースコードを調査し、プログラムの動作に必要な特権に関して信頼できる方法で処理していることを確認します。
プログラムが信頼できる方法で特権を使用していない場合、プログラムのソースコードを修正できるときはコードを修正します。セキュリティーについて熟知しているセキュリティーコンサルタントや開発者は、コードを修正できます。修正には、特権ブラケットや承認の検査が含まれる場合があります。
特権の割り当ては、手動で行う必要があります。特権の不足によりエラーが発生するプログラムには、特権を割り当てることができます。また、セキュリティー管理者が、特権を不要にする実効 UID または実効 GID を割り当てるように決定する場合もあります。