13 COMMERCIAL IP SECURITY OPTION
3.4. セキュリティポリシーのファイル構成
3.4.1. セキュリティポリシー定義ファイル
3.4.1.7. セキュリティコンテキストのアタッチ
3.4.1.3(2)では type 遷移ルールによるオブジェクトへの type のアタッチを説明した。
type 遷移ルールは抽象的なオブジェクトあるいは常に存在しているとは限らないオブジェ クトに対して動的に type をアタッチするための定義である。これは、あらかじめ type を アタッチしておくことができないオブジェクトに対しても、そのオブジェクトが作成され た際に適切な type をアタッチする必要があるためである。これに対して、ファイルシステ ム上に恒久的に存在しているファイルといったオブジェクトにはあらかじめ静的に type を アタッチしておかなければならない。
本節では、オブジェクトに対するセキュリティコンテキストのアタッチについて説明す る。
(1) 初期 SID コンテキストの定義
SELinux には「セキュリティサーバー」と呼ばれるカーネル内コンポーネントが実 装されている。このコンポーネントはあらかじめ定義されたセキュリティポリシーを システム起動時にメモリに読み込んで管理する役割を担っている。このセキュリティ サーバーがセキュリティポリシー定義からセキュリティコンテキストを読み込む際に は、随時「セキュリティ ID(SID)」と呼ばれる ID を算出しており、カーネル内での セキュリティコンテキストの管理はこの SID により行われている。しかし、システム 起動時で、セキュリティサーバーがまだ起動していない段階で必要となるセキュリ ティコンテキストが幾つか存在する。当然これらの SID はセキュリティサーバーに算 出させることができない。そこで、これらのセキュリティコンテキストに割り当てる SID はあらかじめ予約されており、この特別な SID は「初期 SID」と呼ばれている。ファ イル initial̲sid̲contexts では、初期 SID のセキュリティコンテキストが定義されて いる。書式をリスト 3‑51 に示す。
リスト 3‑51 初期 SID のセキュリティコンテキストを定義する書式
'sid' identifier security̲context
security̲context ::= user ':' role ':' type user ::= identifier
role ::= identifier type ::= identifier
この書式の意味は以下のとおりである。
「identifier」で示される初期 SID に、「security̲context」で示されるセキュリ ティコンテキストを対応付ける。
上記書式の「identifier」に指定できるのは、SELinux にて定義済みの初期 SID 識 別子25のみである。
通常、初期 SID に対応付けられたセキュリティコンテキストを編集する必要性はな
25 SELinux を標準構成でインストールしている場合、定義済みの初期 SID 識別子はファイル
Ⅱ‑54 Copyright © 2003 IPA, All Rights Reserved.
い。
関連ファイル
initial̲sid̲contexts 初期 SID に対応付けるセキュリティコンテキストを定義する ファイル
(2) ファイルシステム
SELinux はファイルシステム自身とファイルシステム上の inode に対するセキュリ ティコンテキストのアタッチを、ファイルシステムごとに異なる手順で実施すること が可能である。ここでは、特定のファイルシステムに対してセキュリティコンテキス トのアタッチ手順を定義する方法を説明する。なお、下記のいずれの方法でも定義さ れていないファイルシステムがマウントされた場合には、初期 SID として定義されて いるセキュリティコンテキスト「unlabeled」がアタッチされる(初期 SID に関しては 3.4.1.7(1)を参照してほしい)。
(A) 恒久的なマップ情報によるアタッチ
ファイルシステム上の inode において、その inode 番号が常に保持されることが 保証されるファイルシステムの場合、ファイルシステム自身とファイルシステム上 のファイルにアタッチするセキュリティコンテキストは inode 番号とセキュリティ コンテキストのペアによる恒久的なマップ情報をファイルシステム上に保存してお くことができる。恒久的なマップ情報によるアタッチ手順はリスト 3‑52 に示す書 式にて定義することが可能である。
リスト 3‑52 恒久的なマッピング情報によるアタッチ手順の定義書式
'fs̲use' fstype ';'
fstype ::= ファイルシステムタイプ名
この書式の意味は以下のとおりである。
「fstype」で示されるファイルシステムでは、恒久的なマップ情報によるセキュ リティコンテキストのアタッチ手順を採用する。
関連ファイル
fs̲use ファイルシステムに対するセキュリティコンテキストのア タッチ手順を定義するファイル
(B) 作成元プロセスによるアタッチ
仮想ファイルシステムの場合、セキュリティコンテキストのアタッチ手順として 恒久的なマップ情報を利用できない。この場合、ファイルシステムの作成元である プロセスにアタッチされたセキュリティコンテキストを引き継いでファイルシステ ム内の inode にアタッチする手順を定義することが可能である。書式をリスト 3‑53 に示す。
リスト 3‑53 作成元プロセスによるアタッチ手順の定義書式
'fs̲use̲task' fstype security̲context ';'
fstype ::= ファイルシステムタイプ名
security̲context ::= user ':' role ':' type user ::= identifier
role ::= identifier type ::= identifier
この書式の意味は以下のとおりである。
「fstype」で示されるファイルシステムでは、ファイルシステム自身に対しては
「security̲context」で示されるセキュリティコンテキストをアタッチし、ファ イルシステム内の inode に対してはファイルシステム作成元であるプロセスのセ キュリティコンテキストをアタッチする。
これは、パイプファイルシステムやソケットファイルシステムに適した定義であ
Ⅱ‑56 Copyright © 2003 IPA, All Rights Reserved.
る。
関連ファイル
fs̲use ファイルシステムに対するセキュリティコンテキストのア タッチ手順を定義するファイル
(C) type 遷移ルールによるアタッチ
仮想ファイルシステムの場合には、ファイルシステムの作成元であるプロセスと そのファイルシステムにアタッチされた双方のセキュリティコンテキストを基準に して、inode にアタッチするセキュリティコンテキストを決定するアタッチ手順を 定義することも可能である。書式をリスト 3‑54 に示す。
リスト 3‑54 type 遷移ルールによるアタッチ手順の定義書式
'fs̲use̲trans' fstype security̲context ';'
fstype ::= ファイルシステムタイプ名
security̲context ::= user ':' role ':' type user ::= identifier
role ::= identifier type ::= identifier
この書式の意味は以下のとおりである。
「fstype」で示されるファイルシステムでは、ファイルシステム自身に対しては
「security̲context」で示されるセキュリティコンテキストをアタッチし、ファ イルシステム内の inode に対しては、ファイルシステム作成元であるプロセスと ファイルシステムのセキュリティコンテキストを基準に定義されている type 遷 移ルールに基づいて遷移先の type をアタッチする。
これは、devpts ファイルシステムや仮想記憶ファイルシステムに適した定義であ る。
関連ファイル
fs̲use ファイルシステムに対するセキュリティコンテキストのア タッチ手順を定義するファイル
(D) 変則的なアタッチ
恒久的なマップ情報が利用できず、上記で説明した特定の規則に従った手順も利 用できないファイルシステムの場合には、リスト 3‑55 に示す書式を利用してセ キュリティコンテキストを定義する。
リスト 3‑55 変則的なアタッチ手順の定義書式
'genfscon' fstype pathprefix security̲context │
'genfscon' fstype pathprefix '‑' file̲type security̲context
fstype ::= ファイルシステムタイプ名
pathprefix ::= ディレクトリパス │ ファイルパス security̲context ::= user ':' role ':' type user ::= identifier
role ::= identifier type ::= identifier
file̲type ::= 'b' │ 'c' │ 'd' │ 'p' │ 'l' │ 's' │ '‑' 'b':ブロック型スペシャルファイル
'c':キャラクタ型スペシャルファイル 'd':ディレクトリ
'p':名前付きパイプ 'l':シンボリックリンク 's':ソケット
'‑':通常のファイル
この書式の意味は以下のとおりである。
「fstype」で示されるファイルシステムでは、同ファイルシステム上において
「pathprefix」と「file̲type」で示されるファイルあるいはディレクトリに対 して「security̲context」で示されるセキュリティコンテキストをアタッチする。
上記書式における「pathprefix」はファイルシステムの root ディレクトリを起 点としたパスを指定しなければならない点に注意が必要である。また、この
Ⅱ‑58 Copyright © 2003 IPA, All Rights Reserved.
「pathprefix」で明示的に定義されないファイルとディレクトリは、同ファイルあ るいはディレクトリのパスと最も長く一致したパスに対する定義が適用される。
Note:「ネットワークファイルシステム」
LSM ベースとなる前の SELinux では、ネットワークファイルシステムに対してセキュリティコンテキスト をアタッチするための固有の機構が存在していたが、現状の LSM ベースの SELinux ではサポートされてい ない。現状の SELinux でネットワークファイルシステムに対するセキュリティコンテキストをアタッチす るためには、"genfscon"ステートメントにより定義する必要がある。
関連ファイル
genfs̲contexts ファイルシステムに対してアタッチするセキュリティコン テキストを定義するファイル
(3) 一般のファイル
3.4.1.7(2)(A)で説明した手順によりセキュリティコンテキストをアタッチできる ファイルシステムでは、あらかじめセキュリティコンテキストのマップ情報を作成し ておかなければならない。書式をリスト 3‑56 に示す。
リスト 3‑56 一般のファイルに対するセキュリティコンテキスト割り当て書式
pathname̲regexp opt̲security̲context │
pathname̲regexp '‑' file̲type opt̲security̲context
pathname̲regexp:ディレクトリあるいはファイルパス(正規表現可能)
file̲type ::= 'b' │ 'c' │ 'd' │ 'p' │ 'l' │ 's' │ '‑' 'b':ブロック型スペシャルファイル
'c':キャラクタ型スペシャルファイル 'd':ディレクトリ
'p':名前付きパイプ 'l':シンボリックリンク 's':ソケット
'‑':通常のファイル
opt̲security̲context ::= '<<none>>' │ user ':' role ':' type user ::= identifier
role ::= identifier type ::= identifier
この書式の意味は以下のとおりである。