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

提供: セキュリティ
移動: 案内検索
(ページの作成:「最小権限の原則 (Principle of least privilege) とは、情報セキュリティ において、ユーザーやプロセス、プログラムが正当な...」)
 
行30: 行30:
  
 
フロントエンド、ミドルエンド、バックエンド、オペレーションツールなどをコンポーネントごとにわけ、それぞれ、別のネットワーク([[VLAN]]) にし、必要最低限のアクセス(ポートを解放する)を許可することで、それぞれのコンポーネントに侵入された場合の汚染範囲や被害の範囲を最小化したり、切り離しが容易になります。
 
フロントエンド、ミドルエンド、バックエンド、オペレーションツールなどをコンポーネントごとにわけ、それぞれ、別のネットワーク([[VLAN]]) にし、必要最低限のアクセス(ポートを解放する)を許可することで、それぞれのコンポーネントに侵入された場合の汚染範囲や被害の範囲を最小化したり、切り離しが容易になります。
 +
 +
== OS での実装 ==
 +
 +
[[OS]] での権限コントロールは、[[setuid]] や [[パーミッション]] などで行われます。
 +
 +
* [[setuid]] / [[setgid]]
 +
* [[任意アクセス制御]] (DAC)
 +
** [[パーミッション]]
 +
* [[セキュアOS]]
 +
** [[SELinux]]
 +
 +
[[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 ユーザーの持つ権限でしか、[[ファイルシステム]]やリソースにアクセスができません。
  
 
== 関連項目 ==
 
== 関連項目 ==

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

最小権限の原則 (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 ユーザーの持つ権限でしか、ファイルシステムやリソースにアクセスができません。

関連項目