SELinuxをどう設定・運用していくのかの前提知識として、SELinuxの機能と仕組みの理解が欠かせません。SELinuxの主な機能は表1の通りです。

表1●SELinuxの主な機能
表1●SELinuxの主な機能
[画像のクリックで拡大表示]

 TEがプロセスごとに最小限の権限を割り当て、MCSは仮想化環境の分離に使われます。RBACは、ログインユーザーの権限を分ける機能で、例えばDB管理専門のユーザーを作れます。MLSは、軍事向けで、リソースにレベルを付け、その上下関係でアクセスを制御します。監査ログは、SELinuxの設定時や攻撃された場合の分析などに用いられます。Userland AVCは、アプリケーション独自のパーミッション(例:携帯電話の電話帳アクセス権限など)を、SELinuxでチェックできるようにする機能です。

 今回は、LinuxサーバーでSELinuxを使っていく上で重要な機能となる「TE」と「MCS」を図解します。

最小限の権限を割り当てるTE

 プロセスごとに最小限の権限を割り当てるための機能が「TE(Type Enforcement)」です。SELinuxを設定・運用するすべての人が知っておく必要があります。TE自体は1980年代に誕生し、長い歴史の中で成熟したものです。図1の例を用いてTEの仕組みを説明します。

図1●SELinuxの基本機能「TE(Type Enforcement)」
図1●SELinuxの基本機能「TE(Type Enforcement)」
[画像のクリックで拡大表示]

(0)すべての設定が「セキュリティポリシー」に記載されています。システムのブート時にカーネルに読み込まれています。セキュリティポリシーには、「誰が、何に、どんなアクセスを許可するか」の設定が列挙されています。「誰が」を識別するために「ドメイン」というラベルがすべてのプロセスに付与され、「何に」を識別するために「タイプ」と呼ばれるラベルがファイルなどのリソースに付与されます。