「最小権限の原則」の版間の差分

提供: セキュリティ
移動: 案内検索
行53: 行53:
 
* [[セキュアOS]]
 
* [[セキュアOS]]
 
* [[情報セキュリティ]]
 
* [[情報セキュリティ]]
 +
* [[root]]
 +
* [[sudo]]
 
<!--
 
<!--
 
vim: filetype=mediawiki
 
vim: filetype=mediawiki
 
-->
 
-->

2013年9月14日 (土) 14:32時点における版

最小権限の原則 (Principle of least privilege) とは、情報セキュリティ において、ユーザーやプロセス、プログラムが正当な目的に必要とされる情報やリソースにのみアクセスを許可する制限をする設計原則です。

読み方

最小権限の原則
Principle of least privilege
ぷりんしぷる おぶ りーすと ぷりびれっじ

概要

最小権限の原則 は、障害や悪意のある挙動からデータと機能を保護する場合に、考慮するべき重要な設計観点です。

ユーザーの権限

ユーザーに対して、最小権限の原則 を適用する場合には、 最低限のユーザーアクセス ( least user access, LUA ) や 最小権限のユーザーアカウント (least-privileged user account, LUA ) と呼ばれます。

ユーザーには、必要最低限の権限を与えます。

システム管理者 の権限が不要なユーザーには、root のような権限は必要ありません。 コンピュータリソースを利用するために、不必要なコマンドの実行を許可する必要はありません。

ネットワークセグメントの分離と制限

サーバーは、そのサーバーが果たすべきサービスに不要なサーバーやネットワークへアクセスできる必要はありません。サーバーがサービスを提供したいサーバーやネットワーク以外にアクセスを許可する必要はありません。

インターネットに対して、ウェブサイトを提供するときに、HTTP のアクセスを許可する必要がありますが、sshd に対して、インターネット からのアクセスを許可する必要はありません(オペレーション・メンテナンスのために、アクセスが必要な構成になっているかもしれません)。

システムに侵入された場合、影響範囲は、そのシステムが属するネットワークに波及する恐れがあります。 お互いに関連性のないサーバーは、同じネットワークに属する理由はありません。

フロントエンド(Webサーバ) と バックエンドの データベース があるとき、フロントエンドは、データベース に対するアクセスは必要ですが、データベースsshd にアクセスする必要はありません。

フロントエンド、ミドルエンド、バックエンド、オペレーションツールなどをコンポーネントごとにわけ、それぞれ、別のネットワーク(VLAN) にし、必要最低限のアクセス(ポートを解放する)を許可することで、それぞれのコンポーネントに侵入された場合の汚染範囲や被害の範囲を最小化したり、切り離しが容易になります。

OS での実装

OS での権限コントロールは、setuidパーミッション などで行われます。

WebサーバApache HTTP Server (httpd) では、HTTP のポート 80 を bind しますが、1024 以下のTCP のポートを bind するには、 root の権限を必要とします。 httpd は、起動時に80ポートをbind するためにroot のユーザーの権限を必要ですが、ウェブコンテンツの配信にrootの権限が必要ではありません。また、httpd のプロセスの脆弱性などをつく エクスプロイト によって、乗っ取られる可能性がありますが、root ユーザーで httpd が動作している場合、影響範囲が大きくなってしまいます。 httpd は、デフォルトで、httpd の最初のプロセスrootで動作しますが、実際にクライアントに対応する子プロセスは、は、www (OSによってユーザーが変わるかもしれません) というユーザーで実行されます。

httpd子プロセスは、www のユーザーで実行されるため、www ユーザーの持つ権限でしか、ファイルシステムやリソースにアクセスができません。

関連項目