セキュリティが外部の脅威を防ぐものだとすれば、*保護(Protection)*は内部のユーザーやプログラムによるシステム資源の誤用を防ぐことです。OSには、そのための細やかで高度な保護メカニズムが備わっています。
この記事では、保護の原則、ドメイン構造、アクセス制御の方法、保護ポリシーを順に見ていきます。
OSの保護機能は、次の二つの問いから始まります。
- 誰が?
- 何をできるのか?
この問いに答えるため、OSは各ユーザーが
どの資源に対してどの権限を持つか
を明確に定義し、それに基づいてアクセスを許可または拒否します。
学校の図書館を想像してください。先生はどの本も借りられますが、生徒は一部の本だけ借りられます。教職員は閲覧室全体に入れても、生徒は閲覧室Aだけ利用できるかもしれません。このように「誰が何をできるか」を定めることが保護の要点です。
ドメイン構造 (Domain Structure) 🔗
ドメインとは、ユーザーやプログラムが持つ
権限の集合
です。ユーザーがログインしたりプログラムが実行されたりすると、OSはそのドメイン内でのみ操作を許可します。
- ユーザーAのドメイン:ファイルの読み取りは可能、システム設定の変更は不可
- 管理者のドメイン:すべての資源にアクセス可能
- プログラムのドメイン:一部のメモリだけ利用可能、ネットワークは遮断

制限されたアクセス
예: 사용자 A가 파일 X를 읽고 쓸 수 있음 → 행 A, 열 X = read/write
アクセス制御 (Access Control) 🔗
OSは、誰がどの資源へどのようにアクセスできるかを細かく管理します。そのために、さまざまなアクセス制御方式を使います。
1. アクセス制御行列 (Access Control Matrix) 🔗
- 行:ユーザーまたはドメイン
- 列:資源(ファイル、ディレクトリ、プリンターなど)
- セル:許可された権限(読み取り、書き込み、実行など)
예: 파일 X에 대한 접근 권한 비트맵
파일 X: 1100 (사용자 A: 읽기, 쓰기 가능, 사용자 B: 읽기 불가)
実際には行列が大きくなりすぎるため、次の二つの方法で最適化します。
- 資源ごとに、アクセスできるユーザーの一覧を保存します。
- 例:ファイルX → {A: read/write, B: read only}
3. ケイパビリティリスト (Capability List) 🔗
- ユーザーごとに、アクセスできる資源の一覧を保存します。
- 例:ユーザーA → {ファイルX: read/write, プリンター: execute}
- 資源へのアクセス権限をビットで表します。
- 例:ファイルXへのアクセス権を1ビットで表現(0:アクセス不可、1:アクセス可能)
OSは次の原則に従って保護システムを設計します。
最小権限の原則 (Least Privilege) 🔗
- ユーザーには、
作業に本当に必要な最小限の権限
だけを与えます。
- 例:文章を書くユーザーに設定変更の権限は不要です。
- ユーザーやプログラムが互いに影響しないよう、資源を分離します。
- 例:あるアプリがエラーを起こしても、ほかのアプリには影響しません。
- すべてのアクセス記録を残して分析し、問題発生時に追跡できるようにします。
- 例:「ユーザーBがファイルXにアクセスした」という記録をシステムログに残します。
OSの保護は、単なる権限設定ではありません。資源を安全に分離・制御し、記録するシステム全体の仕組みです。保護の原則、ドメイン構造、アクセス制御方式、ポリシー設計を理解すると、セキュリティの基礎がより確かなものになります。
次の記事では、
仮想マシンとハードウェア仮想化
を取り上げます。