bottleneck testcase based on rubbos
[bottlenecks.git] / rubbos / app / httpd-2.0.64 / docs / manual / howto / auth.html.ja.utf8
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
7       -->
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="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
18 <div id="path">
19 <a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP サーバ</a> &gt; <a href="http://httpd.apache.org/docs/">ドキュメンテーション</a> &gt; <a href="../">バージョン 2.0</a> &gt; <a href="./">How-To / チュートリアル</a></div><div id="page-content"><div id="preamble"><h1>認証、承認、アクセス制御</h1>
20 <div class="toplang">
21 <p><span>Available Languages: </span><a href="../en/howto/auth.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
22 <a href="../es/howto/auth.html" hreflang="es" rel="alternate" title="Español">&nbsp;es&nbsp;</a> |
23 <a href="../ja/howto/auth.html" title="Japanese">&nbsp;ja&nbsp;</a> |
24 <a href="../ko/howto/auth.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
25 </div>
26 <div class="outofdate">This translation may be out of date. Check the
27             English version for recent changes.</div>
28
29     <p>「認証」とは、誰かが自分は誰であるかを主張した場合に、
30     それを確認するための全過程を指します。「承認」とは、
31     誰かが行きたい場所に行けるように、あるいは欲しい情報を
32     得ることができるようにするための全過程を指します。</p>
33 </div>
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">もっと巧みに制御できない
42 ?</a></li>
43 <li><img alt="" src="../images/down.gif" /> <a href="#moreinformation">追加情報</a></li>
44 </ul></div>
45 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
46 <div class="section">
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>
50 <div class="section">
51 <h2><a name="introduction" id="introduction">はじめに</a></h2>
52     <p>もし機密の情報や、ごくごく少数グループの人向けの情報を
53     ウェブサイトに置くのであれば、この文書に書かれている
54     テクニックを使うことで、そのページを見ている人たちが
55     望みの人たちであることを確実にできるでしょう。</p>
56
57     <p>この文書では、多くの人が採用するであろう、
58     ウェブサイトの一部分を保護する「一般的な」
59     方法についてカバーしています。</p>
60 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
61 <div class="section">
62 <h2><a name="theprerequisites" id="theprerequisites">準備</a></h2>
63     <p>この文書で取り扱われるディレクティブは、
64     メインサーバ設定ファイル (普通は 
65     <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code>
66     セクション中) か、あるいはディレクトリ毎の設定ファイル 
67     (<code>.htaccess</code> ファイル) かで用います。</p>
68
69     <p><code>.htaccess</code> ファイルを用いるのであれば、
70     これらのファイルに認証用のディレクティブを置けるように
71     サーバの設定をしないといけないでしょう。これは
72     <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code>
73     ディレクティブで可能になります。
74     <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code>
75     ディレクティブでは、ディレクトリ毎の設定ファイル中に置くことのできる
76     ディレクティブを、もしあれば、指定します。</p>
77
78     <p>認証について話を進めているので、次のような
79     <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code>
80     ディレクティブが必要になるでしょう。</p>
81
82     <div class="example"><p><code>
83       AllowOverride AuthConfig
84     </code></p></div>
85
86     <p>そうでなく、メインサーバ設定ファイルの中に
87     直接置くのであれば、当然ながらそのファイルへの書き込み
88     権限を持っていなければならないでしょう。</p>
89
90     <p>また、どのファイルがどこに保存されているか知るために、
91     サーバのディレクトリ構造について少し知っておく
92     必要があるでしょう。
93     これはそんなに難しくないので、この文書中で
94     ディレクトリ構造について知っておく必要がある場面では、
95     明らかになるようにします。</p>
96 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
97 <div class="section">
98 <h2><a name="gettingitworking" id="gettingitworking">動作させる</a></h2>
99     <p>では、サーバ上のあるディレクトリをパスワードで保護する
100     基本手順を示します。</p>
101
102     <p>パスワードファイルを作る必要があります。
103     このファイルは、ウェブからアクセスできる場所に
104     置くべきではありません。他の人がパスワードファイルを
105     ダウンロードできないようにするためです。例えば、
106     <code>/usr/local/apache/htdocs</code> でドキュメントを
107     提供しているのであれば、パスワードファイルは
108     <code>/usr/local/apache/passwd</code>
109     などに置いた方が良いでしょう。</p>
110
111     <p>ファイルを作るためには、Apache 付属の <a href="../programs/htpasswd.html">htpasswd</a> 
112     を使います。このコマンドは Apache をどこにインストールしようとも、
113     インストールディレクトリの <code>bin</code> 
114     ディレクトリ以下に置かれます。ファイルを作るには、次のように
115     タイプしてください。</p>
116
117     <div class="example"><p><code>
118       htpasswd -c /usr/local/apache/passwd/passwords rbowen
119     </code></p></div>
120
121     <p><code>htpasswd</code> は、パスワードを要求し、その後
122     確認のためにもう一度入力するように要求してきます。</p>
123
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
129     </code></p></div>
130
131     <p>もし <code>htpasswd</code> がパスの中に入っていない場合は、
132     もちろん、実行するためにプログラムまでのフルパスを
133     タイプする必要があります。私のサーバであれば、
134     <code>/usr/local/apache/bin/htpasswd</code>
135     にプログラムが置かれています。</p>
136
137     <p>次に、サーバがパスワードを要求するように設定して、
138     どのユーザがアクセスを許されているかをサーバに知らせなければ
139     なりません。 <code>httpd.conf</code> を編集するか
140     <code>.htaccess</code> ファイルを使用するかで
141     設定します。例えば、ディレクトリ
142     <code>/usr/local/apache/htdocs/secret</code>
143     を保護したい場合は、
144     <code>/usr/local/apache/htdocs/secret/.htaccess</code>
145     か httpd.conf 中の &lt;Directory
146     /usr/local/apache/apache/htdocs/secret&gt; セクションに
147     配置して、次のディレクティブを使うことができます。</p>
148
149     <div class="example"><p><code>
150       AuthType Basic<br />
151       AuthName "Restricted Files"<br />
152       AuthUserFile /usr/local/apache/passwd/passwords<br />
153       Require user rbowen
154     </code></p></div>
155
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>
161     で実装されています。しかしながら、
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>
169     で実装されていて、もっと安全です。
170     ごくごく最近のクライアントしか Digest
171     認証をサポートしていないようです。</p>
172
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>
180
181     <p>例えば、<code>"Restricted Files"</code> 領域中で
182     一度認証されれば、同一サーバ上で <code>"Restricted Files"</code>
183     Realm としてマークされたどんな領域でも、クライアントは
184     自動的に同じパスワードを使おうと試みます。
185     このおかげで、複数の制限領域に同じ realm を共有させて、
186     ユーザがパスワードを何度も要求される事態を
187     防ぐことができます。もちろん、セキュリティ上の理由から、
188     サーバのホスト名が変わればいつでも必ず、
189     クライアントは再びパスワードを尋ねる必要があります。</p>
190
191     <p><code class="directive"><a href="../mod/mod_auth.html#authuserfile">AuthUserFile</a></code>
192     ディレクティブは <code>htpasswd</code> で作った
193     パスワードファイルへのパスを設定します。
194     ユーザ数が多い場合は、リクエスト毎のユーザの認証のための
195     プレーンテキストの探索が非常に遅くなることがあります。
196     Apache ではユーザ情報を高速なデータベースファイルに
197     保管することもできます。
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     モジュールで、その他多くのタイプの認証オプションが
205     利用可能です。</p>
206
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     入れるようにします。多くの場合は、複数の人が
219     入れるようにしたいでしょう。ここで
220     <code class="directive"><a href="../mod/mod_auth.html#authgroupfile">AuthGroupFile</a></code>
221     の登場です。</p>
222
223     <p>もし複数の人が入れるようにしたいのであれば、
224     グループに属するユーザの一覧の入っている、グループ名のついた
225     グループファイルを作る必要があります。このファイルの
226     書式はきわめて単純で、お好みのエディタで生成できます。
227     ファイルの中身は次のようなものです。</p>
228
229    <div class="example"><p><code>
230      GroupName: rbowen dpitts sungo rshersey
231    </code></p></div>
232
233     <p>一行にスペース区切りで、グループに所属するメンバーの
234     一覧をならべるだけです。</p>
235
236     <p>既に存在するパスワードファイルにユーザを加える場合は、
237     次のようにタイプしてください。</p>
238
239     <div class="example"><p><code>
240       htpasswd /usr/local/apache/passwd/passwords dpitts
241     </code></p></div>
242
243     <p>以前と同じ応答が返されますが、新しいファイルを
244     作るのではなく、既にあるファイルに追加されています。
245     (新しいパスワードファイルを作るには <code>-c</code>
246     を使います。)</p>
247
248     <p>ここで次のようにして <code>.htaccess</code> ファイルを
249     修正する必要があります。</p>
250
251     <div class="example"><p><code>
252       AuthType Basic<br />
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
257     </code></p></div>
258
259     <p>これで、グループ <code>GroupName</code> にリストされていて、
260     <code>password</code> ファイルにエントリがある人は、
261     正しいパスワードをタイプすれば入ることができるでしょう。</p>
262
263     <p>もっと特定せずに複数のユーザが入れるようにする、
264     もう一つの方法があります。グループファイルを作るのではなく、
265     次のディレクティブを使えばできます。</p>
266
267     <div class="example"><p><code>
268       Require valid-user
269     </code></p></div>
270
271     <p><code>require user rbowen</code> 行でなく、上記を使うと、
272     パスワードファイルにリストされている人であれば誰でも
273     許可されます。
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 認証が指定されている場合は、
285     サーバにドキュメントをリクエストする度に
286     ユーザ名とパスワードを検査しなければなりません。
287     これは同じページ、ページにある全ての画像を
288     リロードする場合であっても該当します
289      (もし画像も保護されたディレクトリから来るのであれば) 。
290     予想される通り、これは動作を多少遅くします。
291     遅くなる程度はパスワードファイルの大きさと比例しますが、
292     これは、ファイルを開いてあなたの名前を発見するまで
293     ユーザ名のリストを読まなければならないからです。
294     そして、ページがロードされる度にこれを行わなければ
295     なりません。</p>
296
297     <p>結論としては、一つのパスワードファイルに置くことのできる
298     ユーザ数には実質的な限界があります。
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">もっと巧みに制御できない
305 ?</a></h2>
306     <p>ユーザ名とパスワードによる認証は認証の一つの方法に過ぎません。
307     しばしば誰であるかということとは違う何かに基づいて、
308     入れるようにしたくなることもあるでしょう。
309     例えばその人がどこから来ているかといったことです。</p>
310
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>
318
319     <p>これらのディレクティブの使い方は次のようになります。</p>
320
321     <div class="example"><p><code>
322       Allow from <var>address</var>
323     </code></p></div>
324
325     <p>ここで、<var>address</var> は IP アドレス
326     (または IP アドレスの一部)、あるいは完全修飾ドメイン名
327     (またはドメイン名の一部) です。
328     必要であれば複数のアドレスやドメイン名を指定できます。</p>
329
330     <p>例えば、もし誰かが掲示板を攻撃していて、
331     その人を閉め出したいのであれば、
332     次のようにすることができます。</p>
333
334     <div class="example"><p><code>
335       Deny from 205.252.46.165
336     </code></p></div>
337
338     <p>このアドレスから来る人は、このディレクティブの範囲内の
339     コンテンツを見ることができません。もし IP
340     アドレスの代わりにマシン名があれば、それを使えます。</p>
341
342     <div class="example"><p><code>
343       Deny from <var>host.example.com</var>
344     </code></p></div>
345
346     <p>ドメイン全体からのアクセスを防ぎたければ、
347     単にアドレスやドメイン名の一部を指定することができます。</p>
348
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 />
352       Deny from ke
353     </code></p></div>
354
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>
359
360     <div class="example"><p><code>
361       Order deny,allow<br />
362       Deny from all<br />
363       Allow from <var>dev.example.com</var>
364     </code></p></div>
365
366     <p><code class="directive"><a href="../mod/mod_access.html#allow">Allow</a></code>
367     ディレクティブを単純に列挙するのでは望みの動作をしないでしょう。
368     なぜなら、全ての人が入れるということに加えて、
369     指定したホストからの人が入れるようにするからです。
370     やりたいことは、指定した人たち<em>だけ</em>が入れるように
371     することです。</p>
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>
378     の文書も読むとよいでしょう。</p>
379 </div></div>
380 <div class="bottomlang">
381 <p><span>Available Languages: </span><a href="../en/howto/auth.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
382 <a href="../es/howto/auth.html" hreflang="es" rel="alternate" title="Español">&nbsp;es&nbsp;</a> |
383 <a href="../ja/howto/auth.html" title="Japanese">&nbsp;ja&nbsp;</a> |
384 <a href="../ko/howto/auth.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</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>
388 </body></html>