最小権限の原則
最小権限の原則は、ユーザーアカウントに対して、そのユーザーにとって必要な権限だけを与えることを意味する。例えば、バックアップ用ユーザーアカウントでは、ソフトウェアをインストールする必要はなく、バックアップ関連のアプリケーションだけを実行できればよいので、新規ソフトウェアをインストールする権限などは付与されない。この原則は、普通のユーザーアカウントで作業しているパーソナルコンピュータのユーザーにも当てはまる。つまり、事態が完全に特権を要求する場合に限って管理者権限を与えられ、パスワードで保護されたアカウント(すなわちスーパーユーザー)にログインする。
ユーザーに対してこの原則を適用する場合は、「最低限のユーザーアクセス (least user access)」や「最小権限のユーザーアカウント (least-privileged user account)」と呼ばれ、LUAと略記される。その場合、全てのユーザーアカウントは、常に必要最小限の権限で実行されるべきであり、その際にはアプリケーションソフトウェアも必要最小限の権限で起動されるべきとされる。権限を与えないと正しく動作できないアプリケーションは、バグを孕んでいる可能性がある。
最小権限の原則は、障害(フォールトトレラント設計の場合)や悪意ある挙動(コンピュータセキュリティの場合)からデータと機能を保護するうえで、重要な設計観点として、広く認識されている。
この原則には、次のような利点がある。
カーネルは、オペレーティングシステム (OS) の中核であり、ハードウェアにアクセスするので、常に最大権限で動作する。特にマルチユーザーOSは、ハードウェアがプロセスから使用可能かどうかを管理し、動作中のプロセス群からのアクセス要求を管理する責任を負っている。したがって、カーネルがクラッシュすると、カーネルが状態を維持していた機構が使えなくなる。さらに、CPUにリセットすることなく復旧する手段が備わっていたとしても、実行中だったコードの実行を再開できるとは限らない。セキュリティは施行され続けるとしても、障害を検出できなければOSが障害に適切に対応することもできない。それは例えば、カーネルが実行を停止した場合や、アイドルループなどで実行再開した場合である。
トロイの木馬をロードし実行したことでシステムがクラッシュし、その後実行再開した場合、トロイの木馬が全プロセスの制御を強奪することができる。最小権限の原則は、常に権限を最小にして実行されることをコードに強制する。