標準の UNIX システムでは、スーパーユーザーが絶対的な権限を持っており、すべてのファイルに対する読み取りと書き込み、すべてのプログラムの実行、すべてのプロセスに対する強制終了シグナルの送信が許可されています。一方、Trusted Solaris 環境では、システムの保護に関連する情報を書き換えるような権限は、ユーザーに割り当てられる「承認」、アプリケーションに割り当てられる「特権」という別々の権限に分離しています。特権、承認、実効 UID (実効 GID) などを使用するアプリケーションを、「トラステッドアプリケーション (トラステッドコンピューティングベースのアプリケーション)」と呼びます。トラステッドアプリケーションは、他のアプリケーション同様、「実行プロファイル」によって、ユーザーと役割に割り当てられます。実行プロファイルには、アプリケーション、承認、特権、実効 UID (実効 GID) が定義されます。特定のトラステッドアプリケーションを実行するためには、承認と特権を正しく組み合わせる必要があります。
図 1-9 は、Trusted Solaris 環境で、ユーザーや役割が実行プロファイルを使用して、トラステッドアプリケーションにアクセスするまでの仕組みを描いたものです。ユーザーは、直接プロファイルにアクセスすることも、役割になってアクセスすることもできます。プロファイルには名前が付いており、CDE アクション、コマンド、承認、特権、実効 UID (実効 GID) の組み合わせが定義されています。これらの概要については、次の項で詳しく説明します。
実行プロファイルは、いくつかの設定をひとまとめにした機構であり、個々のユーザーや役割にトラステッドプログラム (トラステッドコンピューティングベースのプログラム) と資格を割り当てる構築単位です。実行プロファイルには、次の要素が定義されます。
コマンド (ただし次の要素を備えたもの)
指定された継承可能な特権
最上位機密ラベルと最下位機密ラベルで定義されたラベル範囲
実効 UID (実効 GID)
実行プロファイルの主な目的は、特権や有効な UID (GID) を使用するアプリケーションと承認とを切り離し、そのアプリケーションを必要とするユーザーだけにアクセスを許可することです。プロファイルは、プロファイルマネージャというツールで編集します。編集方法については、「プロファイルマネージャの使用法」を参照してください。
次の表は、Trusted Solaris の実行プロファイルと、その割り当て先となる 4 つのデフォルトの役割を示しています。
表 1-4 実行プロファイルとデフォルトの役割への割り当て
プロファイル名 |
用途 |
セキュリティ管理者 |
システム管理者 |
システムオペレータ |
スーパーユーザー |
---|---|---|---|---|---|
すべての実効可能ファイルに対するアクセスを許可。特権は与えない |
|
|
|
○ |
|
All Actions |
すべてのアクションに対するアクセスを許可。特権は与えない |
|
|
|
|
すべての承認。評価用 |
|
|
|
|
|
All Commands |
すべてのコマンドに対するアクセスを許可。特権は与えない |
|
|
|
|
監査サブシステムの管理。ファイルの読み取り権は与えない |
○ |
|
|
|
|
監査トレールの読み取り |
|
○ |
|
|
|
フロントパネルのアプリケーションに対するアクセスの許可。必要な特権の提供 |
○ |
○ |
○ |
○ |
|
すべての役割に必要な基本コマンドに対するアクセスの許可 |
○ |
○ |
○ |
○ |
|
boot |
システムの起動とシャットダウン |
|
|
|
|
通常のユーザー用の承認 |
|
|
|
|
|
スーパーユーザーに、cron ジョブに必要なコマンドを提供 |
|
|
|
○ |
|
cron ジョブ、 at ジョブの管理 |
|
○ |
|
|
|
管理役割用の cron ジョブ at ジョブの管理 |
○ |
|
|
|
|
デフォルトのシステム管理者役割にセキュリティ属性を追加するための空のプロファイル |
|
○ |
|
|
|
デフォルトのシステムオペレータにセキュリティ属性を追加するための空のプロファイル |
|
|
○ |
|
|
デフォルトのスーパーユーザーにセキュリティ属性を追加するための空のプロファイル |
|
|
|
○ |
|
デフォルトのセキュリティ管理者にセキュリティ属性を追加するための空のプロファイル |
○ |
|
|
|
|
Device Management |
デバイスの割り当て、割り当て解除。エラー状態の修正 |
|
○ |
|
○ |
デバイスの管理と設定 |
○ |
|
|
|
|
dtwm |
ウィンドウマネージャの使用 |
|
|
|
|
システムの起動後、自分自身と他のユーザーのログインを承認 |
|
○ |
|
|
|
ファイルシステムの管理 |
|
○ |
|
○ |
|
ファイルシステムのラベルと他のセキュリティ属性の管理 |
○ |
|
|
|
|
inetd |
inetd デーモンによって実行されるプログラム |
|
|
|
|
sendmail の設定、エイリアスの変更、メールの待ち行列のチェック |
|
○ |
|
|
|
システムの保守または修復に必要なコマンドの提供 |
|
○ |
|
|
|
ファイルのバックアップ |
|
|
○ |
|
|
バックアップからのファイルの復元 |
|
○ |
|
|
|
ホストとネットワーク構成の管理 |
|
○ |
|
○ |
|
Network Security |
ネットワークとホストのセキュリティ管理。トラステッドネットワークデータベース (トラステッドコンピューティングベースのネットワークデータベース) を変更するための承認も提供する |
○ |
|
|
○ |
セキュリティに関係のない NIS+ スクリプト、NIS+ コマンドへのアクセスを許可する |
|
○ |
|
|
|
セキュリティ関連の NIS+ スクリプトまたはコマンドへのアクセスを許可する |
○ |
|
|
○ |
|
ファイルの所有権とアクセス権の変更 |
○ |
|
|
|
|
ファイルのラベルの変更、システム全体のラベルの設定 |
○ |
|
|
|
|
実行可能ファイルの特権の変更に使用する |
○ |
|
|
|
|
システム認可範囲外の操作 |
○ |
○ |
○ |
○ |
|
印刷装置の管理 |
○ |
|
|
○ |
|
開発者が、全特権を使用して Bourne、Korn、 C シェルを実行する場合に使用する。環境のセキュリティ保護用ではない |
|
|
|
|
|
cron ジョブ、at ジョブなどの現在のプロセス管理 |
○ |
○ |
|
|
|
Software Installation |
アプリケーションソフトウェアをシステムに追加 |
|
○ |
|
○ |
ユーザーの設定と変更。ただし、自分自身を変更する権限はない (セキュリティ対策上の理由から) |
|
○ |
|
○ |
|
ユーザーのセキュリティ属性の設定と変更。ただし、自分自身を変更する権限はない (セキュリティ対策上の理由から) |
○ |
|
|
○ |
実行プロファイルの内容については、『Trusted Solaris 管理の手順』の付録 A 「プロファイル概要テーブル」を参照してください。
表 1-4 からわかるように、次の実行プロファイルの組は相補関係にあり論理的に関連性があります。ただし、Trusted Solaris 環境では、セキュリティ上、別々のプロファイルとして提供されています。
Audit Control と Audit Review
Media Backup と Media Restore
NIS+ Administration と NIS+ Security Administration
System Management と System Security
User Management と User Security
管理者は、使用できるトラステッドプログラムや、その機密ラベル範囲、作業の実行に必要な特権、それらを定義したプロファイルなどについて知っておかなくてはなりません。なぜなら、このような情報をもとに、ユーザーや役割にプロファイルを割り当てる必要があるからです。デフォルトのプロファイルとその内容をすべて記載したリストについては、tsolprof(4)、または『Trusted Solaris 管理の手順』の付録 A 「プロファイル概要テーブル」を参照してください。
自分のサイトでデフォルトの 4 つの役割を使用しない場合は、ユーザーマネージャの「プロファイル (Profiles)」ダイアログボックスで、プロファイルを別の役割に割り当て直すことができます。詳細は、このマニュアルの 「ユーザーに実行プロファイルを指定する」や、『Trusted Solaris 管理の手順』の第 4 章「役割の管理」を参照してください。
実行プロファイルに定義されている CDE アクションには、フロントパネルのアプリケーションマネージャとファイルマネージャからアクセスできます。プロファイル中のコマンドには、「プロファイルシェル」という Bourne シェルからアクセスします。ユーザーや役割がアクセスできるアプリケーションは、それぞれに割り当てられたプロファイルに定義されたものに限定されます。プロファイルシェルをユーザーや役割に割り当てるには、ユーザーマネージャを使用します。この方法については、「ユーザーに実行プロファイルを指定する」を参照してください。プロファイルシェルを使用すると、ユーザーを「有効」にできます。つまり、ユーザーにコマンドへのアクセスを許可し、特権や、通常のユーザーには使用できない承認を与えるわけです。また、ユーザーを「制約」することもできます。これは、ユーザーのアクセスを特定のコマンドセットだけに制限する、不慣れなユーザー向けの処置です。プロファイルシェルは、特権や承認が定義されたプロファイルを役割アカウントやユーザーアカウントに割り当てる際に使用します。
通常のユーザーとして操作する場合も役割になった場合も、そのユーザーまたは役割のプロファイルの内容に応じて、アプリケーションに対するアクセス権とセキュリティ属性が与えられます。ただし、通常のユーザーのプロファイルと役割のプロファイルとでは、同じアプリケーションにアクセスする場合でも資格のレベルが異なっていることがあります。たとえば、Basic Actions 実行プロファイルからファイルマネージャにアクセスしているユーザーには、特別な特権や承認は与えられていません。一方、同じファイルマネージャに Object Label Management プロファイルからアクセスしているユーザーは、ファイルの書き込み時に file_mac_write 特権を使ってMAC 保護を書き換えたり、基本的な UNIX アクセス権を持っていなくても、file_dac_read 特権でファイルを読み取ることができます。
役割は、特定のアプリケーションに対するユーザーアクセス権と、その実行に必要な承認や特権を与えるために使用する特別なユーザーアカウントです。同じ役割のユーザーはすべて、同じ役割のホームディレクトリを持ち、同じ環境で操作し、同じファイルにアクセスできます。ただし、最初から役割になってログインすることはできません。役割になる前に、各自のユーザーアカウントでログインしておく必要があります。この条件により、ユーザーの実際の UID が確実に記録され、これを監査に使用することができます。各役割には、その役割のワークスペースが割り当てられ、このワークスペースにはフロントパネルのボタンを使ってアクセスできます。役割になる前に、役割用のパスワードを入力して認証される必要があります。
場合によっては、あらかじめ定義されている 3 つの管理役割 (システムオペレータは非管理役割) のほかに、新しい役割を作成することがあります。新しい役割は、同じ 1 つのホームディレクトリ、ファイル、作業環境を共有しながら、他のユーザーには使用できない特別なコマンドアクション、特権を使用できる担当者を設定したい場合などに作成します。コマンドや特権を別のホームディレクトリや別のファイルに置いて、別のユーザーがこれを使用できるようにする必要がある場合は、役割を作成するのではなく、特別な実行プロファイルを作成します。これについては、「実行プロファイル」を参照してください。
役割には、管理役割とそれ以外の役割 (非管理役割) の 2 種類があります。管理役割では、セキュリティ関連の作業を行います。管理役割は、sysadmin グループ 14 に割り当てられ、NIS+ 主体の特権が与えられており、トラステッドパス属性を持つプロセスを起動できます。多くの管理役割用アプリケーションは、これらの条件が揃っていなければ実行できません。一方、非管理役割は、セキュリティとは無関係で、共用ファイルやディレクトリを利用する際に使用します。所有権が途中で交代する作業などは、非管理役割が行います。
承認は、ユーザーや役割に与えられる個別の権利です。承認があれば、Trusted Solaris で通常禁止されている操作を実行することができます。たとえば、通常は、一方のウィンドウよりも完全に優位な機密ラベルを持つウィンドウには、格付けの低い方のウィンドウの情報を貼り付けることはできません。けれども「昇格されたウインドウにペースト」承認があれば、このような状況でも、情報を貼り付けることができます。
Trusted Solaris では、管理者が割り当てることのできる承認を 40 個以上用意しています。これらは、次の表のように分類されます。
表 1-5 承認の種類
承認カテゴリ |
カテゴリに該当する承認の例 |
---|---|
「ログインを有効化」 - システムの起動後、ユーザーのログインを有効にする 「リモートログイン」 - Telnet、FTP などのプログラムを使用したユーザーのリモートログインを許可する |
|
「ファイルの機密ラベルを昇格」 - ユーザーにファイルの機密ラベルの昇格を許可する 「ファイル監査フラグを設定」 - ユーザーにファイルの監査フラグの設定を許可する |
|
「デバイスを割り当てる」 - ユーザーにデバイス、デバイスの機密ラベル、情報ラベルの割り当てを許可する |
|
「降格されたウインドウにペースト」 - ユーザーに降格したウィンドウへの情報の貼り付けを許可する 「異なる機密ラベルのワークスペースの占有」 - ユーザーに異なった機密ラベルでアプリケーションウィンドウのワークスペースへの移動を許可する |
|
「すべての定義済みラベルを使用」 - ユーザーにシステム認可範囲内のすべてのラベルの使用を許可する |
|
「ファイル表示を省略」 - ユーザーがファイルの内容を表示しないでドラッグ&ドロップできるようにする 「アプリケーションの検索パスの設定」 - ユーザーに CDE で実行可能なアプリケーションの置き場所を変更できるようにする |
|
「ユーザーの識別情報を設定」 - ユーザーにユーザー識別情報の設定を許可する 「ユーザーのプロファイルを設定」 - ユーザーに実行プロファイルの設定を許可する |
すべての承認を記載したリストについては、auth_desc(4) のマニュアルページを参照してください。承認を実行プロファイルに割り当てるには、プロファイルマネージャを使用します。「プロファイルマネージャの使用法」を参照してください。
特権は、プロセスに与えられる権利です。特権があれば、Trusted Solaris で通常禁止されている操作を実行することができます。たとえば、通常は、適切なファイルアクセス権のないプロセスはデータファイルを開くことができません。けれども Trusted Solaris 環境では、file_dac_read 特権によって、UNIX のファイルアクセス権を無視する権限がプロセスに与えられるため、ファイルアクセス権がなくてもファイルを読み取ることができるようになります。
Trusted Solaris は、アプリケーションの実行可能ファイルに割り当てられた特権と、アプリケーションのプロセスまたは親プロセスに対応付けられた特権に基づいて、プロセスが実行できる特権を判定します。アプリケーションで特権を使用できるようにするには、次の 2 つ以上の特権セットにアプリケーションを割り当てます。どれに割り当てるかは、アプリケーションをどのようにユーザーに許可するかによって異なります。
許容セット - アプリケーションの実行可能ファイルに対応付けられる。「許容された特権」は、他の条件が満たされていることを前提に、アプリケーションで使用することができます (「プロセスが特権を取得する方法」を参照)。許容された特権セットは、プロセスが特権を使うことができるかどうかを決める一般的な判定要因であるため、ここから特権を除外すると、どのユーザーも、アプリケーションで、その特権を使うことができなくなります。許容された特権は、ファイルマネージャか、setfpriv コマンドを使用して指定します。許容された特権セットに現在含まれている特権を表示するには、getfpriv コマンドを使用します。
強制セット - アプリケーションの実行可能ファイルに対応付けられる。「強制された特権」は、アクセス権のあるユーザーがアプリケーションを実行すると、無条件に有効になります。強制された特権は、許容された特権と同様に、ファイルマネージャか、setfpriv コマンドで指定します。なお、許容セットに含まれていない特権を強制セットに追加することはできません。
継承可能セット - アプリケーションのプロセスに対応付けられる。「継承可能な特権」は、実行プロファイルでアプリケーションに割り当てられた特権と、親プロセスから継承された特権の組み合わせで、プロセスが起動すると有効になります。ただし、アプリケーションの許容された特権セットに含まれていることが前提です。継承可能な特権は、プロファイルマネージャを使用して、プロセスの継承可能セットに直接割り当てることができます。プロセスは、親プロセスからも継承可能な特権を取得できます。exec コマンドによって親プロセスから子プロセスが起動された場合は、子プロセスの許容セットによって、継承される特権が制限されます。
強制された特権は、子プロセスには継承されません。ただし、Trusted Solaris 環境用に特別にカスタマイズされたアプリケーションの場合は除きます。
プロセスが特権を使うためには、次の条件が満たされている必要があります。
その特権が実行可能ファイル (またはスクリプトインタプリタ) の許容された特権セットに含まれていること
アプリケーションにアクセスできるどのユーザーも特権を使用させたい場合は、その特権が実行可能ファイルの強制された特権セットに含まれていること
特定の実行プロファイルを持つユーザーまたは役割だけに特権を使用させたい場合は、その特権がその実行プロファイルの継承可能な特権セット、またはアプリケーションを起動できる親プロセスの継承可能な特権セットに含まれていること
Trusted Solaris には、80 以上の特権が用意されています。この特権をアプリケーションに適用すると、セキュリティポリシーを無効にすることができます。すべての特権を記載したリストについては、priv_desc(4) のマニュアルページを参照してください。特権は、次の表に示すカテゴリに分類されます。
表 1-6 特権カテゴリ
特権カテゴリ |
用途 |
カテゴリに該当する特権の例 |
---|---|---|
ユーザー ID、グループ ID に対するファイルシステムの制約、アクセス権、ラベル付け、所有権、ファイルの特権セットを無効にする |
file_dac_chown - プロセスにファイル所有者のユーザー ID の変更を許可する |
|
メッセージ待ち行列、セマフォセット、共用メモリ領域の制約を無効にする |
ipc_dac_read - アクセス権ビットまたは ACL でプロセス読み取りが許可されていないプロセスに、System V IPC メッセージ待ち行列、セマフォセット、共用メモリ領域などのプロセス読み取りを許可する |
|
予約ポートの割り当てやマルチレベルポートへの関連付け、ブロードキャストメッセージの送信、セキュリティ属性 (ラベル、メッセージの特権、終端のデフォルト値など) の指定などに関する制約を無効にする |
net_broadcast - プロセスに特定のネットワーク上でのブロードキャストパケットの送信を許可する |
|
監査、ラベル付け、隠しチャネル遅延、所有権、認可上限、ユーザー ID、グループ ID などに関する制約を無効にする |
proc_mac_read - 相手のプロセスの機密ラベルよりも優位でない機密ラベルを持つプロセスに、相手のプロセスの読み取りを許可する |
|
監査、ワークステーションのブート、ワークステーションの構成管理、コンソールの出力先変更、デバイス管理、ファイルシステム、複数ディレクトリへのハードリンクの作成、メッセージ待ち行列サイズの拡大、プロセス数の増大、ワークステーションのネットワーク構成、他者の読み込み可能なモジュール、ラベル変換などに関する制約を無効にする |
sys_boot - プロセスに Trusted Solaris ワークステーションの停止またはリブートを許可する |
|
カラーマップ、ウィンドウに対する読み取りと書き込み、入力デバイス、ラベル付け、フォントパス、ウィンドウ間でのデータの移動、X サーバーのリソース管理、ダイレクトグラフィックスアクセス (DGA) の X プロトコル拡張機能などに関する制約を書き換える |
win_selection - プロセスが、選択アービトレータの介入なしでウィンドウ間のデータの移動を要求できるようにする |
ファイルマネージャを使用して、許容された特権と強制された特権を実行ファイルに割り当てます。実際には、すべての特権を許容セットに含めておき、アプリケーションで使用してはならない特権があれば、それだけを除外するのが一般的です。強制された特権は、通常、アプリケーションに不可欠な場合だけ使用します。許容されているだけで強制されていない特権は、プロセスの継承可能セットに含まれている場合に限り使用できます。
ファイルマネージャのポップアップメニューから「特権 (Privileges)」を選択すると、選択したアプリケーションアイコンの「特権 (Privileges)」ダイアログボックスが表示されます (次の図を参照)。「特権 (Privileges)」ダイアログボックスでは、実行可能ファイルのパス、所有者、グループ、ファイルタイプ (実行可能ファイルまたはスクリプトファイル) を確認したり、特権セットの種類 (許容された特権または強制された特権) を選択することができます。また、除外する特権セットに特権を追加したり、逆に削除するための 2 つのリストフィールドも表示されます。「説明 (Description)」フィールドには、選択した特権の説明が表示されます。右側の 3 つの選択制御ボタンを使用すると、特権グループ全体に対する操作を指定できます。
継承可能な特権は、プロファイルマネージャを使用して実行プロファイル中の CDE アクションとコマンドに割り当てます。プロファイル中のアプリケーションの継承可能セットに含まれる特権は、対応する実行可能ファイルの許容セットにも含まれていないと使用できません。この特権は、アプリケーションのプロセスによって、他の継承可能な特権 (許容されている場合のみ) とともに、アプリケーションが起動する子プロセスに渡されます。
同じアプリケーションを、別の継承可能セットを持つ別のプロファイルに割り当てることも可能です。
次の表は、プロセスが特権を獲得する方法を、例を挙げて示したものです。この表では、あるアプリケーションを想定して、それに対する許容セット、強制セット、継承可能セットの例を示します。
表 1-7 アプリケーションに割り当てられた特権セット (例)
特権 |
許容セット |
強制セット |
継承可能セット |
---|---|---|---|
|
|
○ |
|
file_upgrade_sl |
|
|
○ |
○ |
○ |
○ |
|
win_fontpath |
○ |
○ |
○ |
win_colormap |
○ |
○ |
○ |
○ |
|
○ |
|
file_dac_read |
○ |
|
○ |
○ |
|
|
|
file_dac_execute |
○ |
|
|
この例からは、次のことがわかります。
許容セット - 許容セットに含まれない特権は使用できない (例 : file_mac_write、file_upgrade_sl) ため、強力な特権を許容セットに含めないようにして、不用意に使用されるのを防ぐことができる。許容されているだけで強制されていない特権は、同じアプリケーションのプロファイルの継承可能セットに含まれている場合だけ使用可能 (例 : file_dac_search、file_dac_read)。許容されているだけで強制されておらず、継承可能でもない特権は、使用できない (例 : file_chown、file_dac_execute)
強制セット - 強制された特権は、そのアプリケーションを実行できるユーザーであれば無条件に使用できる。ただし、許容されていない特権を強制することはできない (win_dga、win_fontpath、win_colormap は、許容された特権のうち強制されたもの)