Go to main content
Oracle® Solaris 11.3 でのシステムおよび接続されたデバイスのセキュリティー保護

印刷ビューの終了

更新: 2017 年 3 月
 
 

デバイス保護リファレンス

Oracle Solaris でのデバイスは、カーネルのデバイスポリシーによって保護されます。周辺機器は、デバイス割り当てによって保護できます。デバイス割り当ては、ユーザーレベルで任意に有効化と適用が行われます。

デバイスポリシーコマンド

デバイス管理コマンドは、ローカルファイル上のデバイスポリシーを管理します。デバイスポリシーは特権要件を含むことができます。Device Management および Device Security 権利プロファイルが割り当てられているユーザーはデバイスを管理できます。

次の表は、デバイス管理コマンドを示しています。

表 7  デバイス管理コマンド
コマンド
目的
稼働中のシステムに新しいデバイスドライバを追加します。新しいデバイスにデバイスポリシーを追加するオプションを含みます。一般に、このコマンドはデバイスドライバのインストール中にスクリプト内で呼び出されます。
稼働しているシステム上のデバイスとデバイスドライバを管理します。また、デバイスポリシーの読み込みも行います。devfsadm コマンドは、ディスクデバイス、テープデバイス、ポートデバイス、オーディオデバイス、および擬似デバイスに対する /dev リンクのクリーンアップにも使用できます。名前付きドライバのデバイスの再構成も行えます。
1 つ以上のデバイスに関連付けられたポリシーを表示します。このコマンドはどのユーザーでも実行できます。
デバイスまたはデバイスドライバを削除します。
既存のデバイスドライバの属性を更新します。デバイスのデバイスポリシーを更新するオプションを含みます。一般に、このコマンドはデバイスドライバのインストール中にスクリプト内で呼び出されます。

デバイスの割り当て

デバイス割り当てによって、データの消失、コンピュータウイルス、セキュリティー侵害などからサイトを保護できます。デバイスポリシーと違い、デバイス割り当ては任意です。デバイス割り当ては、割り当て可能デバイスへのアクセスを制限するのに承認を使用します。

デバイス割り当てのコンポーネント

    デバイス割り当てメカニズムのコンポーネントは、次のとおりです。

  • svc:/system/device/allocate サービス。詳細は、smf(5) のマニュアルページおよびデバイス割り当てコマンドのマニュアルページを参照してください。

  • allocatedeallocatedminfolist_devices コマンド。詳細は、デバイス割り当てコマンドを参照してください。

  • Device Management および Device Security 権利プロファイル。詳細は、デバイス割り当て権利プロファイルを参照してください。

  • 各割り当て可能デバイスのデバイスクリーンスクリプト。

    これらのコマンドとスクリプトは、次のローカルファイルを使用してデバイス割り当てを実装します。

  • /etc/security/device_allocate ファイル。詳細は、device_allocate(4) のマニュアルページを参照してください。

  • /etc/security/device_maps ファイル。詳細は、device_maps(4) のマニュアルページを参照してください。

  • ロックファイル。割り当て可能デバイスごとに /etc/security/dev ディレクトリに配置します。

  • 各割り当て可能デバイスに関連付けられたロックファイルの変更後の属性。

デバイス割り当てサービス

svc:/system/device/allocate サービスは、デバイス割り当てを制御します。このサービスはデフォルトで無効になっています。

デバイス割り当て権利プロファイル

デバイスおよびデバイス割り当てを管理するには、Device Management および Device Security 権利プロファイルが必要です。

    これらの権利プロファイルには、次の承認が含まれています。

  • solaris.device.allocate – デバイスを割り当てるために必要

  • solaris.device.cdrw – CD-ROM の読み取りと書き込みを行うために必要

  • solaris.device.config – デバイスの属性を構成するために必要

  • solaris.device.mount.alloptions.fixed – 固定デバイスのマウント時にマウントオプションを指定するために必要

  • solaris.device.mount.alloptions.removable – リムーバブルデバイスのマウント時にマウントオプションを指定するために必要

  • solaris.device.mount.fixed – 固定デバイスをマウントするために必要

  • solaris.device.mount.removable – リムーバブルデバイスをマウントするために必要

  • solaris.device.revoke – デバイスを取り消すか、または再利用するために必要

デバイス割り当てコマンド

大文字のオプションが指定された allocatedeallocate、および list_devices コマンドは管理用コマンドです。それ以外ではこれらのコマンドはユーザーコマンドです。次の表は、デバイス割り当てコマンドを示しています。

表 8  デバイス割り当てコマンド
コマンドのマニュアルページ
目的
1 人のユーザーだけが使用できるように割り当て可能デバイスを予約します。
デフォルトでは、ユーザーがデバイスを割り当てるには solaris.device.allocate 承認が必要です。ユーザー承認を必要としないように、device_allocate ファイルを変更することもできます。そのように変更した場合、システム上のどのユーザーでもデバイスの使用割り当てを要求できます。
デバイスから割り当て予約を削除します。
デバイスタイプ、デバイス名、またはフルパス名を指定して、割り当て可能デバイスを検索します。
割り当て可能なデバイスのステータスを表示します。
device_maps ファイルにリストされたデバイスに関連付けられている、デバイス特殊ファイルを列挙します。
–U オプションがあると、割り当て可能なデバイス、または指定されたユーザー ID に割り当てられているデバイスを一覧表示します。このオプションを使用すると、別のユーザーに割り当てることができるデバイスまたは割り当て済みのデバイスを確認できます。このコマンドを実行するには、ユーザーまたは役割に solaris.device.revoke 承認がなければなりません。
割り当てコマンドの承認

デフォルトでは、ユーザーが割り当て可能デバイスを予約するには solaris.device.allocate 承認を必要とします。solaris.device.allocate 承認を含める権利プロファイルを作成する方法については、ユーザーによるデバイス割り当てを承認する方法を参照してください。

管理者がデバイスの割り当て状態を変更するには、solaris.device.revoke 承認が必要です。たとえば、allocate および list_devices コマンドの –U オプションや、deallocate コマンドの –F オプションは、solaris.device.revoke 承認が必要です。

詳細は、Oracle Solaris 11.3 でのユーザーとプロセスのセキュリティー保護 の 承認を必要とする特別なコマンドを参照してください。

割り当てエラー状態

deallocate コマンドが割り当ての解除に失敗する場合、または allocate コマンドが割り当てに失敗する場合は、デバイスは「割り当てエラー状態」になります。割り当て可能デバイスが割り当てエラー状態となった場合、そのデバイスの割り当てを強制的に解除する必要があります。割り当てエラー状態を処理できるのは、Device Management 権利プロファイルまたは Device Security 権利プロファイルを持つユーザーまたは役割だけです。

F オプションを指定した –deallocate コマンドは、割り当て解除を強制します。あるいは、allocate -U を実行してデバイスを特定のユーザーに割り当てることもできます。いったんデバイスが割り当てられると、発生したエラーメッセージを調査できます。デバイスに関する問題が解決されたあとで、そのデバイスの割り当てを強制的に解除できます。

device_maps ファイル

システムのデバイス割り当てを作成すると、デバイスマップが作成されます。/etc/security/device_maps ファイルには、割り当て可能な各デバイスに関連付けられたデバイス名、デバイスタイプ、およびデバイス特殊ファイルが含まれています。

直観的にはわかりにくい各デバイスのために、device_maps ファイルはデバイス特殊ファイルのマッピングを定義します。このファイルによって、プログラムはどのデバイス特殊ファイルがどのデバイスに割り当てられているかを検出できます。たとえば、dminfo コマンドを使用すると、デバイス名、デバイスの種類およびデバイス特殊ファイルを取得して、割り当て可能なデバイスを設定するときに指定できます。dminfo コマンドは、device_maps ファイルを使用してデバイス割り当て情報を報告します。

各デバイスは、次の形式の 1 行のエントリで表されます。

device-name:device-type:device-list
使用例 16  device_maps エントリの例

次の例は、device_maps ファイルのエントリを示したものです。

audio0:\
audio:\
/dev/audio /dev/audioctl /dev/dsp /dev/dsp0 /dev/mixer0 /dev/sound/0 
/dev/sound/0ctl /dev/sound/audio810\:0mixer /dev/sound/audio810\:0dsp 
/dev/sound/audio810\:0 /dev/sound/audio810\:0ctl

device_maps ファイル内の行は、バックスラッシュ (\) で終了することにより、エントリを次の行に続けることができます。コメントも挿入できます。ポンド記号 (#) を付けると、1 つ前の行末にバックスラッシュのない改行まで、それに続くすべてのテキストはコメントになります。どのフィールドでも先行ブランクと後続ブランクを使用できます。フィールドの定義は次のとおりです。

device-name

デバイスの名前を指定します。現在のデバイス名のリストについては、デバイスの割り当て情報の表示を参照してください。

device-type

汎用デバイスタイプを指定します。汎用名は、stfdrmdiskaudio などの、デバイスのクラスの名前です。device-type では、関連するデバイスが論理的にグループ化されます。

device-list

物理デバイスに関連付けられたデバイス特殊ファイルを一覧表示します。device-list には、特定のデバイスにアクセスできるすべての特殊ファイルが含まれている必要があります。リストが不完全な場合は、悪意を持ったユーザーでも個人情報を入手または変更できます。device-list フィールドには、/dev ディレクトリに入っているデバイスファイルを指定します。

device_allocate ファイル

デバイスを割り当て可能から割り当て不可能に変更したり、新しいデバイスを追加したりするために、/etc/security/device_allocate ファイルを変更できます。

device_allocate ファイル内のエントリは、デバイスが割り当て可能であると特に記載していないかぎり、そのデバイスが割り当て可能であることを示しません。

device_allocate ファイルでは、各デバイスは次の形式の 1 行のエントリで表されます。

device-name;device-type;reserved;reserved;auths;device-exec

次の例は、device_allocate ファイルのサンプルを示しています。

st0;st;;;;/etc/security/lib/st_clean
fd0;fd;;;;/etc/security/lib/fd_clean
sr0;sr;;;;/etc/security/lib/sr_clean
audio;audio;;;*;/etc/security/lib/audio_clean

audio デバイスエントリの 5 番目のフィールドにあるアスタリスク (*) に注意してください。

device_allocate ファイル内の行は、バックスラッシュ (\) で終了することにより、エントリを次の行に続けることができます。コメントも挿入できます。ポンド記号 (#) を付けると、1 つ前の行末にバックスラッシュのない改行まで、それに続くすべてのテキストはコメントになります。どのフィールドでも先行ブランクと後続ブランクを使用できます。フィールドの定義は次のとおりです。

device-name

デバイスの名前を指定します。現在のデバイス名のリストについては、デバイスの割り当て情報の表示を参照してください。

device-type

汎用デバイスタイプを指定します。汎用名は、stfdsr などのデバイスクラス名です。device-type では、関連するデバイスが論理的にグループ化されます。デバイスを割り当て可能にするときは、device_maps ファイルの device-type フィールドからデバイス名を取得します。

reserved

Oracle では、reserved で示される 2 つのフィールドを将来の使用に予約しています。

auths

デバイスが割り当て可能であるかどうかを指定します。このフィールドにアスタリスク (*) が入っている場合は、デバイスが割り当て不可能であることを示します。承認を示す文字列が入っている場合や、空の場合は、デバイスが割り当て可能であることを示します。たとえば、auths フィールド内の文字列 solaris.device.allocate は、そのデバイスを割り当てるには solaris.device.allocate 承認が必要であることを示します。このフィールドに単価記号 (@) が入っている場合は、どのユーザーでもそのデバイスを割り当てることができることを示します。

device-exec

割り当てプロセス中にクリーンアップやオブジェクト再利用防止などの特殊処理のために呼び出されるスクリプトのパス名を指定します。device-exec スクリプトは、デバイスに対して deallocate コマンドを実行するたびに実行されます。

たとえば、sr0 デバイスについての次のエントリは、CD-ROM ドライブが solaris.device.allocate 承認を得たユーザーによって割り当て可能であることを示します。

sr0;sr;reserved;reserved;solaris.device.allocate;/etc/security/lib/sr_clean

デフォルトのデバイスとそれらの定義された特性を受け入れることを決定できます。新しいデバイスをインストールしたあとで、エントリを変更できます。使用前に割り当てが必要なデバイスはすべて、そのデバイスのシステムの device_allocate ファイルと device_maps ファイルで定義する必要があります。現在は、カートリッジテープドライブ、CD-ROM ドライブ、リムーバブルメディアデバイス、およびオーディオチップが、割り当て可能とみなされます。これらのデバイスタイプには、デバイスクリーンスクリプトが用意されています。


注 -  Xylogics および Archive テープドライブもまた、SCSI デバイスのために提供されている st_clean スクリプトを使用します。端末、グラフィックスタブレット、その他の割り当て可能なデバイスなどのほかのデバイスについては、ユーザー独自のデバイスクリーンスクリプトを作成する必要があります。このスクリプトは、そのデバイスタイプのオブジェクト再利用の要件を満たしている必要があります。

デバイスクリーンスクリプト

デバイス割り当てによって、セキュリティー監査者がオブジェクト再利用の要件と呼ぶものの一部が満たされます。デバイスクリーンスクリプトは、使用可能なすべてのデータを、再利用の前に物理デバイスから消去するというセキュリティー要件に対応します。データのクリアは、そのデバイスが別のユーザーによって割り当て可能になる前に実行されます。デフォルトでは、カートリッジテープドライブ、CD-ROM ドライブ、オーディオデバイスには、Oracle Solaris で提供されるデバイスクリーンスクリプトが必要です。このセクションでは、デバイスクリーンスクリプトが実行する処理について説明します。

テープ用のデバイスクリーンスクリプト

    st_clean デバイスクリーンスクリプトでは、3 つのテープデバイスがサポートされます。

  • SCSI ¼ インチテープ

  • アーカイブ ¼ インチテープ

  • オープンリール ½ インチテープ

st_clean スクリプトは、mt コマンドの –rewoffl オプションを使用してデバイスをクリーンアップします。詳細は、mt(1) のマニュアルページを参照してください。このスクリプトは、システムブート中に実行されると、デバイスを照会し、デバイスがオンラインであるかどうかを確認します。デバイスがオンラインの場合、スクリプトは、そのデバイスにメディアが挿入されているかどうかを調べます。¼ インチのテープデバイスにメディアが挿入されていた場合、このデバイスは割り当てエラー状態になります。この場合、管理者はそのデバイスを手動でクリーンアップする必要があります。

通常のシステム操作中に、deallocate コマンドを対話型モードで実行すると、メディアを取り出すように求めるプロンプトが表示されます。割り当て解除は、デバイスからメディアが取り出されるまで見送られます。

CD-ROM ドライブ用のデバイスクリーンスクリプト

CD-ROM ドライブ用の sr_clean デバイスクリーンスクリプトが用意されています。

スクリプトは、eject コマンドを使用してドライブからメディアを取り出します。eject コマンドが失敗すると、デバイスは割り当てエラー状態になります。詳細は、eject(1) のマニュアルページを参照してください。

オーディオ用のデバイスクリーンスクリプト

オーディオデバイスは、audio_clean スクリプトを使用してクリーンアップします。スクリプトは、AUDIO_GETINFO ioctl システムコールを実行してデバイスを読み取ります。AUDIO_SETINFO ioctl システムコールを実行してデバイス構成をデフォルトにリセットします。

新しいデバイスクリーンスクリプトの作成

システムに新しく割り当て可能デバイスを追加する場合は、独自のデバイスクリーンスクリプトを作成する必要があります。deallocate コマンドは、デバイスクリーンスクリプトにパラメータを渡します。次に示すように、パラメータはデバイス名を含む文字列です。詳細は、device_allocate(4) のマニュアルページを参照してください。

clean-script -[I|i|f|S] device-name

デバイスクリーンスクリプトは、成功時には「0」を、失敗時には「0」より大きな値を返す必要があります。オプション –I–f、および –S は、スクリプトの実行モードを決定します。

–I

システムのブート時にのみ必要です。すべての出力は、システムコンソールに送られます。失敗した場合や、メディアを強制的に取り出せない場合は、デバイスを割り当てエラー状態にします。

–i

出力が抑止される点を除き、–I オプションと同じです。

–f

強制的なクリーンアップ用。このオプションは対話型であり、ユーザーがプロンプトに応答するものとみなします。このオプションが付いたスクリプトは、クリーンアップの一部に失敗した場合に、クリーンアップ全体を完了しようとします。

–S

標準クリーンアップ。このオプションは対話型であり、ユーザーがプロンプトに応答するものとみなします。