デバイスは、コンピュータからのデータのインポートやエクスポートの手段として使用されるため、セキュリティ保護されていなくてはなりません。Trusted Solaris 環境では、デバイスは実行プロファイルに割り当てた承認と、必須アクセス制御によって制御されます。割り当て可能なデバイスには、テープドライブ、フロッピーディスクドライブ、マイクロフォンなどがあります。
デバイス割り当て機能は、Solaris の SunSHIELD 基本セキュリティモジュール (Basic Security Module、BSM) によって提供されています。これについては、『SunSHIELD 基本セキュリティモジュール』の第 4 章「デバイスの割り当て」を参照してください。ラベル範囲には、Trusted Solaris 独自のものが使用されます。
データのインポートやエクスポートを制御する手段は、デバイス割り当ての結果、確定します。Trusted Solaris 環境では、まず管理者がデータのインポートとエクスポートに使用するデバイスを決め、/etc/security/device_maps と /etc/security/device_allocate の 2 つのファイルに定義します。
ユーザーがデバイスを割り当てるときは、デバイス割り当てマネージャを使用します。デバイス割り当てマネージャでデバイスをマウントし、デバイス clean スクリプトを実行してデバイスを使用可能にし (「デバイス clean スクリプト」を参照)、割り当てを行います。デバイスを使用した後も、デバイス割り当てマネージャから割り当てを解除します。この場合は、別のデバイス clean スクリプトを実行し、使用したデバイスのマウントと割り当てを解除します。
デバイス割り当てマネージャは、フロントパネルのスタイルマネージャの上にある「トラステッド・デスクトップ (Trusted Desktop)」サブパネルから起動します。デバイス割り当てマネージャは、デバイス割り当て承認を持つユーザーが、デバイスの割り当てと割り当て解除のためだけに使用できます。デバイス割り当てマネージャの「デバイスの管理 (Device Administration)」ボタンを使用して、デバイスが現在別のユーザーに割り当てられているかどうかを確認したり、デバイスの管理を行うことは、一般ユーザーには許可されていません。このボタンは、承認されたユーザーと管理者だけが使用できます。次の図は、デバイス割り当てマネージャの管理ツールの一覧です。
デバイス割り当てマネージャのメインウィンドウで「デバイスの管理 (Device Administration)」ボタンをクリックすると、「管理 (Administration)」ダイアログボックスが表示されます。このダイアログボックスでは、デバイスを選択した後、そのデバイスの状態を確認できます。「再利用 (Reclaim)」ボタンをクリックすると、現在エラー状態のデバイスが使用できる状態になります。「解除 (Revoke)」ボタンをクリックすると、選択したデバイスがビジー (割り当て済み) 状態から使用可能な (割り当て解除) 状態になります。これらのボタンを使用するには、「デバイスの解除または再設定」の承認が必要です。
「構成 (Configuration)」ダイアログボックスを使用するには、「デバイスの属性を構成」の承認が必要です。「管理 (Administration)」ダイアログボックスの「構成 (Configuration)」ボタンをクリックすると、「構成 (Configuration)」ダイアログボックスが表示されます。このダイアログボックスでは、デバイスラベル範囲内での最下位および最上位機密ラベルの設定、新しいデバイス clean プログラム (デバイスをクリーンアップするプログラム) の指定、デバイスを使用できるユーザーの指定などができます。
「構成 (Configuration)」ダイアログボックスの「承認 (Authorizations)」ボタンをクリックすると、「承認 (Authorizations)」ダイアログボックスが表示されます。ここでは、デバイスを使用するために必要な承認を指定できます。
デバイスの割り当てに関するセキュリティポリシーは変更可能です。ポリシーの変更は、device_policy(4) ファイルを編集して行います。これについては、『Trusted Solaris 管理の手順』の第 15 章「デバイスの管理」を参照してください。
デバイス割り当てマネージャを使用できない場合は、次に説明するコマンドを使用して、割り当て可能なデバイスを管理することができます。これらのコマンドはユーザー用ではありません。
allocate(1M) コマンドの割り当て機構を利用して、デバイスの所有権を管理することができます。認定されたユーザー 1 人がデバイスを使用している間、他のユーザーが、そのデバイスを使用することはできなくなります。
deallocate(1M) コマンドは、このコマンドを実行したユーザーに割り当てられているデバイスの割り当てを解除します。解除されるのは、device_deallocate(4) ファイルに定義されたデバイス、あるいは、そのデバイスに対応するデバイス特殊ファイルに定義されたデバイスです。deallocate コマンドは、デバイスに対応付けられた全デバイス特殊ファイルの所有権とアクセス権を取り消し、そのデバイスに対するユーザーのアクセス権も無効にします。スーパーユーザーが、別のユーザーのデバイスに対するアクセス権を解除する場合などに使用されます。
割り当て解除 (強制的な解除も含む) を行うと、device_deallocate(4) の内容に応じて、適切なデバイスのクリーンアッププログラムが実行されます。クリーンアッププログラムは通常、/etc/security/lib ディレクトリに格納されています。
list_devices(1M) コマンドは、指定された識別情報に従って、システム内の割り当て可能なデバイスを一覧表示します。
リストには、デバイスと、そのデバイスに対応するすべてのデバイス特殊ファイルが表示されます。オプションのデバイス引数を使用しない場合は、関連するデバイスがすべて表示されます。
dminfo(1M) コマンドは、デバイスマップファイルのデバイスエントリに関する情報を表示します。
add_drv(1M) コマンドは、新しくインストールしたデバイスの情報をシステムに通知する場合に使用します。add_drv コマンドを使用するには、sys_devices 特権が必要です。
rem_drv(1M) コマンドは、削除されたデバイスの情報をシステムに通知する場合に使用します。rem_drv コマンドを使用するには、sys_devices 特権が必要です。
デバイス clean スクリプトは、次の 2 つのセキュリティ条件に対応した特別なスクリプトです。
メディアのラベル付け - 取り外しの可能な情報記憶媒体に、機密ラベルと情報ラベルを示す物理ラベルを付ける。取り外し可能な記憶媒体にラベルを付ける責任は最終的にはユーザーに委ねられています。デバイス clean スクリプトを実行すると、ユーザーにラベル付けを行うよう促すメッセージが画面に表示されます。
特定のデバイスで実行するデバイス clean スクリプト名は、そのデバイスのエントリとともに device_allocate(4) ファイルに格納されます。デバイス clean プログラムの動作はデバイスごとに異なります。
デバイス clean プログラムは次の処理を実行します。
媒体を取り外す - 取り外し可能な媒体に情報を格納しているデバイスは、割り当て解除や再割り当ての際に強制的にその媒体を取り外さなくてはならない。この処置により、機密ラベルの異なるユーザーが同じデバイスを使用する場合にも、情報が流出する恐れはなくなる
デバイスの状態をリセットする - 状態情報を保持するデバイスは、ユーザーに秘密チャネルとして悪用される恐れがある。したがって、デバイスの割り当て解除の際に、ドライバの状態情報をデフォルト値にリセットしておく必要がある
媒体へのラベル付けを促す - 取り外し可能な媒体には、適切な外部媒体のラベルを付ける必要がある。デバイスが持つユーザーの機密ラベルと情報ラベルは、そのデバイスの起動時に clean プログラムに渡される (インタフェースの詳細については、device_clean(1M) のマニュアルページを参照)
割り当て可能なデバイスすべてにデバイス clean プログラムが要求されるわけではありません。状態情報を保持しておらず、取り外し可能な媒体を使用していないデバイスにはデバイス clean プログラムは必要ありません。
Trusted Solaris では、テープ、フロッピーディスク、CD-ROM、オーディオデバイス用のデバイス clean プログラムを用意しています。また、ユーザーデバイス割り当て機構は構成可能です。管理者は新しいデバイスをインストールした後、デバイス clean プログラムを独自に構成することができます。
device_allocate
device_deallocate
device_maps
device_allocate(4) ファイルは、割り当て可能な物理デバイスごとに、承認情報と必須アクセス制御情報を保持します。各エントリには、次の情報が定義されます。
デバイス名
デバイスの種類
デバイスの最下位ラベル
デバイスの最上位ラベル
デバイスの承認リスト
デバイス clean プログラム (オブジェクトの再利用ポリシーを強制するためのスクリプト)
コメント
デバイス割り当て解除機構では、システムブート、ユーザーのログアウト、タイムアウト後の強制ログアウトなどのイベントが発生したときに、デバイスの割り当てを強制的に解除するか、そのままにしておくか、またはユーザーに判断させるかが判断されます。device_deallocate(4) ファイルは、このようなイベントが発生した際、ユーザーがまだ割り当て解除していないデバイスに、デバイス割り当て解除オプションを指定します。
各デバイスの割り当て解除オプションのエントリには次の項目が定義されます。
デバイス名
システムブートオプション (ブート時の扱い)
ユーザーログアウト (ユーザーがログアウトした場合の扱い)
強制されたログアウト (ユーザーがログアウトを強制された場合の扱い)
device_maps(4) ファイルは、物理デバイス名とデバイス特殊ファイルを対応付けします。各デバイスのエントリには次の項目が定義されます。
割り当て可能なデバイスには、それぞれに機密ラベル範囲が設定されます。デバイスがユーザーに割り当てられている間は、データのインポートやそのユーザーのプロセス機密ラベルが使用されます。
ラベル範囲を持つデバイスには、テープドライブ、フロッピーディスクドライブ、CD-ROM ドライブ、プリンタなどがあります。
ndd(1M) コマンドは、選択した構成パラメータを特定のカーネルドライバで管理するためのコマンドです。このコマンドでドライバパラメータを設定するには、SYS_NET_CONFIG 特権の継承が必要です。
kstat(3K) コマンドを使用すると、ドライバが受け取った割り込み回数やNFS 操作の実行回数など、カーネルドライバの統計を表示できます。このタイプの情報には雑音が多く、変調が困難で、記録された操作の実行時の速度に依存するため、使用可能な隠しチャネルを使用します。この状況が受け入れられない場合は、インストール時に /dev/kstat の機密ラベルを ADMIN_LOW から ADMIN_HIGH に変更する必要があります。さらに、/dev/kstat の読み取りや書き込みを行うプログラムを ADMIN_HIGH で実行するか、file_mac_read または file_mac_write 特権を取得して実行する必要があります。
/dev/kstat の機密ラベルを変更するには、/etc/security/tsol/minor_perm.adjunct ファイルを編集して、kstat を ADMIN_HIGH に設定するコマンド行のコメントを外します。この行は、"#kstat:kstat0x7777777..." で始まっています。
/dev/kstat にアクセスし、ADMIN_HIGH または特権を使用して実行しなくてはならないコマンドには次のものがあります。netstat、in.rwhod、cachefslog、 cachefsstat、nfsstat、fuser、iostat、mpstat、prtdiag、psrinfo、 rpc.rstat、sad、sendmail、vmstat、w、lux。