セキュリティ管理者は、次のタイプのソフトウェアを追加することができます。
Trusted Solaris のセキュリティポリシーを認識したり施行したりしないサンの別パッケージの製品やサン以外のアプリケーション
Trusted Solaris プログラミングインタフェースを使用して作成したラベルと MAC (必須アクセス制御) を認識し、Trusted Solaris セキュリティポリシーの範囲内で動作する新しいプログラム
新しいアクション (セキュリティ管理者役割によって作成、または認可されたもの)
シェルスクリプト (セキュリティ管理者役割によって作成、または認可されたもの)
セキュリティ管理者は、実行制御スクリプトに、起動時に実行されるコマンドを追加したり、修正することができます。
この章では、Trusted Solaris システムで使用する、コマンド、アクション、スクリプトの作成方法や使用方法が、標準 Solaris の場合とどう違うかをまとめています。また、特権がコマンドやアクションによってどのように使用されるかを確認し、次の作業を行う方法を紹介します。
新しいソフトウェアを導入する
ソフトウェアの実行に特権が必要な場合、必要な特権を検出する
新しいソフトウェアに必要な特権を与えることがサイトのセキュリティポリシーと矛盾しないかどうかを判断する
ソフトウェアが特権を使用できるようにする
実行制御スクリプト内のコマンドが特権を使用できるようにする
プログラマーが特権を使用する方法については、『Trusted Solaris 開発ガイド』を参照してください。
デフォルトのシステム構成では、セキュリティ管理者役割とシステム管理者役割の両方が、次の処理を行えます。
複数の機密ラベルでソフトウエアをインポートまたはエクスポートする
公共のディレクトリ (/etc や /usr/binなど) 内に ADMIN_LOW
でソフトウェアをインストールし、複数のユーザーがあらゆる機密ラベルでソフトウェアを使用できるようにする
プログラムファイルに特権を付与する。この権限は、必要な承認を割り当てれば、他のアカウントに付与することもできる
プロファイルマネージャを使用して、トラステッドプロセスでコマンドやアクションが実行されるときに有効になる特権を割り当てる 。このとき、コマンドやアプリケーションはトラステッドプロセスから特権を継承している
外部または内部から取得したアプリケーションやシェルスクリプトは、コマンドとしてサイトの実行プロファイルに追加されるため、この章では、アプリケーション、サイトで開発された実行可能プログラム、シェルスクリプトのこともコマンドといいます。
コマンドに特権を付与すること、コマンドやアクションが特権を継承するということについては、「特権」と、次の節の定義を参照してください。
通常、プログラムやスクリプトのインポート、作成、使用の前に、セキュリティ管理者役割による審査は必要ありません。ただし、そのソフトウェアが次の条件を満たしている場合に限ります。
実行時、特権を使用しない
起動したユーザーの実際の UID または GID と同じ実効 UID または GID を使用する
シングルラベルで実行する
セキュリティ管理者役割は、デフォルトのシェルとしてプロファイルシェルをユーザーに割り当てることによって、プログラム、アクション、およびスクリプトを作成できるユーザーを制御できます。All Commands プロファイルは、すべてのコマンドへのアクセスを許可します。All Actions プロファイルは、すべてのアクションへのアクセスを許可します。All プロファイルは、すべてのコマンドおよびアクションへのアクセスを許可します。
ユーザーまたは役割アカウントが「アクション作成 (Create Action)」アクションなどのファイル編集ツールへのアクセス権を持っていない場合、そのアカウントはアクションを作成できません。アカウントがアクションを作成できる場合でも、セキュリティ管理者役割の協力がなければ、アカウントは新しいアクションを使うことができません。すべてのユーザーが新しいアクションを使えるようにするには、セキュリティ管理者役割は、そのアクションを 1 つまたは複数のプロファイルに追加し、そのプロファイルをアカウントに割り当てる必要があります。あるいは、セキュリティ管理者役割は、All プロファイルまたは All Actions プロファイルのいずれかをアカウントに割り当てることもできます。
同様の機構が、プログラム、アクション、スクリプトのインポートを制御するためにも用意されています。セキュリティ管理者は、個々にデバイスの割り当て承認を付与したり取り消したりすることで、ソフトウェアを導入できるユーザーを制御します。デバイスの割り当て承認を付与されたアカウントの場合、データのインポートまたはエクスポートを認可上限内の単一機密ラベルに制限されます。
特権を持っているということは、セキュリティポリシーのある面を無効にする権限があるということです。
標準の UNIX システムでは、ユーザー ID 0 で実行されるコマンドにはスーパーユーザーの全権限があるのに、それ以外のユーザー ID で実行されるコマンドには権限がありません。一方 Trusted Solaris システムでは、どのユーザー ID を使用するコマンドでも、標準の UNIX システムのスーパーユーザーに割り当てられた権限の一部を使用するように構成することができます。 Trusted Solaris システムでは、UNIX のスーパーユーザーの権限 (アクセス制限の回避、制限されたコマンドの実行、他のユーザーが使用できないコマンドオプションの使用など) は、特権に置き換えられます。標準 Solaris のオペレーティング環境やその他の UNIX オペレーティングシステムのスーパーユーザーが、すべての DAC 制限を回避する権限をはじめ、システム内のすべての特権を持っているのに対し、Trusted Solaris の特権機構では、スーパーユーザーの権限を細分化し、MAC 制限を回避するために必要な補助的な権限を提供します。特権を個々に付与することで、プログラムに不要な特権は付与せず、作業上必要な特権だけを割り当てます。
コマンドやそのオプション、アクションなどを正しく実行するために特権が必要な場合、その特権を必須特権といいます。必須特権を使用できない場合は、コマンド、オプション、アクションは全く動作しません。必須特権は、次の文に示すように、マニュアルページ上では、「必要です (must have)」という言葉で表されます。「ifconfig(1M)コマンドには、ネットワークインタフェースを変更するためのsys_net_config 特権が必要です。」
コマンドまたはアクションがセキュリティポリシー内で動作するように設計されていて、特定の DAC または MAC の検査に合格しないとエラーになるときは、セキュリティ管理者役割の判断で、無効化特権を割り当てることができます。アクセス制限を無効化するために使用される特権の名前は、マニュアルページ上では、「エラー (ERRORS)」の節に記述されています。
DAC 無効化特権は、file_dac_read
と file_dac_write
です。MAC 無効化特権は、file_mac_read
と file_mac_write
です。セキュリティ管理者役割は、ユーザーがファイルへの DAC または MAC アクセス権を持っていない場合、どちらのアクセス権を適用するか、読み取り、書き込みのどのアクセス 権が必要かによって、コマンドやアクションにこれらの無効化特権の 1 つまたは両方を割り当てることができます。
コマンドまたはアクションを実行するためには、無効化特権を割り当てる以外の方法もあります。セキュリティ管理者役割は、次のオプションを利用することができます。
実効 UID を割り当てる
実効 GID を割り当てる
コマンドが実行するラベル範囲を制限するための、あるいは、単一ラベルに制限するための機密ラベルを割り当てる
セキュリティ管理者役割は、特権の使用を避けるために、コマンドやアクションが他のユーザー ID や代替グループ ID を使用して実行されるように構成したり、他の ID のアクセス権や ACL に基づいてファイルまたはディレクトリにアクセスするように設定します。呼び出したユーザーの実際の UID (GID) 以外の UID (GID) を使ってソフトウェアを実行することを、「実効 UID (GID) を使って実行する」といいます。コマンドやアクションが MAC 無効化特権を付与する必要のない機密ラベルで実行されるように指定することもできます。
最少特権の法則とは、システム内の各コマンドまたはアクションに、ユーザーが作業を行うために必要な最低限の特権しか付与しないことを言います。具体的な方法としては、プログラムに必要なときだけ特権を使用できるようにしたり、特権ブラケットを使用することが考えられます。特権ブラケットとは、プログラムの特権の使用・不使用を切り換えるためにプログラム内で使用するものです。特権ブラケットを使用すると、特権は、プログラムの実行中、特定の目的のために使用されている間しか有効になりません。特権ブラケットの詳細は、『Trusted Solaris 開発ガイド』参照してください。
実行可能プログラムファイルには、「強制された特権」と「許容された特権」の 2 つのファイル特権セットを割り当てることができます。「許容セット」とは、プログラムが使用を許可される特権のセットです。「強制セット」はプログラムを実行するシェルやユーザーに関係なく常に使用可能な特権のセットです。
ls(1)、mount(1M) が特権を使用する方法を例に挙げて、これまでに説明した法則の一部についてわかりやすく説明します。
lsは、一般的なプログラムの 1 つです。DAC 制限と MAC 制限によって参照することが許可されているファイルを一覧表示する場合であれば、このプログラムに特権は必要ありません。つまり、ls には必須特権はありません。ただし、何らかの理由で、ls が DAC または MAC のセキュリティポリシーを回避する必要がある場合は、セキュリティ管理者役割によって、無効化特権が割り当てられます。
一般ユーザーが自分のコンピュータにマウントされているファイルシステムを確認する目的で実行する場合、mount(1M) には特権は必要ありません。けれども、mount コマンドでファイルシステムをマウントする場合は、sys_mount
特権が必ず必要になります。つまり、sys_mount
は mount の必須特権です。リモート操作でファイルシステムをマウントするために使用するのか、マウント時のセキュリティ属性を指定するために使用するのかによって、いくつかの無効化特権が必要になることもあります。デフォルトの設定では、mount の実行可能プログラムファイルには、すべての「許容された特権」が指定され、「強制された特権」は一切指定されていません。デフォルトでシステム管理者役割に割り当てられる System Management プロファイルには、ファイルシステムをマウントするときに mount が継承する必要のあるすべての特権が定義されています。mount の特権要件に関する詳細は、mount(1M) マニュアルページを参照してください。
アクションとは、CDE からアクセスできる機能のことです。Trusted Solaris 環境でも広範囲にわたるアクションを使用できますが、その使用法や作成法には、いくつかの制限があります。これは、Trusted Solaris セキュリティポリシーとの互換性を保つためです。アクションの使用上および作成上の制限については、「アクションを追加する場合」で説明します。
アクションとは、各種作業を自動化するために書かれた指示「アプリケーションの編集や実行のためにファイルを開く」などのことです。アクションは、アプリケーションマクロやプログラミング関数とほぼ同様に定義され、アクションごとに、実行時に使用する名前が定義されます。アクションは、アイコン、フロントパネル上のアイテム、メニューアイテムに割り当てられます。
セキュリティ管理者役割は、アカウントの実行プロファイルに次のいずれかを指定することにより、そのアカウントがシステムのセキュリティポリシーを回避できるようにします。
承認
特定のコマンドまたはアクションに割り当てられた特権
特定のコマンドまたはアクションに割り当てられた実効 UID (実効 GID)
実行プロファイルに指定された特権は、コマンドやアクションに継承され、使用可能になります。
コマンドは、特権を継承し、プロファイルシェルかシステムシェル内で呼び出される場合に限って、このコマンドを呼び出したユーザーのプロファイルに指定された実効 UID (GID) や機密ラベルを使用して実行されます。
アクションは、特権を継承し、ウィンドウシステムのトラステッドプロセスから起動された場合に限って、実効 UID (GID) や特定の機密ラベルを使用して実行されます。これについては、「プロファイルシェル、システムシェル、トラステッドプロセス」で説明します。
ユーザーアカウントには、All プロファイルを付与することができます。こうすると、そのアカウントは標準の UNIX ユーザーと同様、すべてのアクションやコマンドに自由にアクセスすることができるようになります。ただし、このとき「継承可能な特権」は与えられません。
標準の UNIX シェルがデフォルトシェルである場合、または、プロファイルの 1 つに標準 UNIX シェルが 記述されている場合、ユーザーはそのシェルで使用できるすべてのコマンドを実行することができます。ただし、継承可能な特権は与えられません。また、アカウントのプロファイルに設定されているアクションの内容によっては、すべてのアクションを起動できないことがあります。ユーザーや役割アカウントは 、All または All Action プロファイルを割り当てられている場合以外は、自分の実行プロファイルに明示的に指定されているアクションセットしか使用できません。一方、ユーザーや役割アカウントが使用できるコマンドはアカウントのプロファイルに記述されているコマンドのみとなります。ただし、アカウントのデフォルトシェルがプロファイルシェルである場合に限ります。
1 つのアカウントには、複数のプロファイルを割り当てることができます。この場合、プロファイルを割り当てる順序が重要で。これは、ウインドウシステム内のプロファイルシェルやトラステッドプロセスが、ユーザーマネージャで指定されている順序でプロファイルを検索するからです。プロファイルシェルやトラステッドプロセスは、複数のプロファイルやコマンドを検索してアクションを検出します。そして、コマンドやアクションには、それが検出された最初のプロファイルに割り当てられているセキュリティ属性が付与されます。
たとえば、表 16-1 に示す、roseanne というアカウントのプロファイルセットには、プロファイルが、All、A、B、C の順で割り当てられています。
表 16-1 アカウントリスト内の誤った順番のプロファイルの例アカウント名 | デフォルトシェル | プロファイル | コマンド |
---|---|---|---|
roseanne | pfsh | All | inheritable privs=none が指定された すべてのコマンド |
プロファイル A | inheritable privs=1,2,3 が指定された command1 | ||
プロファイル B | inheritable privs=2,3,5 が指定された command1 | ||
プロファイル C | inheritable privs=7,9, 12 が指定された command1 |
roseanne が command1 を実行すると、プロファイル機構により、検索がスター トします。すると、まず All プロファイルが検出され、ここで検索が終了します。All プロファイルには、特殊な属性なしで任意のコマンドの使用を許可する働きがあり、ここで、roseanne は、特権またはその他の特別な属性なしでコマンドを実行できるようになります。command1 に特権 7、9、12 が付与されていなければ roseanne の作業が失敗する場合は、セキュリティ管理者役割が、プロファイル C を roseanne のプロファイルリストの先頭 (All プロファイルの前) に移動させます。
All プロファイルを割り当てる場合は、アカウントのプロファイルリストの最後に設定し、コマンドの代替機構として働くようにします。すると、アカウントの他のプロファイルにコマンドが明示的に指定されていなくても、特権、実効 UID (GID)、指定された機密ラベルなしで、任意のコマンドを使用することができます。
プロファイルシェル pfsh(1M) は、セキュリティ管理者役割、システム管理者役割およびスーパーユーザー役割のデフォルトのシェルです。ただし、セキュリティ管理者役割の判断により、プロファイルシェルを他のユーザーまたは役割アカウントのデフォルトシェルとして割り当てることもできます。プロファイルシェルで作業しているアカウントは、自分の実行プロファイルに指定されているコマンド以外は使用できません。
システムシェル sysh(1M) は、実行制御 (rc) スクリプトから実行されるコマンドによって、特権の使用を制御することができます。sysh は、すべてのコマンドの実行を許可しますが、コマンドの実行時に使用する特権、実効ユーザー ID、実効グループ ID、機密ラベルについては、プロファイルで確認します。sysh に関する詳細は、「ブート時にコマンドを実行するには」を参照してください。
ウィンドウシステムのトラステッドプロセスには、次のものがあります。
フロントパネル
フロントパネルのサブパネル
ワークスペースのメニュー
ファイルマネージャ
アプリケーションマネージャ
ウィンドウシステム内のトラステッドプロセスは、だれでも使用できます。ただし、ウィンドウシステムからアクセスできるアクションは、自分の実行プロファイルに指定されたアクションのみです。たとえば、アプリケーションマネージャの「システム管理 (System_Admin)」フォルダにある一連の管理アクションは、アカウントのプロファイルに指定されている場合に限って使用できます。したがって、デフォルトではセキュリティ管理者役割は、セキュリティ管理者役割に割り当てられている Object Label プロファイル内の「エンコーディングの編集 (Edit Encodings)」アクションを使用できますが「マウント・ポイントの設定 (Set Mount Points)」アクションを使用することはできません。
ファイルマネージャ では、アカウントのプロファイルに指定されていないアクションのアイコンは表示されません。ワークスペースのメニューには、アカウントのプロファイルに指定されていないアクションも表示されますが、そのアクションを呼び出すとエラーになります。
CDE ウィンドウマネージャー dtwm(1) は、Xtsolusersession スクリプトを呼び出します。このスクリプトをウィンドウマネージャーと組み合わせて使用すると、ウィンドウシステムで起動しアクションを呼び出すことができます。ユーザーがコマンドを実効する際にプロファイルシェルがユーザーのプロファイルを調べるのと同様、 Xtsolusersession も、アクションの起動時に、ユーザーのプロファイルを調べます。このときアクションがユーザーのプロファイルに指定されていれば、そのアクションはユーザーのプロファイル内で指定されているそのアクションのための特権、実効 UID、実効 GID などの属性を使用して実行されます。