Solaris システムに追加できるソフトウェアは、Trusted Extensions が設定されたシステムにも追加できます。また、Trusted Extensions API を使用するプログラムも追加できます。Trusted Extensions システムへのソフトウェアの追加は、非大域ゾーンを実行している Solaris システムにソフトウェアを追加する場合と同様です。
たとえば、パッケージの問題は、非大域ゾーンをインストールしたシステムに影響します。パッケージのパラメータにより、次のことが定義されます。
パッケージのゾーンの有効範囲 – この範囲では、特定のパッケージをインストールできるゾーンの種類を決定します。
パッケージの可視性 – 可視性は、パッケージをすべてのゾーンにインストールする必要があるかどうか、およびすべてのゾーンで同一にする必要があるかどうかを決定します。
パッケージの制限 – 制限の 1 つに、パッケージを現在のゾーンのみにインストールする必要があるかどうかがあります。
Trusted Extensions では、プログラムは一般ユーザーがラベル付きのゾーンで使用できるように、一般的に大域ゾーンにインストールされます。ゾーンでのパッケージのインストールについては、『System Administration Guide: Oracle Solaris Containers-Resource Management and Oracle Solaris Zones』の第 25 章「About Packages and Patches on a Solaris System With Zones Installed (Overview)」を参照してください。また、pkgadd(1M) のマニュアルページも参照してください。
Trusted Extensions サイトでは、システム管理者とセキュリティー管理者がソフトウェアをインストールします。セキュリティー管理者は、セキュリティーポリシーを厳守するために、ソフトウェアの追加を評価します。ソフトウェアの実行に特権や承認が必要な場合、セキュリティー管理者役割はソフトウェアのユーザーに適切な権利プロファイルを割り当てます。
リムーバブルメディアからソフトウェアをインポートするには、承認が必要です。「デバイスの割り当て」承認を持つアカウントは、リムーバブルメディアを使用したデータのインポートやエクスポートを実行できます。データには実行可能コードが含まれることがあります。一般ユーザーは、ユーザーの認可上限内のラベルでデータをインポートすることのみ可能です。
システム管理者役割は、セキュリティー管理者が承認したプログラムを追加します。
Trusted Extensions は、Solaris OS と同じセキュリティー機構を使用します。セキュリティー機構には、次の機能が含まれます。
承認 – プログラムのユーザーに、特定の承認を要求することができます。承認については、『System Administration Guide: Security Services』の「Solaris RBAC Elements and Basic Concepts」を参照してください。また、auth_attr(4) および getauthattr(3SECDB) のマニュアルページも参照してください。
特権 – プログラムとプロセスには特権を割り当てることができます。特権については、『System Administration Guide: Security Services』の第 8 章「Using Roles and Privileges (Overview)」を参照してください。また、privileges(5) のマニュアルページも参照してください。
ppriv コマンドはデバッグユーティリティーを提供します。詳細は、ppriv(1) のマニュアルページを参照してください。非大域ゾーンで動作するプログラムでこのユーティリティーを使用する場合の説明は、『System Administration Guide: Oracle Solaris Containers-Resource Management and Oracle Solaris Zones』の「Using the ppriv Utility」を参照してください。
権利プロファイル – 権利プロファイルは、ユーザーまたは役割に割り当てるために、セキュリティー属性をまとめたものです。権利プロファイルについては、『System Administration Guide: Security Services』の「RBAC Rights Profiles」を参照してください。Trusted Extensions では、セキュリティー属性を割り当てることができる実行可能ファイルのタイプに、CDE アクションが追加されます。
トラステッドライブラリ – setuid、setgid、および特権プログラムが使用する、動的な共有ライブラリです。特権プログラムはトラステッドディレクトリからのみロードできます。Solaris OS と同様、crle コマンドを使用して、特権プログラムの共有ライブラリディレクトリをトラステッドディレクトリに追加できます。詳細は、crle(1) のマニュアルページを参照してください。
ソフトウェアに特権が割り当てられた場合や、代替のユーザー 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 を割り当てるように決定する場合もあります。