この章では、Trusted Solaris システムでファイル、ディレクトリ、ファイルシステムを管理およびマウントする方法を理解するのに必要について説明します。また、ここでは、次の項目についても説明します。
この章では、次の手続きについても説明します。
Trusted Solaris システムでは、標準 Solaris システムでサポートするのとまったく同じファイル、ディレクトリ、ファイルシステム管理コマンドを、また、ほぼ同じ種類のファイルシステムをサポートしています。
ファイルまたはディレクトリにアクセスするときは、常に、さまざまなソースから取得したセキュリティ属性を使用してアクセス制御に関する決定が行われます。Trusted Solaris の拡張されたセキュリティ属性を操作するために、新たなコマンドが用意され、既存のコマンドが変更されました。
この章では、セキュリティ管理者役割が知っていなければならない次の事項について説明します。
セキュリティ属性の取得方法
セキュリティ属性の設定方法と設定値の変更方法
セキュリティ属性がまだないファイルシステムのマウント時にセキュリティ属性を指定する方法
この節では、ファイル、ディレクトリ、ファイルシステムの管理方法を説明するためにこの章で使用する用語を定義します。これらの用語とその概念は、『Trusted Solaris ユーザーズガイド』と『Trusted Solaris 管理の概要』で紹介していますが、便宜上ここでも取り上げます。これらの定義にざっと目を通してから、この章の残りの部分に進んでもいいですし、この節を飛ばして、「ファイルおよびファイルシステムのセキュリティ属性」に進み、用語が理解できない場合にここに戻るようにしてもかまいません。
定義では、初出の特殊用語または強調する必要のある用語は、「」内に示します。
アクセス制御リスト (ACL) は、ファイルまたはディレクトリの所有者が指定できるエントリの一覧に基づいて、一種の任意アクセス制御を行います。アクセス制御リストは、個人またはグループに対しアクセスを許可または制限し、UNIX 標準のアクセス権ビットよりさらにきめ細かなアクセス制御を行うことができます。
ファイル、ディレクトリ、ファイルシステムに関するアクセスポリシーで説明するように、必須アクセス制御の条件を満たした場合、次に示すテストのいずれかが真の場合に、ファイルまたはディレクトリの読み取り、書き込み、実行または検索のアクセス権がプロセスに対し与えられます。
ファイルまたはディレクトリに関する ACL が存在する場合は、次に示す条件が順番にテストされ、いずれかの条件が真であれば、希望するアクセスが許可される。いずれの条件も真でなければ、アクセスは拒否される
プロセスの実効 UID が、ファイルまたはディレクトリの所有者の UID と同じで、かつ ACL が希望するアクセスタイプを所有者に認めている
プロセスの実効 UID が ACL のユーザーリストに明示的に記載され、かつ指定のユーザーに割り当てられている ACL と ACL マスクの両方で、希望するアクセスが指定のユーザーに認められている
プロセス所有者の実効 GID または補足 GID がファイルまたはディレクトリの GID と同じであり、かつ所有者のグループに割り当てられている ACL 上のエントリおよび ACL マスクの両方で、希望するアクセスが所有者のグループに認められている
プロセス所有者の実効 GID または補足 GID が ACL グループリストに指定されており、かつ指定のグループに割り当てられている ACL 上のエントリおよび ACL マスクの両方で、希望するアクセスが指定のグループに認められている
ACL 上の「他の」項目で、希望するアクセスがプロセス所有者に認められている
アクセス対象のファイルまたはディレクトリに関する ACL が存在しない場合は、次に示す条件が順番にテストされ、いずれかの条件が真であれば、希望するアクセスが許可される。いずれの条件も真でなければ、アクセスは拒否される
プロセスの実効 UID が、ファイルまたはディレクトリの所有者の UID と同じであり、かつ所有者によるファイルへのアクセス権を示す部分 (0700) が、希望するアクセスを許可する設定になっている
実効 GID がファイルまたはディレクトリの GID と同じで、かつグループによるファイルへのアクセス権を示す部分 (0070) が、希望するアクセスタイプを許可する設定になっている。プロセスの補足グループリスト上に記載されているグループの 1 つがファイルまたはディレクトリの GID と同じで、かつグループによるファイルへのアクセス権を示す部分 (0070) が、希望するアクセスを許可する設定になっている
ファイルのアクセス権ビットの他の部分 (0007) が、希望するアクセスを他のすべてのユーザーまたはグループに許可する設定になっている
上記以外の場合、アクセスは拒否されます。ただし、プロセスが適切な 1 つ以上の DAC 無効化特権を表明している場合は別です。この特権については、「ファイル、ディレクトリ、ファイルシステムへのアクセスに関するポリシー」と「実行プロファイル機構」を参照してください。
UNIX システムでは、スプレッドシート、プリンタ、レター、本の章、メールボックスなど、ほとんどすべてのものがディレクトリに格納されるファイルとして扱われるため、何かを実行する場合にはユーザーファイルとディレクトリにアクセスする必要があります。この節では、アクセスの条件について説明します。UNIX システムではデバイスもファイルとして扱われますが、デバイスに適用される必須アクセス制御に関する規則は、ファイルまたはディレクトリに適用される規則とは若干異なります。デバイスに適用される必須アクセス制御に関する規則については、この節で別途説明します。
ファイル、ディレクトリ、デバイスは、次の方法でアクセスする場合があります。
「名前」を「表示する」(読み取る)
「内容」を「表示する」(読み取る)
「内容」または「属性」を「修正する」(書き込む)
Trusted Solaris システムでは、次の条件に基づいてこれらのアクセスが許可または拒否されます。
UNIX の基本的な任意アクセス制御の条件を満たしたかどうか
必須アクセス制御の条件を満たしたかどうか
あらゆる種類のアクセスで、プロセスの機密ラベルがパス名に含まれるすべてのディレクトリの機密ラベルより優位であり、かつプロセス所有者 (コマンドを実行した人) がパス名に含まれる各ディレクトリに対し任意の検索アクセス権を持っていることが必要です。この条件を満たしていればファイル、ディレクトリ、デバイスの名前を表示できます。
ファイルまたはディレクトリの内容や属性を表示する (読み取りアクセスを行う) 場合は、プロセスの機密ラベルが、ファイルまたはディレクトリの機密ラベルより優位でなければなりません。また、デバイスの内容を表示する (たとえば、テープドライブに装填されたテープの情報を読み込む) 場合は、プロセスの機密ラベルが、デバイスの機密ラベルと同等である必要があります。プロセス所有者は、ファイル、ディレクトリ、デバイスに対して任意の読み取りアクセスができなければなりません。
ファイルに書き込みを行なったり、ファイルの属性を修正したりするプロセスの場合は、ファイルの機密ラベルが、プロセスの機密ラベルより優位であり、かつプロセスの認可上限の範囲に収まっていなければなりません。プロセスの認可上限には、セッションの認可上限が設定されます。ディレクトリへの書き込みを行う (ファイルを作成する) プロセスの場合は、プロセスの機密ラベルが、ディレクトリの機密ラベルと同等でなければなりません。一方、デバイスへの書き込みを行う (たとえば、テープドライブに装填されているテープに情報を格納する) 場合、プロセスの機密ラベルが、デバイスの機密ラベルと同等でなければなりません。プロセス所有者は、ファイル、ディレクトリ、デバイスに対し任意の書き込みアクセス権を持っている必要があります。
デバイスファイルに関するセキュリティポリシーは、device_policy(4) ファイルにどのように定義されているかによって、通常のファイルに適用されるポリシーとは異なる場合があります。なお、このファイルは、セキュリティ管理者役割によって変更できます。
MAC 検査または DAC 検査で不合格になった各原因について、拒否されたアクセスの種類に基づいて固有の無効化特権をコマンドに対して指定することができます。コマンドに対し無効化特権を設定できるのはセキュリティ管理者役割だけです。なぜなら、セキュリティ管理者役割は、特権が信頼のある方法で行使されるよう、コマンドを実行するユーザーが認可されていること、またはコマンドの使用が信頼できることを確認しておかなければならないからです。
次に示す条件と無効化特権は、どの種類のアクセスにも適用されます。
プロセスの機密ラベルが、パス名に含まれるすべてのディレクトリの機密ラベルより優位であるか、またはプロセスが上位検索 (プロセスの機密ラベルより優位の機密ラベルを持つディレクトリを検索すること) 特権 (file_mac_search
) を持っている
コマンドを実行するユーザーが、パス名に含まれるすべてのディレクトリについて任意の検索特権を持っているか、またはプロセスがディレクトリにアクセスする際に検索制約を無効にする特権 (file_dac_search
) を持っている
次に示す条件と無効化特権は、表示 (読み取り) アクセスに適用されます。
プロセスの機密ラベルがファイルの機密ラベルより優位であるか、またはディレクトリやデバイスの機密ラベルと同等であるか、またはプロセスが MAC 読み取り制約を無効にする特権 (file_mac_read
) を持っている
コマンドを実行するユーザーは、ファイルまたはディレクトリに対して任意の読み取りアクセス権を持っているか、またはプロセスが DAC 読み取り制約を無効にする特権 (file_dac_read
) を持っている
次に示す条件と無効化特権は、変更 (書き込み) アクセスに適用されます。
ファイルの機密ラベルがプロセスの機密ラベルより優位であるか、ディレクトリまたはデバイスの機密ラベルがプロセスの機密ラベルと同等であるか、またはプロセスが MAC 書き込み制約を無効にする特権 (file_mac_write
) を持っていて、上位書き込みや、ユーザーの認可上限より上位のファイル、ディレクトリまたはデバイスに対する書き込みが行える
コマンドを実行するユーザーは、ファイルまたはディレクトリに対して任意の書き込みアクセス権を持っているか、またはプロセスが DAC 書き込み制約を無効にする特権 (file_dac_write
) を持っている
認可範囲は、実際には範囲ではなく、管理者が定義した上限と下限の間にあるすべてのラベルのセットから構成されています。Trusted Solaris システムにおけるラベルの種類と認可範囲の詳細については、「ラベル範囲」、「ユーザー認可範囲」、および 「システム認可範囲」を参照してください。
.MLD. というテキスト文字列は、デフォルトの MLD 接頭辞です。修飾名は、MLD 接頭辞を含む MLD のパス名です。修飾名は、MLD 自身にアクセスするときに使われます。
情報ラベルと、それに続く機密ラベルを [ ] で囲ったものから構成されます。形式は、情報ラベル [機密ラベル] です。
Trusted Solaris 7 以降のリリースでは、情報ラベルは使われません。CMW ラベルの情報ラベル部分は存在しますが、ADMIN_LOW
に固定されています。
格付けは、機密ラベル、認可上限の階層を表す部分です。これらのラベルは、それぞれ 1 つの格付けを持ちます。ファイルまたはディレクトリに割り当てられた機密ラベルの格付けは、ファイルまたはディレクトリに含まれる情報の機密性に基づく相対的な保護のレベルを表します。ユーザーと、ユーザーに代わってアプリケーションとコマンドを実行するプロセスに割り当てられる認可上限の格付けは、信頼性のレベルを表します。
認可上限は、ユーザーが操作する一連のラベルの上限です。下限とは、セキュリティ管理者が初期ラベルとして割り当てた最下位のラベルです。認可上限には、ユーザー認可上限とセッションの認可上限の 2 種類があります。
コンパートメントは、サイトのセキュリティ管理者役割が指定できるオプションの一連の語句で、機密ラベル、認可上限に表示されます。コンパートメントは、興味のある領域、またはそのコンパートメントを含むラベル、それらのラベルが割り当てられたファイル、それらのファイルを使用して作業する個人に関連付けられた作業グループです。
任意アクセス制御 (DAC) は、ファイルまたはディレクトリの所有者の「判断で」許可または拒否されるアクセスです。Trusted Solaris システムには、任意アクセス制御 (DAC) として、アクセス権ビットとアクセス制御リストの 2 種類が用意されています。
任意の種類のラベル (機密ラベル、認可上限) のセキュリティレベルが比較対照のラベルのセキュリティレベルと同等かそれ以上の場合、そのラベルは、比較対照のラベルより優位であるといいます。優位なラベルの格付けは、もう一方のラベルの格付けと同位かまたは上位でなければなりません。また、優位なラベルには、もう一方のラベルに含まれるすべての語句 (コンパートメント) が含まれていなければなりません。2 つの対等のラベルは互いに対して優位です。 MAC に関する判断を行うとき、機密ラベルの優位性が比較されます。「完全な優位」を参照してください。
実行プロファイル機構を使用すると、コマンド、CDE アクション、(これらのコマンドとアクションに関連した) セキュリティ属性、およびユーザー認可を、実行プロファイルにまとめることができます。次に、この実行プロファイルを、ユーザーが実施する必要のある作業に基づいて、複数のユーザーに割り当てることができます。実行プロファイルで指定するセキュリティ属性には、コマンドおよび操作に関する継承可能な特権が含まれます。これらの特権は、ファイル、ディレクトリ、ファイルシステムに関する任意アクセスポリシーおよび必須アクセスポリシーを無効にするために使用することもできます。 「Trusted Solaris のファイル、ディレクトリ、ファイルシステムに関する概要」を参照してください。
ラベルは、ファイルまたはディレクトリに格納される情報を保護するレベルに基づいて、ファイルまたはディレクトリに割り当てられる機密保護識別子です。
ラベル範囲は、実際、機密ラベルの「集まり」であり、最上位のラベルと最下位のラベルで指定します。実行プロファイルのコマンドまたはアクションにおけるラベル範囲とは、コマンドまたはアクションが実行される機密ラベルを制限するラベルの範囲を指します。ファイルシステムにおけるラベル範囲とは、情報がファイルシステムに格納される機密ラベルを制限するものです。トラステッドネットワークデータベースのホストやネットワークにおけるラベル範囲とは、リモートホストまたはネットワークのラベル範囲に基づいて、ローカルホストとリモートホストあるいはネットワークとの間で行われる通信を制限するものです。ラベルを認識しないリモートホストは、単一の機密ラベルに割り当てられます。なお、ホストを単一の機密ラベルに割り当てるには、ホストの最上位の機密ラベルを最下位の機密ラベルと同じに設定します。リモートホストからマウントされるファイルシステムに指定するラベル範囲は、リモートホストのラベル範囲に収まっていなければなりません。割り当て可能なデバイスにおけるラベル範囲とは、デバイスが割り当てられる機密ラベルを制限するものです。したがって、デバイスを使用して情報が格納または処理される機密ラベルも制限されます。ホストのフレームバッファまたは音声装置など、割り当て不可能なデバイスでのラベル範囲とは、アクセスアカウントの認可上限に基づくホストまたは音声装置へのアクセスを指します。ネットワーク認可範囲も参照してください。
必須アクセス制御 (MAC) は、ファイル、ディレクトリ、デバイス、その他アクセス対象となるものの機密ラベルを、それらにアクセスしようとしているプロセスの機密ラベルと比較することに基づいて、アクセスを制御することです。プロセスの機密ラベルは、一般的に、コマンドを起動するワークスペースの機密ラベルと同じです。ディレクトリとデバイスは、UNIX システムにおいてはファイルと同様に管理されますが、ディレクトリおよびデバイスに適用される必須アクセス制御 (MAC) の規則は、ファイルに適用される MAC ルールとは異なります。書き込みのためにファイルがアクセスされる前に、ファイルの機密ラベルがプロセスの機密ラベルより優位であることが MAC により検査され、「上位書き込み」と呼ばれるポリシーが適用されます。プロセスの認可上限より上位の機密ラベルを持つファイルに対してプロセスは書き込みを行うことができません。なお、プロセスの認可上限はセッションの認可上限に設定されます。(上位書き込みポリシーでは、プロセスと書き込み対象のファイルの機密ラベルが同等であることが認められます。) 書き込みのためにディレクトリまたはデバイスがアクセスされる前にディレクトリまたはデバイスの機密ラベルがプロセスの機密ラベルと同等であることが MAC により検査され、「同位書き込み」と呼ばれるポリシーが適用されます。表示 (読み取りまたは検索) のためにファイルまたはディレクトリがアクセスされる前に、プロセスの機密ラベルがファイルまたはディレクトリの機密ラベルより優位であることが MAC により検査され「下位読み取り」と呼ばれるポリシーが適用されます。表示のためにデバイスがアクセスされる前に、プロセスの機密ラベルがデバイスの機密ラベルと同等であることが MAC により検査され、「同位読み取り」と呼ばれるポリシーが適用されます。なお、下位読み取りポリシーには同位読み取りも含まれます。
ある機密ラベルを持つプロセスが、別の機密ラベルを持つ「ファイル」に読み取りまたは書き込みを行う際には、上位書き込み、下位読み取り (WURD) という規則が適用されます。ある機密ラベルを持つプロセスが、別の機密ラベルを持つ「ディレクトリ」に書き込みを行う際には、同位書き込み、下位読み取りという規則が適用されます。ある機密ラベルを持つプロセスが、別の機密ラベルを持つ「デバイス」に書き込みを行う際には、同位読み取り、同位書き込みという規則が適用されます。
ユーザーにとっての最下位のラベルとは、特定のユーザーが作業を実行できる機密ラベルの下限であり、ユーザーアカウントを設定する際にセキュリティ管理者役割がこれを指定します。一方、システムにとっての最下位のラベルとは、セキュリティ管理者が label-encodings ファイルの最下位ラベルフィールドに指定する機密ラベルのことで、すべてのユーザーの下限を設定するものです。
マルチレベルディレクトリ (MLD) とは、異なる機密ラベルを持つ情報が、シングルレベルディレクトリ (SLD) と呼ばれるサブディレクトリで別々に管理されるディレクトリを指します。ほとんどのインタフェースにおいて MLD は、単一の名前をもつ単一ディレクトリとして認識されます。
Trusted Solaris システムでは、/tmp、/var/mail、ユーザーのホームディレクトリといった特定のディレクトリは、MLD として作成されます。さまざまなラベルの元で実行され、このような特定の標準的ディレクトリにファイルを書き込むことが必要となる標準的アプリケーションがここに格納されます。
MLD で作業をするユーザーは、現在のプロセスの機密ラベルでのみファイルを表示したり操作したりできます。ユーザーがファイルを昇格または降格する権限を持っている場合は、MLD 内に作成したファイルまたはディレクトリの機密ラベルを昇格または降格できます。昇格したファイルまたはディレクトリの名前は表示できます。また、セキュリティ管理者が system(4) ファイル にある tsol_hide_upgraded_names をデフォルト設定値の 0 から 1 に変更して、昇格されたファイルの名前を非表示にする場合もあります。
SLD にファイルを作成したときに、機密ラベルを持つ SLD がまだ存在していない場合は、Trusted Solaris が SLD を作成し、それにプロセスの機密ラベルを割り当てます。
ユーザーが MLD にアクセスする方法は、装飾名を使用する方法と「しない」方法の 2 通りがあります。ディレクトリにアクセスするためのインタフェース (cd(1)、mkdir(1)、ls(1)) ではどちらの方法も使用できます。装飾名を使用せずに MLD を参照すると、Trusted Solaris システムは、ユーザーが作業している機密ラベル (プロセスの機密ラベル) に対応するシングルレベルのディレクトリ (SLD) を透過的に参照するようになります。たとえば、PUBLIC ラベルで cd /tmp と入力すると、ユーザーは、機密ラベルに対応する SLD (/.MLD.tmp/.SLD.1) に移動します。装飾名を使用すると、プログラムは、プロセスと同じ機密ラベルを持つ SLD ではなく、MLD を直接参照できます。したがって、cd /.MLD.tmp と入力すると、ユーザーは最上位レベルの MLD に入り、現在の作業の機密ラベルより優位でない SLD をすべて一覧にすることができます。
アクセス権ビットは、任意アクセス制御の一種です。所有者が指定するアクセス権は、誰がファイルまたはディレクトリの読み取り、書き込み、実行が行えるかを示す一連のビットとして格納されます。各ファイルまたはディレクトリには、3 つの異なるアクセス権セットが割り当てられます。すなわち、所有者に割り当てられるアクセス権セット、ファイルまたはディレクトリが指定されたグループの全メンバに割り当てられるアクセス権セット、およびその他全員に割り当てられるアクセス権セットがあります。アクセス制御リストも参照してください。
特権とは、コマンドを実行するプロセスに対し認められる権利であり、コマンドやいくつかのオプションがセキュリティポリシーの一部を無効にできるものです。特権は、コマンド自体またはコマンドを使用する人が信頼のおける方法で特権を行使できると、サイトのセキュリティ管理者役割が判断した場合にのみ認める必要があります。実行するコマンドには、実行形式ファイルに割り当てらる強制特権セットや許可特権セットあるいは特権の継承によって特権を与えることができます。特権の継承は、実行プロファイル機構によって管理されます。「実行プロファイル機構」を参照してください。
プロセスとは、コマンドを起動するユーザーに代わってコマンドを実行するものです。各プロセスは、ユーザー ID (UID)、グループ ID (GID)、追加グループリスト、ユーザーの監査 ID (AUID) など、いくつかのセキュリティ属性をユーザーから受け継ぎます。プロセスが受け継いだセキュリティ属性には、実行対象のコマンドで行使できる特権、プロセスの認可上限 (セッションの認可上限と同じ)、現在のワークスペースの機密ラベルが含まれます。
機密情報が保護されなければならない組織では、セキュリティ管理者は、サイトのセキュリティポリシーを定義し施行する人でサイトで処理されるすべての情報にアクセスできる人に割り当てられます (複数も可)。Trusted Solaris ソフトウェア環境でのセキュリティ管理者とは、適切な認可上限を持ち、かつサイトのセキュリティポリシーをソフトウェアで実現できるように、すべてのユーザーとホストのセキュリティ属性を定義する責任者 (複数も可) に割り当てられる管理役割です。デフォルトでは、この役割の名前はセキュリティ管理者役割です。
セキュリティ属性は、Trusted Solaris のセキュリティポリシーを実現するために使用されます。Trusted Solaris 固有のセキュリティ属性は、「拡張」属性と呼ばれることがあります。これらの属性は、標準 Solaris の動作環境で使用されるセキュリティ属性を拡張したものだからです。プロセス、ユーザー、ファイル、ディレクトリ、ファイルシステム、トラステッドネットワーク上のホスト、割り当て可能なデバイスや他のエンティティには、基本 Solaris および Trusted Solaris の両環境のさまざまなセキュリティ属性のセットが割り当てられます。ユーザーが使用するセキュリティ属性のうち、標準 Solaris 環境から存在するものには、ユーザー ID (UID)、監査 ID (AUID)、グループ ID (GID)、追加グループ ID (SGID)、アクセス制御リスト (ACL) が含まれます。ユーザーが使用するセキュリティ属性のうち、Trusted Solaris 環境で拡張されたものには、認可上限、最下位ラベル (初期ラベル)、承認が含まれます。
ファイルおよびプロセスに重要な Trusted Solaris のセキュリティ属性は、CMW ラベルです。CMW ラベルの機密ラベル部分は、アクセスの判断に使用されます。Trusted Solaris 7 では情報ラベルは使われず、CMW ラベルでは ADMIN_LOW に固定されます。
機密ラベルの範囲を表すセキュリティ属性は、ファイルシステム、割り当て可能なデバイス、プリンタに割り当てられます。セキュリティ管理者役割は、UID、GID、ラベル範囲、いくつかの特権を、実行プロファイル内のコマンドと CDE アクションとに関連付けることができます。
機密ラベル範囲とともに、ネットワーク認可範囲と呼ばれるその他のセキュリティ属性が、トラステッドネットワークデータベース内のホストに割り当てられます。このデータベースを使用して、ホストとネットワーク間の通信に MAC を適用します。
NFS マウントが実行される機密ラベルは、トラステッドネットワークデータベースで NFS サーバーに割り当てられている機密ラベルによって制限されます。「ファイルシステムの属性」を参照してください。
Trusted Solaris 環境におけるセキュリティポリシーとは、DAC、MAC、情報へのアクセス方法を定義した情報ラベルのルールを指します。ユーザーにとってのセキュリティポリシーとは、サイトで処理される情報の機密性を定義した一連のルールであり、かつ無認可のアクセスから情報を保護するための手段でもあります。
機密ラベルは、ファイル、ディレクトリ、プロセスに割り当てられる機密保護のためのラベルであり、それらに含まれている情報のセキュリティレベルに基づいてアクセスを制御するのに使用されます。
セッションの認可上限は、特定のログインセッションでだけ有効な認可上限であり、セッションを開始したユーザーによって設定されます。セッション中に開始した各プロセスには、セッションの認可上限と同等のプロセスの認可上限が与えられます。セッションの認可上限には、ユーザーの認可上限と同等か、またはそれより低いものを設定できます。
シングルレベルディレクトリ (SLD) とは、単一の機密ラベルを持つファイルが格納される MLD 内のディレクトリを指します。特定の機密ラベルで作業をしているユーザーが /tmp などの MLD があるディレクトリに入ると、このユーザーの作業ディレクトリは、MLD 内の単一ラベルディレクトリ (/.MLD.tmp/.SLD.1) に変更されます。この機密ラベルは、ユーザーが作業している機密ラベルと同じです。SLD 名は、.SLD. 接頭辞の後に SLD 名の作成順序を表す番号を付けたものです。
任意のラベル (機密ラベル、認可上限のいずれか) のセキュリティレベルが、比較対象となる別のラベルのセキュリティレベルより高い場合、そのラベルは、比較対象のラベルより完全に優位であると言います。完全な優位とは、同等でない優位を意味します。このような状態が発生するのは、一方のラベルの格付けが他方のラベルの格付けより上位にあり、かつ一方のラベルに他方のラベルのコンパートメントがすべて含まれている場合、または両方のラベルの格付けが同じで、かつ一方のラベルに、他方のラベルに含まれている全コンパートメントに加え、別のいくつかのコンパートメントが含まれている場合です。
システム認可範囲には、各サイトのセキュリティ管理者役割が label_encodings(4) ファイルに定義した規則に従って作成した有効な (正しい形式の) あらゆるラベルの集合と、あらゆる Trusted Solaris システムで使用される 2 つの管理ラベル、すなわち、ADMIN_LOW と ADMIN_HIGH が含まれます。
ユーザー認可範囲は、一般ユーザーがシステム上で作業できるあらゆるラベルの集合であり、各サイトのセキュリティ管理者が定義します。システム認可範囲を定義する正しい形式のラベルに関する規則では、サイトの label_encodings(4) ファイルの ACCREDITATION RANGE セクションに指定された各種の値 (上限、下限、組み合わせ制約、その他の制約) によってさらに制約が課されます。
ユーザー認可上限とは、セキュリティ管理者によって割り当てられ、特定のユーザーが随時作業を行うラベルの集合の上限に相当します。セッションの認可上限を設定する特定のログインセッション中に、その認可上限を受け入れるか、それともさらに制約を課すかを決定できます。
属性は、次のように指定できます。
ファイルシステム内にある個々のファイルまたはディレクトリのレベル (「ファイルおよびディレクトリのセキュリティ属性」を参照してください。)
ファイルシステムのレベル (「ファイルシステムの属性」を参照してください。)
マウント時 (「マウント時にセキュリティ属性を指定する」を参照してください。)
すべての ufs タイプのファイルシステムは可変属性ファイルシステムです。可変属性システムでは、各ファイルシステムオブジェクトの機密ラベルは作成時に設定され、変更できます。固定属性ファイルシステムでは、機密ラベルは、ファイルシステムがマウントされているリモートホストの tnrhdb(4) または tnrhtp(4) ファイルの def_SL 設定により、あるいはマウント時に決定されます。
必要な属性をどこからも取得できない場合は、一連のデフォルト値が使用されます。属性の取得方法に関するルールについては、「Trusted Solaris 属性の取得手順に関するルール」を参照してください。
次の表に示したセキュリティ属性は、標準 Solaris のオペレーティングシステムのものです。
表 11-1 標準 Solaris のセキュリティ属性
標準 Solaris のセキュリティ属性 |
---|
ユーザー ID |
グループ ID |
アクセス権モード |
アクセス ACL (オプション) |
デフォルト ACL (オプション) |
Trusted Solaris のファイルとディレクトリには、標準 Solaris ファイルシステムの属性に加えて、拡張セキュリティ属性が用意されています。Trusted Solaris セキュリティポリシーに必要な拡張セキュリティ属性を次の表に示します。
表 11-2 Trusted Solaris オペレーティングシステムにおけるファイルとディレクトリの属性拡張セキュリティ属性 | Trusted Solaris の拡張セキュリティ属性の説明 |
---|---|
機密ラベル | ファイルまたはディレクトリの機密ラベル |
強制された特権 | オプション。実行可能ファイルが実行時にその使用を保証されている特権セット。許容された特権のサブセットでなければならない。 |
許容された特権 | オプション。この実行可能ファイルが実行時に許容されている特権の最大セット。(実行可能ファイルを編集すると、それらの特権がすべて失われてしまうため、実行可能ファイルが使用することのできる特権を許容されたセットに制限することによってトロイの木馬の侵入を防ぐ。プログラムが編集されてしまうと、プログラムは継承可能な特権を使用することができないためである)。強制された特権のスーパーセットでなければならない。 |
ファイル属性フラグ |
オプション。公開ファイル属性フラグのみをサポート。このフラグが設定されているファイルシステム内の任意のオブジェクトに対して、ある読み取り操作を行うと、その操作があらかじめ選択された監査クラスのものであっても、監査記録が生成されない。ただし、次のような例外がある。特権の使用のための監査疑似イベントの特権 (AUE_UPRIV) をあらかじめ選択した監査クラスに入れておき、特権の使用が必要になる操作を行うと、監査記録が常に生成される。このような例外はあるが、公開フラグが設定されていると監査記録が生成されない読み取り操作には次のようなものがある。access(2)、fgetcmwlabel(2)、fgetsldname(2)、fstatvfs(2)、 getcmwfsrange(2)、getcmwlabel(2)、getfpriv(2)、 getmldadorn(2)、 getsldname(2)、lgetcmwlabel(2)、 lstat(2)、mldlstat(2)、 mldstat(2)、open(2)、読み取りのみ、patchconf(2)、 preadl(2)、readl(2)、readlink(2)、 stat(2)、statvfs(2) |
ディレクトリ属性フラグ | オプション。ディレクトリが MLD であることを示すフラグ。 |
Trusted Solaris オペレーティング環境では、パス名に含まれるディレクトリの機密ラベルに順序を付けません。
ファイルとディレクトリは、それらを含むディレクトリと同じ機密ラベルでだけ作成できます。ただし、特権を持つサブジェクトは、ファイルとディレクトリを作成し、有効な任意の機密ラベルで既存のファイルとディレクトリに再度ラベル付けを行なって、昇格したオブジェクトを作成することができます。「ファイルおよびディレクトリのラベルと特権を変更するには」を参照してください。
昇格されたファイルとディレクトリの名前が表示されないようにシステムを構成することができます。デフォルトでは、これらの名前を表示します。セキュリティ管理者役割は、system ファイルの tsol_hide_upgraded_names というスイッチの設定を変更します。詳細は、第 13 章「Trusted Solaris カーネルスイッチ設定の変更」を参照してください。設定の変更後、リブートしてください。
ディレクトリ名は、ディレクトリが削除されるときにクリアされます。これは、削除されたディレクトリの名前にアクセスできてはならないというオブジェクトの再利用条件に準拠したものです。
Trusted Solaris のシンボリックリンクは、ラベルを持ちます。
MLD は、ファイルシステム内で通常のディレクトリとして表示されますが、MLD であることを示すフラグを持っています。MLD は、それを作成、削除、使用するための特権を必要としません。MLD 内の SLD に下位読み取りアクセスを行うとき、非特権プロセスが読み取れるのはプロセス自身と同等の機密ラベルをもつ SLD とプロセス自身より下位の機密ラベルをもつ SLD に含まれる情報を合わせたものです。mldpwd(1) と mldrealpath(1) の各コマンドを使用して、現在の作業ディレクトリ名または他の MLD の装飾名を取得します。MLD のマウントは装飾名を必要としません。
vi(1) などのコマンドでディレクトリ内に新規のファイルを作成しよう (書き込もう) とすると、コマンドを実行しているプロセスのセキュリティ属性が、ファイルの作成先ディレクトリの対応するセキュリティ属性と比較されます。この例では、UID と機密ラベルが比較されます。ファイルの作成が成功するかどうかは、必要な MAC 検査と DAC 検査に合格するかどうかで決まります。ユーザー ID は、ディレクトリのアクセス権ビットと、ACL (存在する場合) とに指定された DAC 条件を満たしていなければなりません。また、MAC 条件を満たすには、ディレクトリの機密ラベルは、プロセスの機密ラベルより優位でなければなりません。
MLD であるディレクトリが単一ラベルを持つホストによってマウントされる場合は、そのホストの機密ラベルに対応する SLD がマウントされ、MLD はマウントされません。なお、この機密ラベルは、管理者の権限によりトラステッドネットワークデータベース 内でそのホストに割り当てられたものです。たとえば、ユーザーのホームディレクトリが、ラベルなしのホスト上に自動的にマウントされる場合は、tnrhdb(4)/tnrhtp(4) 内でホストに割り当てられている、機密ラベルを持つ SLD だけがマウントされます。
ユーザーと管理者は、Trusted Solaris のファイルマネージャの使用により、ファイルとディレクトリのアクセス権の変更ができます。また承認されたユーザーと管理者は、ファイルとディレクトリの特権やラベルの設定ができます。行おうとしているアクセスが MAC ポリシーまたは DAC ポリシーに違反する場合は、承認が必要です。
ファイルマネージャの「選択 (Selected)」メニューの「ラベル (Label)」オプションを使用すると、機密ラベルおよび情報ラベルを設定することができます。また、機密ラベルおよび情報ラベルの設定は、プロファイルに setlabel(1) コマンドが設定されている任意のアカウントによってコマンド行から実行することもできます。また、ファイルマネージャの「選択 (Selected)」メニューの「特権 (Privileges)」オプションを使用すると、実行可能ファイルに強制された特権と許容された特権を設定することができます。強制された特権と許容された特権の変更は、プロファイルの 1 つに setfpriv(1) コマンドが設定されている任意のアカウントによってコマンド行から実行することもできます。
「選択 (Selected)」メニューのオプションのどちらかで特権およびラベルを設定するためには、次の承認が必要です。
特権の設定には「ファイルの特権を設定」承認が必要である
ファイルおよびディレクトリの各ラベルの昇格には、「ファイルの機密ラベルを昇格」承認が必要である
ファイルおよびディレクトリの各ラベルの降格には、「ファイルの機密ラベルを降格」承認が必要である
次に、ファイルマネージャの「選択 (Selected)」メニューを示します。アクセス権の変更方法については、「ファイルおよびディレクトリのラベルと特権を変更するには」を参照してください。
getfattrflag(1) コマンドを使用して、ファイルまたはディレクトリの属性フラグを取得し、setfattrflag(1) コマンドを使用して、ファイルに公開オブジェクトフラグを、ディレクトリに MLD フラグをそれぞれ設定します。
Trusted Solaris システムでサポートされるファイルシステムの特徴は、属性を変更できるファイルシステムと変更できないファイルシステムがあることです。属性が変更可能な場合、それらのファイルシステムは、可変属性ファイルシステム、または可変ファイルシステムと呼ばれます。たとえば、マウントされた可変ファイルシステムにおける機密ラベルは、承認されたユーザーによって変更することができます。
Trusted Solaris 拡張セキュリティ属性をサポートしていないファイルシステムは、(マウント時、あるいはデフォルトで) 割り当てられた属性の変更ができないため、固定ファイルシステムと呼ばれます。たとえば、マウントされている固定属性のファイルシステムに指定された機密ラベルは、オブジェクトが固定ファイルシステムから移動される場合にのみ変更が可能です。
すべての ufs
タイプのファイルシステムは可変です。したがって、Trusted Solaris システムでインストールされるすべてのファイルシステムは可変です。Trusted Solaris または TSIX NFS サーバーからマウントされる nfs
タイプのファイルシステムは可変です。他のオペレーティング環境が動作している NFS サーバーからマウントされる nfs
タイプのファイルシステムは固定です。tmpfs
ファイルシステムは可変です。fdfs
、hsfs
、および pcfs
タイプのファイルシステムは常に固定です。lofs
タイプのファイルシステムの属性は実際のファイルシステムの属性と同じです。詳細は、「Trusted Solaris システムにマウントできるファイルシステムの種類」を参照してください。
次の表には、可変属性ファイルシステムのセキュリティ属性を示します。また、可変属性を指定しない場合に使用されるデフォルト値も示します。
表 11-3 Trusted Solaris ファイルシステムのセキュリティ属性と定義済みの設定値属性 | 説明 | デフォルト値 |
---|---|---|
ファイルシステムの MLD 接頭辞 | ファイルシステムの MLD を示す MLD 接頭辞に使用される文字 | .MLD |
ファイルシステムの機密ラベル範囲 | このファイルシステム上に作成されたファイルとディレクトリの最下位の機密ラベルと最上位の機密ラベル | ADMIN_LOW 〜 ADMIN_HIGH |
ファイルシステムの機密ラベル | このファイルシステム上にあるすべてのファイルとディレクトリのうち、明示的な機密ラベルを持たないものについて仮定される機密ラベル | なし |
ファイルシステムのアクセス ACL | このファイルシステム上にあるすべてのファイルとディレクトリのうち、明示的なアクセス ACL を持たないものについて仮定されるアクセス ACL (形式については setfacl(1) を参照のこと) | なし |
ファイルシステムの強制された特権のセット | このファイルシステム上にあるすべての実行可能ファイルのうち、明示的な強制された特権を持たないものについて仮定される強制された特権のセット | なし |
ファイルシステムの許容された特権のセット | このファイルシステム上にあるすべての実行可能ファイルのうち、明示的な許容された特権を持たないものについて仮定される許容された特権のセット | なし |
サイトのセキュリティポリシーに基づいて新たなセキュリティ属性が必要になった場合には、セキュリティ管理者役割を行うことができます。
setfsattr(1M) を使用して、既存のファイルシステム上の属性セットを調整する (「ファイルシステム上でセキュリティ属性を設定するには」を参照してください。)
Trusted Solaris ホスト上の /、/usr 、/var というファイルシステムのセキュリティ属性は、変更したり明示的に設定したりしないでください。予想外の結果になることがあります。
固定属性ファイルシステムをマウントするとき、セキュリティ管理者役割は mount -S コマンドをコマンド行から入力するか、 vfstab(4) ファイルを使用して、セキュリティ属性を指定できます。マウント時に指定された属性は、ファイルまたはディレクトリが属性を持っていなければ、マウントされたファイルシステム内のすべてのファイルおよびディレクトリに適用されます。ファイルまたはディレクトリ上のすべての属性が使用されます。たとえば、UNIX ファイルシステム内のファイルおよびディレクトリはユーザー ID (UID) とグループ ID (GID) を持っているため、ファイルシステムオブジェクトがすでに持っている UID と GID が使われます。ファイルまたはディレクトリが属性を持っておらず、マウント時に何も指定されない場合、デフォルト (表 11-4 を参照) が適用されます。
固定属性ファイルシステムでは、オブジェクトがファイルシステム上に存在するかぎり、セキュリティ属性はオブジェクト上で変更できません。
固定属性ファイルシステムは、Trusted Solaris ホストにマウントされるとき、単一の機密ラベルを持つよう構成されるので、「単一ラベルファイルシステム」と呼ばれます。
次の例は、Solaris 動作環境で動作する NFS サーバーから /spare と呼ばれる固定属性ファイルシステムを NFS マウントするコマンド行を示したものです。このサービスは、outside サービスと呼ばれます。/spare には、[INTERNAL_USE_ONLY] という機密ラベルが付けられており、次のコマンド行に示すように、-S オプション付きの mount が使われています。
$ mount -F nfs -S "slabel=INTERNAL_USE_ONLY; outside:/spare /spare |
例えば、マウントされたファイルシステム /spare に、test と呼ばれるファイルがある場合、 /spare/test の機密ラベルは誰も変更できません。また、その情報ラベルを浮上させることもできません。ただし、/spare/test を /tmp または /export/home/secadmin などの別のディレクトリにコピーすると、そのラベルを変更することができます。
固定属性ファイルシステム (Solaris システムのファイルシステムなど) がマウントされていると、マウント時に指定されていないセキュリティ属性には、デフォルト値が割り当てられます。マウント時の属性値が mount コマンド行にもファイルシステムの vfstab_adjunct エントリにも指定されていないとき、属性をサポートしていない固定属性ファイルシステムに使用される値を表 11-4 に示します。
表 11-4 固定ファイルシステムに割り当て可能な属性属性 | デフォルト値 |
---|---|
UID | UID がファイルシステムのオブジェクトとして定義されていないときは、割り当てが必要。 フロッピーから DOS ファイルシステムをマウントするときなど。 |
GID | GID がファイルシステムのオブジェクトとして定義されていないときは、割り当てが必要。 フロッピーから DOS ファイルシステムをマウントするときなど。 |
モード | UID がファイルシステムのオブジェクトとして定義されていないときは、割り当てが必要。 フロッピーから DOS ファイルシステムをマウントするときなど。 |
属性フラグ | なし |
MLD 接頭辞 | 空の文字列 |
機密ラベル範囲 | ADMIN_LOW から ADMIN_HIGH |
機密ラベル |
固定ファイルシステムが CD-ROM またはフロッピーディスクからマウントされている場合: マウントポイントの機密ラベル (マウント処理を実行しているプロセスの機密ラベルに変更される) 固定ファイルシステムが NFS サーバーからマウントされている場合: デフォルトの機密ラベル (管理者役割がトラステッドネットワークエントリ内でサーバーに割り当てる) |
アクセス ACL | なし |
強制された特権セット | なし |
許容された特権セット | なし |
Trusted Solaris の mount(1M) を使用すると、次の種類のファイルシステムをマウントすることができます。
FDFS
HSFS
LOFS
NFS
PCFS
PROCFS
TMPFS
UFS
CACHEFS という種類のファイルシステムは、サポートされていません。自動マウント (automount(1M) のマニュアルページを参照) はファイルシステムを AUTOFS タイプでマウントします。
mount_nfs(1M)、mount_ufs(1M) など、mount_* と表現されるマニュアルページが複数用意されていますが、mount(1M) というコマンドは 1 つしかありません。mount というマニュアルページには、マウント時に設定できるセキュリティ属性と、マウントが正常終了するのに必要な特権、UID および GID について説明しています。セキュリティ属性の詳細については、「ファイルシステムの属性」とそれに続く説明を参照してください。
各種のファイルシステムをマウントするためのオプションについては、該当する mount_* マニュアルぺージを参照してください。vfstab_adjunct(4) というマニュアルページでは、/etc/security/tsol/vfstab_adjunct ファイルについて説明しています。このファイルには、vfstab(4) ファイル、 /etc/auto_direct ファイル、または autofs マップ で指定されたファイルシステムをマウントする際に使用されるマウント時セキュリティオプションを入力することができます。
表 11-5 では、各種のマウントについて説明し、例も示します。
マウントの種類 | 使用する目的 | 説明 |
---|---|---|
FDFS | 仮想タイプのファイルシステムであり、ファイル名スペースを通して、プログラムが独自のファイル記述子にアクセスできるようにする | 各プロセスはそれ自身のファイル記述子にしか、アクセスすることができないため、MAC および DAC による分離を確実に行うことができる。モード (0666)、グループ (スーパーユーザー) および所有者 (スーパーユーザー) はカーネルによって作成されるが、DAC の判断には使用されない。機密ラベルおよび情報ラベルは、そのファイル記述子に関連付けられているファイルまたはディレクトリの機密ラベルである。これは固定属性ファイルシステムである。 |
HSFS | ファイルシステムを CD デバイスからマウントする | mount_hsfs(1M) を参照のこと。Trusted Solaris 環境では、マウント時にファイルシステムの固定属性を指定できる。 |
LOFS | 仮想ファイルシステムの作成を可能にする、仮想タイプのファイルシステムであり、代替パス名を使用して既存のファイルにアクセスできる | lofs(7FS) を参照のこと。Trusted Solaris システムのセキュリティ属性は、基本ファイルシステムのセキュリティ属性と同じである。 |
NFS | リモート NFS サーバーからファイルシステムをマウントする | mount_nfs(1M) を参照のこと。また、「Trusted Solarisの NFS マウント」も参照のこと。NFS マウントは、固定属性および可変属性の各ファイルシステム上で使用できる。 |
ディスケットから DOS ファイルシステムをマウントする |
pcfs(7FS) を参照のこと。このファイルシステムには、拡張属性は設定できない。 |
|
PROCFS | 仮想タイプのファイルシステムであり、システム上の各プロセスのイメージにアクセスできる。/proc ディレクトリの各エントリの名前は、プロセス ID に対応する 10 進数の数字である。各ファイルの所有者は、プロセスの実ユーザー ID によって決まる。 | Trusted Solaris システムの PROCFS は、全 Trusted Solaris 属性がサポートされる可変属性ファイルシステムである。プロセスからのアクセスは、/proc ファイルに設定された DAC 属性と MAC 属性に基づいて判断される。これらの属性は、プロセスの DAC 属性と MAC 属性から取り込まれる。proc_owner 特権を持っている呼び出し元プロセスは、呼び出し元が所有していないプロセスに関する情報を同じ機密ラベルで取得することができる。proc_mac_read 特権を持っている呼び出し元プロセスは、プロセスの機密ラベルが呼び出し元の機密ラベルより優位であるか、または無関係の場合に、呼び出し元が所有するプロセスに関する情報を取得できる。変更に関する制約は、読み取りに関する制約よりきめ細かく設定されている。proc(4) マニュアルページを参照のこと |
TMPFS | スワップページを使用する一時的なファイルシステムをメモリ (一次メモリまたはスワップ記憶領域) にマウントする。マウントされた内容はリブート時に消滅する | /tmp はしばしば tmpfs としてマウントされる。この利点は、一時的なファイルシステムの内容に関係なく、アクセス速度が格段速くなるということである。これは、情報がディスクからでなく、メモリから取り込まれるからである。 mount_tmpfs(1M) を参照のこと |
UFS | ファイルシステムをローカルディスクからマウントする | mount_ufs(1M) を参照のこと。UFS ファイルシステムには、マウント時に固定属性を割り当てたり、作成時または後に可変属性を割り当てたりすることができる。「ファイルシステムに可変属性を設定する」を参照のこと。注: ラベルなしの (固定属性) ファイルシステムでは、通常、MLD 接頭辞は有効ではない。ただし、例外として、別の可変ファイルシステムがラベルなしのファイルシステムにマウントされる場合に、そのファイルシステムのルートが MLD である場合は、MLD 接頭辞を指定する必要がある。接頭辞を指定しないと、デフォルトとして空の文字列が使用される |
UFS マウントと NFS マウントは、もっとも一般的に使用されるマウントの種類です。
MLD は、次のファイルシステムのみで使用できます。
ufs (always variable)
nfs-variable
(Trusted Solaris サーバーからマウントされる NFS ファイルシステム)
lofs
tmpfs
mount コマンドを使用するには、コマンド行または vfstab(4) ファイルに -o オプションを指定し、それに続けて 4 つの保護オプションのいずれかを指定します。これらの保護オプションには、マウントされるファイルシステム上にあるデータを保護するために使用するものもあれば、マウントされたファイルシステムからトロイの木馬のような侵入を防ぐものもあります。次の表に示す mount 制約はすべてのファイルシステムに適用されます。デフォルト値の欄には、admin がオプションを指定しない場合に使用される値を示します。
表 11-6 マウント時の制約とデフォルト値
説明 |
デフォルト値 |
代替値 |
---|---|---|
書き込み操作を禁止する |
rw |
ro |
実行可能ファイル上のユーザー ID 設定ビットを無視する |
suid |
nosuid |
実行可能ファイル上の強制された特権セットを無視する |
priv |
nopriv |
デバイス特殊ファイルのオープンを禁止し、標準以外のディレクトリからデバイスが使用されるのを防ぐ |
devices |
nodevices |
書き込みを禁止する ro オプションと、ユーザー ID 設定ビットを無視する suid オプションは、標準 Solaris バージョンのマウントのものです。
ファイルシステムによっては、属性が個々のオブジェクト (ファイルやディレクトリ) に結びつくこともあれば、ファイルシステムのレベルだけにしか存在しないこともあります。ファイルシステムレベルの属性は、ファイルシステムそのものによって提供されるか、マウント時に指定されます。マウント時に指定した属性は、ファイルシステム上の同じ属性を無効にします。
ファイルシステムのセキュリティ属性のマウント時の指定は、コマンド行で -S オプション付きの mount を使って行われるか、vfstab_adjunct ファイルまたは、auto_master および autofs マップのエントリで -S オプションを付けて指定します。セキュリティ属性が auto_master でも autofs マップのエントリでも指定されておらず、マウントポイントのエントリが vfstab_adjunct ファイル内にあれば、vfstab_adjunct のセキュリティ属性が使われます。詳細は、mount(1M)、vfstab_adjunct(4)、および automounat(1M) のマニュアルページを参照してください。
次の表に、各種ファイルシステムがどのようなファイルシステム属性をサポートしているかを示します。表 11-8 の追加情報も参照してください。
表 11-7 各種ファイルシステムでサポートされている属性属性 | UFS/TNFS | TMPFS/SLNFS | PCFS/HSFS |
---|---|---|---|
許容された特権 | FS | MT | MT |
強制された特権 | FS | MT | MT |
CMW ラベル | FS | MT | MT |
MLD 接頭辞 | FS | MT | MT |
ラベル範囲 | FS | MT | MT |
監査事前選択マスク | FS | MT | MT |
ファイルシステム属性フラグ | FS | none | none |
オブジェクト属性フラグ | FS | MT | MT |
マウントフラグ | MT | MT | MT |
アクセス ACL | OBJ | OBJ | MT |
ファイルモード | OBJ | OBJ | MT* |
ファイル所有者 | OBJ | OBJ | MT* |
ファイルグループ | OBJ | OBJ | MT* |
次の表に、表 11-7 で説明したファイルシステムの属性がどこから取得されるのかを理解するための追加情報を示します。
表 11-8 各ファイルシステムの属性がどこから取得されるのかファイルシステムの種類 | 属性の入手先 | 種類 | 属性の入手先 |
---|---|---|---|
UFS | Trusted Solaris ホストの ufs ファイルシステム | FS | ファイルシステムで指定された属性 |
TNFS | Trusted Solaris または TSIX サーバーの tnfs ファイルシステム | MT | マウント時指定の属性 |
TMPFS | tmpfs ファイルシステム | OBJ | ファイルシステムの全オブジェクトに付けられた属性 |
SLNFS | 単一ラベル/ラベルなしサーバーの NFSv2 ファイルシステムまたはNFSv3 ファイルシステム | MT | Rock Ridge 拡張機能付き hsfs 用。 OBJ と同じ |
PCFS | pcfs ファイルシステム | ||
HSFS | hsfs ファイルシステム |
固定ファイルシステムと可変ファイルシステムの両方において、セキュリティ属性はマウント時に指定できます。
次に、マウント時にセキュリティ属性を指定できるファイルシステムのタイプを示します。
属性がサポートされていないファイルシステム (DOS ファイルシステムなど)
UID、GID、モードをサポートしているが、Trusted Solaris 拡張セキュリティ属性をサポートしていないファイルシステム (ファイルシステムオブジェクトにおける機密ラベルなど)
属性が指定されていない場合は、デフォルト値が使用されます。
mount コマンドは、固定属性ファイルシステムをマウントするときに、特権セット、ACL、機密ラベルにデフォルト値を設定するように拡張されています。UFS および トラステッド NFS (可変) ファイルシステムでは、マウントプロトコルは、ローカルマシン上またはリモートマシン上にあるファイルシステムから拡張属性を取り込むよう、機能拡張されています。
セキュリティ管理者は、マウント時にセキュリティ属性を指定するために、mount -S オプション、または vfstab_adjunct(4) ファイル内のファイルシステムのエントリを使用します。詳細は、mount(1M) のマニュアルページを参照してください。
マウント時にセキュリティ管理者役割が一連の属性を指定できるようにすることで、ファイルシステム、またはファイルとディレクトリのいずれかのレベルで、埋め込みセキュリティ属性をサポートしていない固定属性ファイルシステムをマウントできるようになります。また、セキュリティ管理者は属性を指定することによって、それらのファイルシステム上の定義済み属性を無効にできます。
ファイルシステムがマウントされる場合、ファイルシステムの種類でサポートされている属性のリストに照合して、指定のマウント属性が検査されます。マウント属性が、ファイルシステムでサポートされていない場合、マウントは失敗し、マウントコマンドの呼び出し元にエラーが返されます。たとえば、ufs というファイルシステムでは、ユーザー ID がサポートされ、マウントユーザー ID はサポートされていません。ファイルのマウント時に行われる 2 番目の検査は、属性値の妥当性に関するものです。属性値が有効でない場合、ファイルシステムはマウントされず、エラーが呼び出し元に返されます。たとえば、強制された特権セットは、許容される特権セットに含まれていなければなりません。
単一ラベルの固定属性ファイルシステムでは、ファイルシステムのマウント時に指定した単一機密ラベルでのみ、ファイルとディレクトリにアクセスすることができます。単一ラベルのファイルシステムでは、個々のファイルとディレクトリの機密ラベルと情報ラベルを変更できません。指定したラベル範囲と機密ラベルが全データのラベルを正確に表現するよう保証するのは、管理者の責任です。
ラベルなしのホストとして構成されたホストからマウントされたファイルシステムは、ホスト内にあるファイルとディレクトリの UID、GID、オプションの ACL とデフォルトの ACL をサポートしますが、セキュリティ属性は持ちません。セキュリティ管理者役割は、機密ラベル範囲 (事実上、ファイルシステムの単一ラベルになる) と、他のデフォルトのセキュリティ属性を指定します。
ファイルまたはディレクトリの属性は、ファイルシステムの属性より優先します。マウント時に指定された属性は、ファイルシステム内ですでに有効になっているファイルシステム属性より優先します。マウント時またはファイルシステムから取得できない属性には、デフォルト値が与えられます。
次の図に、属性の取得ルールを示します。
この例では、Solaris ホストからマウントされる /public というファイルシステムについて、セキュリティ管理者がファイルシステムの vfstab_adjunct のエントリに、次のセキュリティ属性を指定しています。
最下位の機密ラベルと最上位の機密ラベル (PUBLIC)
デフォルトの機密ラベル (PUBLIC)
許容された特権セット (なし)
強制された特権セット (なし)
このファイルシステム内のファイルとディレクトリにアクセスしようとする際には、通常の DAC ルールが適用されます。上記の一連のデフォルト値をこのファイルシステムに使用すると、次のようになります。
機密ラベルが PUBLIC のウィンドウからは、このファイルシステム内にあるファイル (/public/stock.quotes など) にアクセスできる
ファイルがファイルシステム /public に存在する限り、ファイルの機密ラベルをユーザーが変更することはできない
ファイルシステム /public 内のファイルを可変ファイルシステムにコピーまたは移動させるとき、ファイルの機密ラベルは、コピーを実施したプロセスの機密ラベルに変更され、ファイルの残りのセキュリティ属性も変更できるようになる
Trusted Solaris NFS クライアント上で mount(1M) を呼び出し、NFS タイプのマウントを実行するときに、NFS サーバーが必ずしも Trusted Solaris オペレーティング環境を実行しているとは限りません。NFS サーバーはそのファイルシステムをローカルに保有し、ローカルなファイルシステムの種類として、hsfs、pcfs、tmpfs、ufsなどを使用します。NFS サーバーは、ファイルシステムを share(1M) を使用してエクスポートします。share コマンドとそのオプションは、コマンド行または dfstab(4) ファイルに指定することができます。
Trusted Solaris では、標準 Solaris オペレーティング環境とTrusted Solaris 1.x リリースでサポートされているネットワークファイルシステム (NFS) プロトコルを両方ともサポートしています。
NFS バージョン 2 (V2) (Solaris 1.x 環境)
NFS バージョン 3 (V3) (Solaris 2.5 およびそれ以降の互換環境)
Solaris ホストが上記 NFS プロトコルの 1 つを使ってファイルシステムをエクスポートするとき、Trusted Solaris 7、2.5.1 または 2.5 が動作しているホストの管理者は、対応する NFS プロトコルバージョンを指定することによって、単一ラベルでファイルシステムにアクセスできます。
Trusted Solaris ホストは、適切なNFS プロトコルを指定して、独自のファイルシステムをラベルなしのクライアントホストにエクスポートすることができます。ラベルなしのクライアントは、Trusted Solaris セキュリティ属性を無視します。ラベルなしのクライアントにエクスポートされたファイルまたはディレクトリの機密ラベルが、トラステッドネットワーキングデータベース内にあるそのクライアントホストのエントリの機密ラベルと同等の場合、それらのファイルまたはディレクトリは書き込み可能になります。ラベルなしのクライアントにエクスポートされたファイルまたはディレクトリが読み取り可能になるのは、そのクライアントホストの機密ラベルが、エクスポートされたファイルまたはディレクトリの機密ラベルより優位な場合です。
Trusted Solaris 7、2.5.1、2.5 では、Trusted Solaris 1.1 および 1.2 ホストとデータを共有するために、トラステッド NFS のバージョン 1.x を部分的にサポートしています。これらのプロトコルではクライアントの部分だけはサポートされているので、Trusted Solaris 1.x ホストは、それ以降のバージョンの Trusted Solaris オペレーティング環境を実行しているホストにファイルシステムをエクスポートできます。しかし、一部の拡張機能 (特権など) が Trusted Solaris の動作環境のバージョンによって異なっているので、すべての属性がエクスポートできるわけではありません。特に、エクスポートできる拡張属性は、機密ラベル、アクセス権ビット DAC だけに限られます。ACL については Trusted Solaris 1.x と互換性があるという保証はありません。Trusted Solaris 1.x ホストから実行されたファイルについては、保証されません。特に、特権付きのプログラムは、Trusted Solaris 1.x ホスト からは実行できません。
Trusted Solaris 2.5、2.5.1 または 7上の特権プロセスは、その特権を Trusted Solaris 1.x サーバー上では正しく解釈できない可能性があります。
バージョン 2.4 以前の Solaris または Trusted Solaris 1.x を稼動させている NFS サーバーからファイルシステムをマウントする場合は、vers=2 および proto=udp というマウントオプションを指定する必要があります。
どの NFS プロトコル (NFS V2/V3、TNFS、TSIG/TNFS) を使用するかは、ローカルファイルシステムの種類ではなく、エクスポートを実行するホストのオペレーティングシステムの種類によって決まります。mount コマンドまたはリモートファイルシステムの vfstab に指定するファイルシステムの種類は、常に nfs です。
他のシステムがマウントするためにディレクトリをエクスポート (共有) する方法は、基本 Solaris システムの場合と同様です。ファイルシステムを共有する場合は、2 つの新規のマウントオプションである nodevices と nopriv も使用できます。「他のホストがマウントするためにディレクトリを共有するには」を参照してください。
標準 Solaris システムの手順 (『Solaris のシステム管理 (第 2 巻)』を参照のこと) に従って必要な標準セットアップを実行したにもかかわらず、マウントが失敗した場合は、「マウント時の障害を追跡するには」を参照してください。
セキュリティ管理者役割になります。
必要に応じて、「ログイン後、特定の管理役割になるには」を参照してください。
ファイルマネージャを起動し、特権またはラベルを変更したいファイルを強調表示します。
特権を変更する場合は、「選択 (Selected)」メニューから「特権 (Privileges)」を選択します。
次に、ファイルマネージャの「特権 (Privileges)」ダイアログボックスを示します。
ラベルを変更する場合は、「選択 (Selected)」メニューから「ラベル (Labels)」を選択します。
ファイルマネージャのラベルビルダーダイアログボックスが表示されます。
システム管理者役割になり、ADMIN_LOW
ワークスペース に移動します。
必要に応じて、「ログイン後、特定の管理役割になるには」を参照してください。
ファイルマネージャ、または pfsh(1M) シェルで mkdir(1) コマンドを使用して、マウントポイントとなるディレクトリを作成します。
$ mkdir /newpublic |
「マウント・ポイントの設定 (Set Mount Points
)」アクションを使用して、 vfstab(4) ファイルを開き、編集します。
必要に応じて、「管理アクションを起動するには」を参照してください。
vfstab(4) ファイルにファイルシステムのエントリを作成します。
/dev/dsk/c0t3d0s3 /dev/rdsk/c0t3d0s3 /newpublic ufs 2 yes- |
ファイルを保存し、閉じます。
:wq |
セキュリティ管理者役割になり、ADMIN_LOW
ワークスペースに移動します。
プロファイルシェル pfsh(1M) で、目的の代替セキュリティ属性を指定して newsecfs(1M) コマンドを実行し、ファイルシステムをマウントします。
次の例は、機密ラベル範囲を SECRET から SECRET に設定しています。
$ newsecfs -l "Secret;Secret" /newpublic $ mount /spublic |
システム管理者役割になり、ADMIN_LOW
ワークスペースに移動します。
必要に応じて、「ログイン後、特定の管理役割になるには」を参照してください。
プロファイルシェルで、umount(1M) と入力し、ファイルシステムをマウント解除します。
$ umount /spublic |
「マウント・ポイントの設定 (Set Mount Points)」アクションを使用して、vfstab(4) ファイルを開き、編集します。
必要に応じて、「管理アクションを起動するには」を参照してください。
vfstab(4) ファイルにファイルシステムのエントリが存在することを確認します。
/dev/dsk/c0t3d0s4 /dev/rdsk/c0t3d0s4 /spublic ufs 2 yes - |
セキュリティ管理者役割になり、ADMIN_LOW
ワークスペースに移動します。
プロファイルシェルで、該当する引数を指定して setfsattr(1M) コマンドを実行し、ファイルシステムを再度マウントします。
次の例は、機密ラベル範囲を SECRET から SECRTT に設定しています。
$ setfsattr -l "Secret;Secret" /public $ mount /spublic |
マウントするファイルシステムには、機密度の高い情報を含む名前は使用しないでください。マウントするファイルシステムの名前は、全ユーザーに表示されます。
システム管理者役割になり、ADMIN_LOW
ワークスペースに移動します。
必要に応じて、「ログイン後、特定の管理役割になるには」を参照してください。
プロファイルシェルで、mount コマンドを入力し、-S オプションに続けて、希望のセキュリティ属性を指定します。
$ mount -F tmpfs -S "allowed=all;forced=all" swap /mnt |
上記の例は、tmpfs
タイプのファイルシステムである swap を /mntt 上にマウントします。許容された特権と強制された特権がすべて設定されます。
ファイルシステムが自動マウントされる際に、auto_direct ファイルまたは autofs マップ内にセキュリティ属性が存在しない場合、属性は /etc/security/tsol/vfstab_adjunct file ファイルから取得されます。必要であれば、「マウント時に vfstab_adjunct ファイルにセキュリティ属性を指定するには」を参照してください。また、セキュリティ属性を指定した自動マウントの詳細については、automount(1M) のマニュアルページを参照してください。
セキュリティ管理者役割になり、ADMIN_LOW
ワークスペースに移動します。
必要に応じて、「ログイン後、特定の管理役割になるには」を参照してください。
「管理用エディタ (Admin Editor)」アクションを使って、/etc/auto_direct ファイルを開き、編集します。
必要に応じて、「管理アクションを起動するには」を参照してください。
ファイルシステムとそのセキュリティ属性のためのエントリを作成します。
次に、エントリの例を示します。
/usr/doctools -S allowed=all ardilla:/export/doctools |
変更を保存し、ファイルを閉じます。
:wq |
システム管理者役割になり、ADMIN_LOW
ワークスペースに移動します。
必要に応じて、「ログイン後、特定の管理役割になるには」を参照してください。
「マウント・ポイントの設定 (Set Mount Points)」アクションを使用して、vfstab(4) ファイルを開き、編集します。
必要に応じて、「管理アクションを起動するには」を参照してください。
マウントポイントを指定し (vfstab のマニュアルページを参照)、必要に応じて、ファイルシステムに固有なセキュリティオプションをマウントオプションに追加します。
ファイルシステムタイプについては、mount_* のマニュアルページのファイルシステム固有のオプションを参照してください。
次の例は、ファイルシステムのタイプに ufs を指定し、標準 Solaris オペレーティング環境の nosuid オプションに加え、Trusted Solaris のマウントオプション、nodevices と nopriv を指定します。
/dev/dsk/c0t3d0s4 /dev/rdsk/c0t3d0s4 /spublic ufs 2 yes nodevices,nopriv,nosuid |
ファイルを保存し、閉じます。
:wq |
セキュリティ管理者役割になり、ADMIN_LOW
ワークスペースに移動します。
「マウント属性の設定 (Set Mount Attributes)」アクションを使用して、vfstab_adjunct(4) ファイルを開き、編集します。
ファイルの先頭部分で、テンプレートのエントリをコピー、ペーストし、そのコピーを修正します。
次の例は、次のセキュリティ属性を /spublic に設定します。ファイルシステム内の全ファイルは、SECRET A という機密ラベルを (slabel) 持っているので、これらのファイルへは、その機密ラベルか、またはその機密ラベルより完全に優位な機密ラベルでのみアクセスできます。
# # Yank the following entry and use as a template. # #<mount point>; ¥ #acc_acl=; ¥ . . . #audit_psa=; # # attributes for an unlabeled file system # /spublic;¥ acc_acl=; mode=; attr_flg=; gid=; uid=; ¥ slabel="Secret A"; forced=; allowed=; low_range="Secret A";¥ hi_range="Secret A"; mld_prefix=; mnt_flg=; audit_psa=; # # attributes for an HSFS file system to mount from a # CD-ROM # /cdrom;¥ acc_acl=; mode=; attr_flg=; gid=; uid=; ¥ slabel=; forced=127; allowed=all; low_range=;hi_range=;¥ mld_prefix; mnt_flg=; audit_psa=; # # automatically mounted by /etc/init.d/MOUNTFSYS # /tmp;¥ acc_acl=; mode=; attr_flg=; gid=; uid=; ¥ slabel=; forced=127; allowed=all; low_range=;hi_range=;¥ mld_prefix; mnt_flg=; audit_psa=; |
ファイルを保存し、閉じます。
:wq |
システム管理者役割になり、ADMIN_LOW
ワークスペースに移動します。
必要に応じて、「ログイン後、特定の管理役割になるには」を参照してください。
「ファイルシステムの共有 (Share Filesystems)」アクションを使用して、/etc/dfs/dfstab ファイルを開き、編集します。
必要に応じて、「管理アクションを起動するには」および dfstab(4) のマニュアルページを参照してください。
エクスポートしたいファイルシステムのエントリを作成します。
次の例は、ユーザーのホームディレクトリを、 nodevices、nopriv、nosuid、および rw オプションでエクスポートします。
share -F nfs -o nodevices,nopriv,nosuid,rw -d "My Home Directory" /export/home/roseanne |
ファイルを保存し、閉じます。
:wq |
プロファイルシェル [pfsh(1M)] で、shareall(1M) を実行し、NFS デーモン nfsd(1M) に dfstab(4) を再度読み込むよう指示します。
$ shareall |
NFS デーモンが動作していることを確認します。
必要に応じて、NFS デーモンを起動します。
share(1M) コマンドをオプションなしで入力して、ファイルシステムがエクスポートされていることを確認します。
$ share - /spare/manuals rw "manuals" |
システム管理者役割になり、ADMIN_LOW
ワークスペースに移動します。
必要に応じて、「ログイン後、特定の管理役割になるには」を参照してください。
プロファイルシェルで、mount コマンドを入力し、-S オプションに続けて希望するセキュリティ属性を指定します。
$ mount -F tmpfs -S "allowed=all;forced=all" swap /mnt |
例では、tmpfs タイプのファイルシステムである swap を /mnt 上にマウントします。
任意のユーザーまたは役割になり、cd_rom_N デバイスを割り当てます。
割り当てられた CD-ROM デバイスに装着されている CD にファイルシステムが含まれている場合は、そのファイルシステムをマウントするかどうかが尋ねられます。これに対し yes と答えると、ファイルシステムは自動的にマウントされます。
第 15 章「デバイスの管理」の 「CD-ROM デバイスの処理方法」で説明するように、割り当てられた CD-ROM デバイスにオーディオ CD を装着し、かつ rmmount.conf でオーディオ動作が指定されている場合は、オーディオ動作が実行されます。
セキュリティ管理者役割になり、ADMIN_LOW
ワークスペースに移動します。
必要に応じて、「ログイン後、特定の管理役割になるには」を参照してください。
「管理用エディタ (Admin Editor)」アクションを使用して /etc/rmmount.conf ファイルを開き、編集します。
必要に応じて、「管理用エディタアクションを使用してファイルを編集するには」を参照してください。
自動的に CD プレイヤーを起動するアクションを追加します。
次の例は、セキュリティ管理者役割が /usr/bin にインストールされている CD プレイヤー workman のためのアクションを rmmount.conf で作成する方法を示しています。
action cdrom action_workman.so /usr/bin/workman |
ファイルを保存し、閉じます。
:wq |
スピーカーが CD-ROM デバイスに接続され、電源が入っていることを確認します。
「オーディオ CD-ROM の CD プレイヤーを自動的に起動するには」ための手順を確認します。
ワークスペースの機密ラベルでオーディオデバイスと cd_rom_N デバイスを割り当てます。
オーディオ CD をデバイスに挿入するよう要求されたら、挿入します。
すると、指定の CD プレイヤープログラムが自動的に起動されます。
ファイルシステムを共有するホストの IP アドレスが、マウント操作を行う Trusted Solaris ホスト上の tnrhdb(4) ファイルに設定されていることを確認します。
NIS+ ネームサービスを利用する場合は、ファイルシステムを共有するホストの IP アドレスを NIS+ ドメインの tnrhdb テーブルに設定しておく必要があります。ネームサービスを利用しない場合は、ファイルシステムを共有するホストの IP アドレスがマウント操作を行う Trusted Solaris ホストの /etc/security/tsol/tnrhdb ファイルに存在していなければなりません。
ホスト上で Trusted Solaris オペレーティング環境が動作していない場合は、有効な機密ラベルがテンプレート tnrhtp(4) でホストに割り当てられていること、その機密ラベルがマウントにも使用されていること、そして、ラベル範囲が mount -S コマンド行に続けて指定されているか、あるいは、/etc/security/tsol/vfstab_adjunct ファイル内に指定されていることを確認します。
ローカルホストのリブート以降、トラステッドネットワークデータベースに単一ラベルのリモートホストを新たに追加した場合や、テンプレートが変更された場合は、単一ラベルホストのエントリを tnctl -h hostname (ホストの追加後) または tnctl -t templatename (テンプレートの変更後) で更新したことを確認します。
マウントが、実行プロファイルに指定された mount コマンドを使用して、管理者役割によって実行されたことを確認します。
デフォルトの構成では、セキュリティ管理者役割は、マウントのセキュリティ属性を指定し、システム管理者役割は、Solaris の通常のマウントを担当します。
2.4 以前の Solaris バージョンを実行している NFS サーバー、または Trusted Solaris 1.x を実行している NFS サーバーから、ファイルシステムがマウントされている場合は、mount(1M) に vers=2 および proto=udp の各オプションが指定されていることを確認します。