1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja"><head><!--
4 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
5 This file is generated from xml source: DO NOT EDIT
6 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
8 <title>認証、承認、アクセス制御 - Apache HTTP サーバ</title>
9 <link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
10 <link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
11 <link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />
12 <link href="../images/favicon.ico" rel="shortcut icon" /></head>
13 <body id="manual-page"><div id="page-header">
14 <p class="menu"><a href="../mod/">モジュール</a> | <a href="../mod/directives.html">ディレクティブ</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">用語</a> | <a href="../sitemap.html">サイトマップ</a></p>
15 <p class="apache">Apache HTTP サーバ バージョン 2.0</p>
16 <img alt="" src="../images/feather.gif" /></div>
17 <div class="up"><a href="./"><img title="<-" alt="<-" src="../images/left.gif" /></a></div>
19 <a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">HTTP サーバ</a> > <a href="http://httpd.apache.org/docs/">ドキュメンテーション</a> > <a href="../">バージョン 2.0</a> > <a href="./">How-To / チュートリアル</a></div><div id="page-content"><div id="preamble"><h1>認証、承認、アクセス制御</h1>
21 <p><span>Available Languages: </span><a href="../en/howto/auth.html" hreflang="en" rel="alternate" title="English"> en </a> |
22 <a href="../es/howto/auth.html" hreflang="es" rel="alternate" title="Español"> es </a> |
23 <a href="../ja/howto/auth.html" title="Japanese"> ja </a> |
24 <a href="../ko/howto/auth.html" hreflang="ko" rel="alternate" title="Korean"> ko </a></p>
26 <div class="outofdate">This translation may be out of date. Check the
27 English version for recent changes.</div>
29 <p>「認証」とは、誰かが自分は誰であるかを主張した場合に、
30 それを確認するための全過程を指します。「承認」とは、
31 誰かが行きたい場所に行けるように、あるいは欲しい情報を
32 得ることができるようにするための全過程を指します。</p>
34 <div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#related">関連するモジュールとディレクティブ</a></li>
35 <li><img alt="" src="../images/down.gif" /> <a href="#introduction">はじめに</a></li>
36 <li><img alt="" src="../images/down.gif" /> <a href="#theprerequisites">準備</a></li>
37 <li><img alt="" src="../images/down.gif" /> <a href="#gettingitworking">動作させる</a></li>
38 <li><img alt="" src="../images/down.gif" /> <a href="#lettingmorethanonepersonin">
39 複数の人が入れるようにする</a></li>
40 <li><img alt="" src="../images/down.gif" /> <a href="#possibleproblems">起こりえる問題</a></li>
41 <li><img alt="" src="../images/down.gif" /> <a href="#whatotherneatstuffcanido">もっと巧みに制御できない
43 <li><img alt="" src="../images/down.gif" /> <a href="#moreinformation">追加情報</a></li>
45 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
47 <h2><a name="related" id="related">関連するモジュールとディレクティブ</a></h2>
48 <table class="related"><tr><th>関連モジュール</th><th>関連ディレクティブ</th></tr><tr><td><ul><li><code class="module"><a href="../mod/mod_auth.html">mod_auth</a></code></li><li><code class="module"><a href="../mod/mod_access.html">mod_access</a></code></li></ul></td><td><ul><li><code class="directive"><a href="../mod/mod_access.html#allow">Allow</a></code></li><li><code class="directive"><a href="../mod/mod_auth.html#authgroupfile">AuthGroupFile</a></code></li><li><code class="directive"><a href="../mod/core.html#authname">AuthName</a></code></li><li><code class="directive"><a href="../mod/core.html#authtype">AuthType</a></code></li><li><code class="directive"><a href="../mod/mod_auth.html#authuserfile">AuthUserFile</a></code></li><li><code class="directive"><a href="../mod/mod_access.html#deny">Deny</a></code></li><li><code class="directive"><a href="../mod/core.html#options">Options</a></code></li><li><code class="directive"><a href="../mod/core.html#require">Require</a></code></li></ul></td></tr></table>
49 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
51 <h2><a name="introduction" id="introduction">はじめに</a></h2>
52 <p>もし機密の情報や、ごくごく少数グループの人向けの情報を
53 ウェブサイトに置くのであれば、この文書に書かれている
54 テクニックを使うことで、そのページを見ている人たちが
55 望みの人たちであることを確実にできるでしょう。</p>
57 <p>この文書では、多くの人が採用するであろう、
60 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
62 <h2><a name="theprerequisites" id="theprerequisites">準備</a></h2>
63 <p>この文書で取り扱われるディレクティブは、
65 <code class="directive"><a href="../mod/core.html#directory"><Directory></a></code>
66 セクション中) か、あるいはディレクトリ毎の設定ファイル
67 (<code>.htaccess</code> ファイル) かで用います。</p>
69 <p><code>.htaccess</code> ファイルを用いるのであれば、
70 これらのファイルに認証用のディレクティブを置けるように
71 サーバの設定をしないといけないでしょう。これは
72 <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code>
74 <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code>
75 ディレクティブでは、ディレクトリ毎の設定ファイル中に置くことのできる
76 ディレクティブを、もしあれば、指定します。</p>
78 <p>認証について話を進めているので、次のような
79 <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code>
80 ディレクティブが必要になるでしょう。</p>
82 <div class="example"><p><code>
83 AllowOverride AuthConfig
86 <p>そうでなく、メインサーバ設定ファイルの中に
87 直接置くのであれば、当然ながらそのファイルへの書き込み
88 権限を持っていなければならないでしょう。</p>
90 <p>また、どのファイルがどこに保存されているか知るために、
91 サーバのディレクトリ構造について少し知っておく
94 ディレクトリ構造について知っておく必要がある場面では、
96 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
98 <h2><a name="gettingitworking" id="gettingitworking">動作させる</a></h2>
99 <p>では、サーバ上のあるディレクトリをパスワードで保護する
102 <p>パスワードファイルを作る必要があります。
103 このファイルは、ウェブからアクセスできる場所に
104 置くべきではありません。他の人がパスワードファイルを
105 ダウンロードできないようにするためです。例えば、
106 <code>/usr/local/apache/htdocs</code> でドキュメントを
107 提供しているのであれば、パスワードファイルは
108 <code>/usr/local/apache/passwd</code>
111 <p>ファイルを作るためには、Apache 付属の <a href="../programs/htpasswd.html">htpasswd</a>
112 を使います。このコマンドは Apache をどこにインストールしようとも、
113 インストールディレクトリの <code>bin</code>
114 ディレクトリ以下に置かれます。ファイルを作るには、次のように
117 <div class="example"><p><code>
118 htpasswd -c /usr/local/apache/passwd/passwords rbowen
121 <p><code>htpasswd</code> は、パスワードを要求し、その後
122 確認のためにもう一度入力するように要求してきます。</p>
124 <div class="example"><p><code>
125 # htpasswd -c /usr/local/apache/passwd/passwords rbowen<br />
126 New password: mypassword<br />
127 Re-type new password: mypassword<br />
128 Adding password for user rbowen
131 <p>もし <code>htpasswd</code> がパスの中に入っていない場合は、
132 もちろん、実行するためにプログラムまでのフルパスを
133 タイプする必要があります。私のサーバであれば、
134 <code>/usr/local/apache/bin/htpasswd</code>
137 <p>次に、サーバがパスワードを要求するように設定して、
138 どのユーザがアクセスを許されているかをサーバに知らせなければ
139 なりません。 <code>httpd.conf</code> を編集するか
140 <code>.htaccess</code> ファイルを使用するかで
142 <code>/usr/local/apache/htdocs/secret</code>
144 <code>/usr/local/apache/htdocs/secret/.htaccess</code>
145 か httpd.conf 中の <Directory
146 /usr/local/apache/apache/htdocs/secret> セクションに
147 配置して、次のディレクティブを使うことができます。</p>
149 <div class="example"><p><code>
151 AuthName "Restricted Files"<br />
152 AuthUserFile /usr/local/apache/passwd/passwords<br />
156 <p>個々のディレクティブについて見てみましょう。
157 <code class="directive"><a href="../mod/core.html#authtype">AuthType</a></code>
158 ディレクティブはどういう認証方法でユーザの認証を行うかを
159 選択します。最も一般的な方法は <code>Basic</code>
160 で、これは <code class="module"><a href="../mod/mod_auth.html">mod_auth</a></code>
162 これは気を付けるべき重要なポイントなのですが、
163 Basic 認証はクライアントからブラウザへ、
164 パスワードを暗号化せずに送ります。ですから、
165 この方法は特に機密性の高いデータに対しては用いるべきでは
166 ありません。 Apache ではもう一つ別の認証方法:
167 <code>AuthType Digest</code> をサポートしています。
168 この方法は <code class="module"><a href="../mod/mod_auth_digest.html">mod_auth_digest</a></code>
170 ごくごく最近のクライアントしか Digest
171 認証をサポートしていないようです。</p>
173 <p><code class="directive"><a href="../mod/core.html#authname">AuthName</a></code>
174 ディレクティブでは、認証に使う <dfn>Realm</dfn> (訳注: 領域)
175 を設定します。Realm は大きく分けて二つの機能を提供します。
176 一つ目は、クライアントがパスワードダイアログボックスの
177 一部としてユーザにこの情報をよく提示する、というものです。
178 二つ目には、クライアントが与えられた認証領域に対してどのパスワードを
179 送信すれば良いのかを決定するために使われる、という機能です。</p>
181 <p>例えば、<code>"Restricted Files"</code> 領域中で
182 一度認証されれば、同一サーバ上で <code>"Restricted Files"</code>
183 Realm としてマークされたどんな領域でも、クライアントは
184 自動的に同じパスワードを使おうと試みます。
185 このおかげで、複数の制限領域に同じ realm を共有させて、
186 ユーザがパスワードを何度も要求される事態を
187 防ぐことができます。もちろん、セキュリティ上の理由から、
189 クライアントは再びパスワードを尋ねる必要があります。</p>
191 <p><code class="directive"><a href="../mod/mod_auth.html#authuserfile">AuthUserFile</a></code>
192 ディレクティブは <code>htpasswd</code> で作った
194 ユーザ数が多い場合は、リクエスト毎のユーザの認証のための
195 プレーンテキストの探索が非常に遅くなることがあります。
196 Apache ではユーザ情報を高速なデータベースファイルに
198 <code class="module"><a href="../mod/mod_auth_dbm.html">mod_auth_dbm</a></code> モジュールが
199 <code class="directive"><a href="../mod/mod_auth_dbm.html#authdbmuserfile">AuthDBMUserFile</a></code>
200 ディレクティブを提供します。これらのファイルは <a href="../programs/dbmmanage.html">dbmmanage</a>
201 プログラムで作成したり操作したりできます。
202 <a href="http://modules.apache.org/">Apache
203 モジュールデータベース</a>中にあるサードパーティー製の
204 モジュールで、その他多くのタイプの認証オプションが
207 <p>最後に、<code class="directive"><a href="../mod/core.html#require">Require</a></code>
208 ディレクティブが、サーバのこの領域にアクセスできるユーザを
209 指定することによって、プロセスの承認部分を提供します。
210 次のセクションでは、<code class="directive"><a href="../mod/core.html#require">Require</a></code>
211 ディレクティブの様々な用法について述べます。</p>
212 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
213 <div class="section">
214 <h2><a name="lettingmorethanonepersonin" id="lettingmorethanonepersonin">
215 複数の人が入れるようにする</a></h2>
216 <p>上記のディレクティブは、ただ一人 (具体的にはユーザ名
217 <code>rbowen</code> の誰か) がディレクトリに
218 入れるようにします。多くの場合は、複数の人が
220 <code class="directive"><a href="../mod/mod_auth.html#authgroupfile">AuthGroupFile</a></code>
223 <p>もし複数の人が入れるようにしたいのであれば、
224 グループに属するユーザの一覧の入っている、グループ名のついた
225 グループファイルを作る必要があります。このファイルの
226 書式はきわめて単純で、お好みのエディタで生成できます。
227 ファイルの中身は次のようなものです。</p>
229 <div class="example"><p><code>
230 GroupName: rbowen dpitts sungo rshersey
233 <p>一行にスペース区切りで、グループに所属するメンバーの
236 <p>既に存在するパスワードファイルにユーザを加える場合は、
239 <div class="example"><p><code>
240 htpasswd /usr/local/apache/passwd/passwords dpitts
243 <p>以前と同じ応答が返されますが、新しいファイルを
244 作るのではなく、既にあるファイルに追加されています。
245 (新しいパスワードファイルを作るには <code>-c</code>
248 <p>ここで次のようにして <code>.htaccess</code> ファイルを
251 <div class="example"><p><code>
253 AuthName "By Invitation Only"<br />
254 AuthUserFile /usr/local/apache/passwd/passwords<br />
255 AuthGroupFile /usr/local/apache/passwd/groups<br />
256 Require group GroupName
259 <p>これで、グループ <code>GroupName</code> にリストされていて、
260 <code>password</code> ファイルにエントリがある人は、
261 正しいパスワードをタイプすれば入ることができるでしょう。</p>
263 <p>もっと特定せずに複数のユーザが入れるようにする、
264 もう一つの方法があります。グループファイルを作るのではなく、
265 次のディレクティブを使えばできます。</p>
267 <div class="example"><p><code>
271 <p><code>require user rbowen</code> 行でなく、上記を使うと、
272 パスワードファイルにリストされている人であれば誰でも
274 単にパスワードファイルをグループ毎に分けておくことで、
275 グループのような振る舞いをさせることもできます。
276 このアプローチの利点は、Apache は二つではなく、
277 ただ一つのファイルだけを検査すればよいという点です。
278 欠点は、たくさんのパスワードファイルを管理して、その中から
279 <code class="directive"><a href="../mod/mod_auth_file.html#authuserfile">AuthUserFile</a></code>
280 ディレクティブに正しいファイルを参照させなければならない点です。</p>
281 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
282 <div class="section">
283 <h2><a name="possibleproblems" id="possibleproblems">起こりえる問題</a></h2>
284 <p>Basic 認証が指定されている場合は、
286 ユーザ名とパスワードを検査しなければなりません。
287 これは同じページ、ページにある全ての画像を
289 (もし画像も保護されたディレクトリから来るのであれば) 。
290 予想される通り、これは動作を多少遅くします。
291 遅くなる程度はパスワードファイルの大きさと比例しますが、
292 これは、ファイルを開いてあなたの名前を発見するまで
293 ユーザ名のリストを読まなければならないからです。
294 そして、ページがロードされる度にこれを行わなければ
297 <p>結論としては、一つのパスワードファイルに置くことのできる
299 この限界はサーバマシンの性能に依存して変わりますが、
300 数百のエントリを越えたあたりから速度低下が見られると予期されています。
301 その時は他の認証方法を考慮に入れた方が良いでしょう。</p>
302 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
303 <div class="section">
304 <h2><a name="whatotherneatstuffcanido" id="whatotherneatstuffcanido">もっと巧みに制御できない
306 <p>ユーザ名とパスワードによる認証は認証の一つの方法に過ぎません。
307 しばしば誰であるかということとは違う何かに基づいて、
308 入れるようにしたくなることもあるでしょう。
309 例えばその人がどこから来ているかといったことです。</p>
311 <p><code class="directive"><a href="../mod/mod_access.html#allow">Allow</a></code> と
312 <code class="directive"><a href="../mod/mod_access.html#deny">Deny</a></code>
313 ディレクティブを使って、ドキュメントを要求してきたマシンの
314 ホスト名やホストアドレスに基づいて許可不許可を制御できます。
315 <code class="directive"><a href="../mod/mod_access.html#order">Order</a></code>
316 ディレクティブはこの二つと連携して動作し、Apache
317 にどの順番でフィルタを適用するかを知らせます。</p>
319 <p>これらのディレクティブの使い方は次のようになります。</p>
321 <div class="example"><p><code>
322 Allow from <var>address</var>
325 <p>ここで、<var>address</var> は IP アドレス
326 (または IP アドレスの一部)、あるいは完全修飾ドメイン名
328 必要であれば複数のアドレスやドメイン名を指定できます。</p>
330 <p>例えば、もし誰かが掲示板を攻撃していて、
334 <div class="example"><p><code>
335 Deny from 205.252.46.165
338 <p>このアドレスから来る人は、このディレクティブの範囲内の
339 コンテンツを見ることができません。もし IP
340 アドレスの代わりにマシン名があれば、それを使えます。</p>
342 <div class="example"><p><code>
343 Deny from <var>host.example.com</var>
346 <p>ドメイン全体からのアクセスを防ぎたければ、
347 単にアドレスやドメイン名の一部を指定することができます。</p>
349 <div class="example"><p><code>
350 Deny from <var>192.101.205</var><br />
351 Deny from <var>cyberthugs.com</var> <var>moreidiots.com</var><br />
355 <p><code class="directive"><a href="../mod/mod_access.html#order">Order</a></code> を使うことで、
356 <code class="directive"><a href="../mod/mod_access.html#deny">Deny</a></code> と
357 <code class="directive"><a href="../mod/mod_access.html#allow">Allow</a></code> の組み合わせで
358 入っても良いグループが本当に確実に限定できているようにできます。</p>
360 <div class="example"><p><code>
361 Order deny,allow<br />
363 Allow from <var>dev.example.com</var>
366 <p><code class="directive"><a href="../mod/mod_access.html#allow">Allow</a></code>
367 ディレクティブを単純に列挙するのでは望みの動作をしないでしょう。
368 なぜなら、全ての人が入れるということに加えて、
369 指定したホストからの人が入れるようにするからです。
370 やりたいことは、指定した人たち<em>だけ</em>が入れるように
372 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
373 <div class="section">
374 <h2><a name="moreinformation" id="moreinformation">追加情報</a></h2>
375 <p>これら全てがどのように動作するかについて
376 もっと多くの情報が書かれている <code class="module"><a href="../mod/mod_auth.html">mod_auth</a></code> と
377 <code class="module"><a href="../mod/mod_access.html">mod_access</a></code>
380 <div class="bottomlang">
381 <p><span>Available Languages: </span><a href="../en/howto/auth.html" hreflang="en" rel="alternate" title="English"> en </a> |
382 <a href="../es/howto/auth.html" hreflang="es" rel="alternate" title="Español"> es </a> |
383 <a href="../ja/howto/auth.html" title="Japanese"> ja </a> |
384 <a href="../ko/howto/auth.html" hreflang="ko" rel="alternate" title="Korean"> ko </a></p>
385 </div><div id="footer">
386 <p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
387 <p class="menu"><a href="../mod/">モジュール</a> | <a href="../mod/directives.html">ディレクティブ</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">用語</a> | <a href="../sitemap.html">サイトマップ</a></p></div>