この章では、Solaris Trusted Extensions が設定されたシステムで、他社製のソフトウェアを信頼できる方法で実行する方法について説明します。
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 を割り当てるように決定する場合もあります。
Solaris Trusted Extensions (CDE) では、次のウィンドウシステムのプロセスが信頼されます。
フロントパネル
フロントパネルのサブパネル
ワークスペースメニュー
ファイルマネージャー
アプリケーションマネージャー
ウィンドウシステムのトラステッドプロセスはだれでも利用できますが、管理アクションへのアクセスは大域ゾーンの役割に制限されます。
アクションがアカウントのプロファイルのいずれにもない場合、ファイルマネージャーにアクションのアイコンは表示されません。ワークスペースメニューでは、アクションがアカウントのプロファイルのいずれにもない場合、アクションは表示されますが、アクションを実行するとエラーが表示されます。
Trusted CDE では、ウィンドウマネージャーの dtwm が Xtsolusersession スクリプトを呼び出します。このスクリプトはウィンドウマネージャーとともに動作し、ウィンドウシステムから起動されるアクションを呼び出します。Xtsolusersession スクリプトは、アカウントがアクションを起動しようとしたときに、アカウントの権利プロファイルを確認します。いずれの場合も、アクションが割り当てられた権利プロファイルに指定されている場合、アクションはプロファイルに指定されているセキュリティー属性で実行されます。
Trusted Extensions で CDE アクションを作成および使用する手順は、Solaris OS における手順と同様です。アクションの追加については、『Solaris 共通デスクトップ環境上級ユーザ及びシステム管理者ガイド』の第 4 章「アプリケーションの追加と管理」で説明されています。
Solaris OS と同様、アクションの使用は権利プロファイルで管理できます。Trusted Extensions では、管理役割の権利プロファイルで、いくつかのアクションにセキュリティー属性が割り当てられています。セキュリティー管理者は、「権利」ツールを使用して、新しいアクションにセキュリティー属性を割り当てることもできます。
次の表では、管理者がアクションを作成し使用する場合の、Solaris システムと Solaris Trusted Extensions システムの主な相違点について説明します。
表 19–1 Trusted Extensions での CDE アクションの制約
Solaris CDE アクション |
Trusted CDE アクション |
---|---|
新しいアクションは、だれでも自分のホームディレクトリ内に作成できます。 作成者は、新しいアクションを自動的に使用できるようになります。 |
アクションは、ユーザーに割り当てられた権利プロファイルである場合のみ使用可能です。アクションの検索パスは異なります。ユーザーのホームディレクトリにあるアクションは、最初ではなく最後に処理されます。したがって、既存のアクションをカスタマイズすることはできません。 |
ユーザーは自分のホームディレクトリに新しいアクションを作成できますが、アクションを使用できない場合があります。 |
|
All プロファイルを持つユーザーは、作成したアクションを使用することができます。それ以外の場合は、セキュリティー管理者が、アカウントの権利プロファイルのいずれかに新しいアクションの名前を追加する必要があります。 |
|
アクションを起動するには、ユーザーはファイルマネージャーを使用します。システム管理者は、アクションを公開ディレクトリに配置できます。 |
|
アクションはフロントパネルにドラッグ&ドロップできます。 |
フロントパネルはトラステッドパスの一部です。ウィンドウマネージャーは、/usr/dt と /etc/dt サブディレクトリにある、管理者が追加したアクションだけを認識します。All プロファイルが割り当てられていても、ユーザーはフロントパネルに新しいアクションをドラッグできません。ユーザーのホームディレクトリにあるアクションは、ウィンドウマネージャーでは認識されません。マネージャーは公開ディレクトリだけを確認します。 |
root によって実行された場合、アクションは特権処理を実行できます。 |
ユーザーに割り当てられた権利プロファイルでアクションに特権が割り当てられている場合、アクションは特権を必要とする処理を実行できます。 |
アクションは Solaris 管理コンソール では管理されません。 |
アクションは Solaris 管理コンソール の「権利」ツールで権利プロファイルに割り当てられます。新しいアクションが追加されると、セキュリティー管理者は新しいアクションを利用可能にすることができます。 |
Trusted Extensions でのソフトウェアの管理は、非大域ゾーンがインストールされた Solaris システムでのソフトウェアの管理タスクと同様です。ゾーンについては、『System Administration Guide: Oracle Solaris Containers-Resource Management and Oracle Solaris Zones』のパート II「Zones」を参照してください。
デバイスを割り当てることができる役割になる必要があります。
適切なワークスペースで作業を開始します。
ソフトウェアパッケージを大域ゾーンにインストールする場合は、大域ゾーンで作業します。
ソフトウェアパッケージをラベル付きゾーンにインストールする場合は、そのラベルでワークスペースを作成します。
詳細は、『Oracle Solaris Trusted Extensions ユーザーズガイド』の「ワークスペースのラベルを変更する」を参照してください。
CD-ROM ドライブを割り当てます。
詳細は、『Oracle Solaris Trusted Extensions ユーザーズガイド』の「Trusted Extensions でデバイスを割り当てる」を参照してください。
ソフトウェアをインストールします。
詳細は、『System Administration Guide: Basic Administration』の「Where to Find Software Management Tasks」を参照してください。
転送が終了したら、デバイスの割り当てを解除します。
詳細は、『Oracle Solaris Trusted Extensions ユーザーズガイド』の「Trusted Extensions でデバイスを割り当てる」を参照してください。
この手順では、Java archive (JAR) ファイルを大域ゾーンにダウンロードします。大域ゾーンから、管理者はファイルを一般ユーザーが利用できるようにできます。
セキュリティー管理者は、Java プログラムのソースが信頼できること、配信方法が安全であること、およびプログラムを信頼できる方法で実行できることを確認しています。
大域ゾーンでセキュリティー管理者役割になります。Trusted CDE で、Software Installation 権利プロファイルに、Java コードの「開く」アクションが含まれています。
JAR ファイルを /tmp ディレクトリにダウンロードします。
たとえば、http://www.sunfreeware.com のソフトウェアを選択する場合、そのサイトの「Solaris pkg-get tool」の指示に従います。
ファイルマネージャーを開き、/tmp ディレクトリに移動します。
ダウンロードしたファイルをダブルクリックします。
ダイアログボックスの質問に答えて、ソフトウェアをインストールします。
インストールログを確認します。
セキュリティーリスクを小さくするため、システム管理者は一般ユーザーの認可範囲内でシングルラベルにソフトウェアをダウンロードします。続いてセキュリティー管理者は、そのラベルで JAR ファイルをテストします。このソフトウェアがテストに合格したら、セキュリティー管理者はラベルを ADMIN_LOW にダウングレードします。システム管理者は、このソフトウェアを NFS サーバーにインストールし、すべてのユーザーが利用できるようにします。
最初に、システム管理者は、ユーザーラベルでワークスペースを作成します。
システム管理者は、作成したワークスペースで、JAR ファイルをダウンロードします。
ユーザーラベルで、セキュリティー管理者は JAR ファイルをテストします。
次に、セキュリティー管理者は、このファイルのラベルを ADMIN_LOW に変更します。
最後に、システム管理者は、ラベルが ADMIN_LOW の NFS サーバーにこのファイルをコピーします。