上級

Security Context(セキュリティコンテキスト)

セキュリティコンテキストとは、SELinuxなどのセキュリティ機構がアクセス制御の判断に用いる、プロセスやファイルに付与された一連のセキュリティ属性情報のことだ。ユーザー、ロール、タイプなどの要素で構成される。

#セキュリティ#プラットフォーム#アーキテクチャ#原則
公開: 2025年9月13日更新: 2025年9月13日

SELinuxのようなMACシステムが機能するための、最も基本的な情報単位だ。

セキュリティコンテキストとは何か

セキュリティコンテキストとは、プロセスやファイルといった、カーネルが管理するあらゆるリソースに付与されるセキュリティ属性の集合体だ。 要するに、OS内のすべてのものに貼り付けられた「セキュリティ用の名札」だ。 この名札には、SELinuxのような強制アクセス制御 (MAC) の仕組みが、アクセスを許可するか否かを判断するために必要な情報がすべて書き込まれている。

SELinuxにおける構造

セキュリティコンテキストと言えば、通常はSELinuxにおけるそれを指す。その形式は ユーザー:ロール:タイプ:レベル というコロンで区切られた4つの要素で構成される。

user:role:type:level

  • ユーザー (user): Linuxのユーザー名とは別の、SELinuxポリシー内のユーザーID。どのロールに就けるかを定義する。
  • ロール (role): ユーザーとタイプの間の仲介役。特定のロールに就くことで、特定のドメイン(プロセスのタイプ)への遷移が許可される。
  • タイプ (type): これが最も重要だ。Type Enforcement (TE) の主体となる部分。プロセスであれば「ドメイン」、ファイルなどのオブジェクトであれば「タイプ」と呼ばれる。アクセス制御ポリシーのルールは、すべてこのタイプ(ドメイン)を基準に記述される。
  • レベル (level): 多段階セキュリティ (MLS) で使われる。機密レベルなどを定義するが、一般的な用途では s0 で固定されていることが多い。

具体例

この「名札」は、ls -Zps auxZ コマンドで実際に確認できる。

  • ファイルのコンテキスト: # ls -Z /etc/shadow system_u:object_r:shadow_t:s0 /etc/shadow このパスワードファイルは shadow_t というタイプを持つことがわかる。
  • プロセスのコンテキスト: # ps auxZ | grep httpd system_u:system_r:httpd_t:s0 ... /usr/sbin/httpd Webサーバーのプロセスは httpd_t というドメインで動作していることがわかる。

SELinuxのカーネルモジュールは、httpd_t ドメインのプロセスが shadow_t タイプのファイルにアクセスしようとした際、この2つのコンテキストを見て、ポリシーに allow httpd_t shadow_t ... というルールが存在するかを確認する。存在しなければ、アクセスは拒否される。 セキュリティコンテキストは、このMACの判定ロジックを支える、不可欠な基盤情報だ。