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

提供: セキュリティ
移動: 案内検索
行9: 行9:
  
 
[[最小権限の原則]] は、障害や悪意のある挙動からデータと機能を保護する場合に、考慮するべき重要な設計観点です。
 
[[最小権限の原則]] は、障害や悪意のある挙動からデータと機能を保護する場合に、考慮するべき重要な設計観点です。
 +
[[最小権限の原則]] は、セキュリティが突破された場合の被害を局限化するための発想です。
 +
 +
[[セキュアOS]] の [[SELinux]] などは、[[最小権限の原則]] をアーキテクチャレベルで実装したものです。
 +
 +
最小権限の原則の有効性を損なう要因を2つ挙げます。
 +
# [[最小権限の原則]] は、漠然としており、「最小」は、「主観的なもの」です。企業環境においては、利害関係やニーズで変わってきます。
 +
# ニーズは変化していき、場合によっては、この原則は、破綻します。
  
 
== ユーザーの権限 ==
 
== ユーザーの権限 ==
行46: 行53:
  
 
[[httpd]] の[[子プロセス]]は、www のユーザーで実行されるため、www ユーザーの持つ権限でしか、[[ファイルシステム]]やリソースにアクセスができません。
 
[[httpd]] の[[子プロセス]]は、www のユーザーで実行されるため、www ユーザーの持つ権限でしか、[[ファイルシステム]]やリソースにアクセスができません。
 +
 +
== 歴史 ==
 +
 +
[[最小権限の原則]] は、 1975 年に The Protection of Information in Computer Systems (コンピュータシステムにおける情報保護)の論文で Jerome Saltzer, Michael Schroeder が提唱した概念です。
  
 
== 関連項目 ==
 
== 関連項目 ==

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

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

読み方

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

概要

最小権限の原則 は、障害や悪意のある挙動からデータと機能を保護する場合に、考慮するべき重要な設計観点です。 最小権限の原則 は、セキュリティが突破された場合の被害を局限化するための発想です。

セキュアOSSELinux などは、最小権限の原則 をアーキテクチャレベルで実装したものです。

最小権限の原則の有効性を損なう要因を2つ挙げます。

  1. 最小権限の原則 は、漠然としており、「最小」は、「主観的なもの」です。企業環境においては、利害関係やニーズで変わってきます。
  2. ニーズは変化していき、場合によっては、この原則は、破綻します。

ユーザーの権限

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

歴史

最小権限の原則 は、 1975 年に The Protection of Information in Computer Systems (コンピュータシステムにおける情報保護)の論文で Jerome Saltzer, Michael Schroeder が提唱した概念です。

関連項目