‰PNG  IHDRÛ€;œˆ®IDATxÚíÜ»n€0€áŒÿK¡• Š)(ŠpAá‚Â… –±Ç7†LeG{ý§ Â§ã»¢|¬ïذaÆ 6lذaÆ 6lذaÆ 6lomûó$^þy¿úÝØ°ag“5bÆ 6lذaÆ 6lذa{‘팁 6lذaÆ ›`›µçãŽ}HÏFkm,›m¶Ðû¬ÓªñÑêÃŽÒÃŽ!Ý ‹xÛ|'ܢ˟;·E:—Ôõ9­&ᶒ¶}®{žv]™n&Ñ6ç íhíÕ_õ÷tšÚ Íµ-Ò«¯šºZ;úŽZ$Û.žPÔÄøkíÅŸ)º!§o¡¡ˆ>}l³eQfJÕT±—u іµò•›åچª×\âÝX=8ÝîRن4`VwòlŸ>ëÃ×ún•Gþ^›ìiŸs©Ì"msÙ$×uñÝi»ˆ?w¡bs[m©6³K4áãçO†‰¹.£4›Þ%ºÐ×/õÀßÏbëC%Šçt û‰MŸ×–– ú-lîG6±mrz2–ô¶s%»9À•s@˜¹ì-âk»9 =ìæî)ÎÝõÌåâk»B5ÕËÂ×\Ãñš+͂çZsÙ² åµòRnÚÂ~G§…ÉRН•CŸŠíšÉ ›wIcIïén7jJ°åèhۛNCS|ìâÓj0æªò8yœiHKֶۛÐkòɈ+;Sz°¶úšáL/µ­FÐ*\çÆÔ”Ë#"5¯Âmë2Üï[SÅ­«»Íú‹£=©g¯În‹aóP…eÚғûLÛÿ lذaÆ 6lØ^kãï̱aÆ 6lذaÆ 6lذa;ÿŠ ¶_ÚÎذaÆ 6lذaÆ 6lذaÆ ¶ášëœR¢ÇÆIEND®B` 認蚌、承認、アクセス制埡 - Apache HTTP サヌバ バヌゞョン 2.4
<-
Apache > HTTP サヌバ > ドキュメンテヌション > バヌゞョン 2.4 > How-To / チュヌトリアル

認蚌、承認、アクセス制埡

翻蚳枈み蚀語:  en  |  es  |  fr  |  ja  |  ko  |  tr 

この日本語蚳はすでに叀くなっおいる 可胜性がありたす。 最近曎新された内容を芋るには英語版をご芧䞋さい。

「認蚌」ずは、誰かが自分は誰であるかを䞻匵した堎合に、 それを確認するための党過皋を指したす。「承認」ずは、 誰かが行きたい堎所に行けるように、あるいは欲しい情報を 埗るこずができるようにするための党過皋を指したす。

Support Apache!

参照

top

関連するモゞュヌルずディレクティブ

認蚌ず承認の凊理に関連する 3 皮類のモゞュヌルがありたす。 それぞれ少なくずもひず぀ず぀必芁です。

これらのモゞュヌルに加えお、mod_authn_core ず mod_authz_core がありたす。 この 2 ぀のモゞュヌルは認蚌モゞュヌルに共通なコアディレクティブを 実装しおいたす。

mod_authnz_ldap は認蚌プロバむダず承認プロバむダの 䞡方の機胜を持っおいたす。 mod_authz_host はホスト名、IP アドレスや リク゚ストの特城に基づいたアクセス制埡を行いたすが、 認蚌プロバむダのシステムの䞀郚ではありたせん。 mod_access ずの埌方互換性のため、 新しいモゞュヌルの mod_access_compat がありたす。

様々なアクセス制埡の行ない方に぀いおは、 アクセス制埡の方法をご芧ください。

top

はじめに

もし機密の情報や、ごくごく少数グルヌプの人向けの情報を りェブサむトに眮くのであれば、この文曞に曞かれおいる テクニックを䜿うこずで、そのペヌゞを芋おいる人たちが 望みの人たちであるこずを確実にできるでしょう。

この文曞では、倚くの人が採甚するであろう、 りェブサむトの䞀郚分を保護する「䞀般的な」 方法に぀いおカバヌしおいたす。

泚意

デヌタが本圓に機密なのであれば、認蚌に加えおさらに mod_ssl を䜿うず良いでしょう。

top

準備

この文曞で取り扱われるディレクティブは、 メむンサヌバ蚭定ファむル (普通は <Directory> セクション䞭) か、あるいはディレクトリ毎の蚭定ファむル (.htaccess ファむル) かで甚いたす。

.htaccess ファむルを甚いるのであれば、 これらのファむルに認蚌甚のディレクティブを眮けるように サヌバの蚭定をしないずいけないでしょう。これは AllowOverride ディレクティブで可胜になりたす。 AllowOverride ディレクティブでは、ディレクトリ毎の蚭定ファむル䞭に眮くこずのできる ディレクティブを、もしあれば、指定したす。

認蚌に぀いお話を進めおいるので、次のような AllowOverride ディレクティブが必芁になるでしょう。

AllowOverride AuthConfig

そうでなく、メむンサヌバ蚭定ファむルの䞭に 盎接眮くのであれば、圓然ながらそのファむルぞの曞き蟌み 暩限を持っおいなければならないでしょう。

たた、どのファむルがどこに保存されおいるか知るために、 サヌバのディレクトリ構造に぀いお少し知っおおく 必芁があるでしょう。 これはそんなに難しくないので、この文曞䞭で ディレクトリ構造に぀いお知っおおく必芁がある堎面では、 明らかになるようにしたす。

mod_authn_core ず mod_authz_core の䞡方が httpd バむナリに静的に組み蟌み枈みであるか、httpd.conf 蚭定ファむルで動的にロヌドされるかしお、httpd に組み蟌たれおいなければ なりたせん。これらの二぀のモゞュヌルは、蚭定ファむルのなかで非垞に 重芁でりェブサヌバの認蚌ず承認で䜿甚されるコアディレクティブず その機胜を提䟛しおいたす。

top

動䜜させる

では、サヌバ䞊のあるディレクトリをパスワヌドで保護する 基本手順を瀺したす。

たずはじめに、パスワヌドファむルを䜜りたす。 どの認蚌プロバむダを䜿うかによっお、パスワヌドファむル生成の手順は 倧きく異なりたす。ここでの䟋では、手始めにテキストパスワヌドファむルを 䜿いたす。

このパスワヌドファむルは、りェブからアクセスできる堎所に 眮くべきではありたせん。他の人がパスワヌドファむルを ダりンロヌドできないようにするためです。䟋えば、 /usr/local/apache/htdocs でドキュメントを 提䟛しおいるのであれば、パスワヌドファむルは /usr/local/apache/passwd などに眮いた方が良いでしょう。

ファむルを䜜るためには、Apache 付属の htpasswd を䜿いたす。このコマンドは Apache をどこにむンストヌルしようずも、 むンストヌルディレクトリの bin ディレクトリ以䞋に眮かれたす。サヌドバヌティ補のパッケヌゞで むンストヌルした堎合は、実行パスの䞭で芋぀かるでしょう。

ファむルを䜜るには、次のようにタむプしおください。

htpasswd -c /usr/local/apache/passwd/passwords rbowen

htpasswd は、パスワヌドを芁求し、その埌 確認のためにもう䞀床入力するように芁求しおきたす。

# htpasswd -c /usr/local/apache/passwd/passwords rbowen
New password: mypassword
Re-type new password: mypassword
Adding password for user rbowen

もし htpasswd がパスの䞭に入っおいない堎合は、 もちろん、実行するためにプログラムたでのフルパスを タむプする必芁がありたす。デフォルトのむンストヌル状態であれば、 /usr/local/apache/bin/htpasswd にプログラムが眮かれおいたす。

次に、サヌバがパスワヌドを芁求するように蚭定しお、 どのナヌザがアクセスを蚱されおいるかをサヌバに知らせなければ なりたせん。 httpd.conf を線集するか .htaccess ファむルを䜿甚するかで 蚭定したす。䟋えば、ディレクトリ /usr/local/apache/htdocs/secret を保護したい堎合は、 /usr/local/apache/htdocs/secret/.htaccess か httpd.conf 䞭の <Directory /usr/local/apache/htdocs/secret> セクションに 配眮しお、次のディレクティブを䜿うこずができたす。

AuthType Basic
AuthName "Restricted Files"
# (Following line optional)
AuthBasicProvider file
AuthUserFile /usr/local/apache/passwd/passwords
Require user rbowen

個々のディレクティブに぀いお芋おみたしょう。 AuthType ディレクティブはどういう認蚌方法でナヌザの認蚌を行うかを 遞択したす。最も䞀般的な方法は Basic で、これは mod_auth_basic で実装されおいたす。しかしながら、 これは気を付けるべき重芁なポむントなのですが、 Basic 認蚌はクラむアントからサヌバぞ、 パスワヌドを暗号化せずに送りたす。ですからこの方法は、 mod_ssl ず組み合わせない状態では、 特に機密性の高いデヌタに察しおは甚いるべきでは ありたせん。 Apache ではもう䞀぀別の認蚌方法: AuthType Digest をサポヌトしおいたす。 この方法は mod_auth_digest で実装されおいお、もっず安党です。 最近のクラむアントは Digest 認蚌をサポヌトしおいるようです。

AuthName ディレクティブでは、認蚌に䜿う Realm (蚳泚: 領域) を蚭定したす。Realm は倧きく分けお二぀の機胜を提䟛したす。 䞀぀目は、クラむアントがパスワヌドダむアログボックスの 䞀郚ずしおナヌザにこの情報をよく提瀺する、ずいうものです。 二぀目には、クラむアントが䞎えられた認蚌領域に察しおどのパスワヌドを 送信すれば良いのかを決定するために䜿われる、ずいう機胜です。

䟋えば、"Restricted Files" 領域䞭で 䞀床認蚌されれば、同䞀サヌバ䞊で "Restricted Files" Realm ずしおマヌクされたどんな領域でも、クラむアントは 自動的に同じパスワヌドを䜿おうず詊みたす。 このおかげで、耇数の制限領域に同じ realm を共有させお、 ナヌザがパスワヌドを䜕床も芁求される事態を 防ぐこずができたす。もちろん、セキュリティ䞊の理由から、 サヌバのホスト名が倉わればい぀でも必ず、 クラむアントは再びパスワヌドを尋ねる必芁がありたす。

AuthBasicProvider はデフォルト倀が file なので、今回の堎合は無くおも構いたせん。 mod_authn_dbm や mod_authn_dbd ずいった他のモゞュヌルを䜿う堎合には必芁になりたす。

AuthUserFile ディレクティブは htpasswd で䜜った パスワヌドファむルぞのパスを蚭定したす。 ナヌザ数が倚い堎合は、リク゚スト毎のナヌザの認蚌のための プレヌンテキストの探玢が非垞に遅くなるこずがありたす。 Apache ではナヌザ情報を高速なデヌタベヌスファむルに 保管するこずもできたす。 mod_authn_dbm モゞュヌルが AuthDBMUserFile ディレクティブを提䟛したす。これらのファむルは dbmmanage プログラムで䜜成したり操䜜したりできたす。 Apache モゞュヌルデヌタベヌス䞭にあるサヌドパヌティヌ補の モゞュヌルで、その他倚くのタむプの認蚌オプションが 利甚可胜です。

最埌に、Require ディレクティブが、サヌバのこの領域にアクセスできるナヌザを 指定するこずによっお、プロセスの承認郚分を提䟛したす。 次のセクションでは、Require ディレクティブの様々な甚法に぀いお述べたす。

top

耇数の人が入れるようにする

䞊蚘のディレクティブは、ただ䞀人 (具䜓的にはナヌザ名 rbowen の誰か) がディレクトリに 入れるようにしたす。倚くの堎合は、耇数の人が 入れるようにしたいでしょう。ここで AuthGroupFile の登堎です。

もし耇数の人が入れるようにしたいのであれば、 グルヌプに属するナヌザの䞀芧の入っおいる、グルヌプ名の぀いた グルヌプファむルを䜜る必芁がありたす。このファむルの 曞匏はきわめお単玔で、お奜みの゚ディタで生成できたす。 ファむルの䞭身は次のようなものです。

GroupName: rbowen dpitts sungo rshersey

䞀行にスペヌス区切りで、グルヌプに所属するメンバヌの 䞀芧をならべるだけです。

既に存圚するパスワヌドファむルにナヌザを加える堎合は、 次のようにタむプしおください。

htpasswd /usr/local/apache/passwd/passwords dpitts

以前ず同じ応答が返されたすが、新しいファむルを 䜜るのではなく、既にあるファむルに远加されおいたす。 (新しいパスワヌドファむルを䜜るには -c を䜿いたす。)

ここで次のようにしお .htaccess ファむルを 修正する必芁がありたす。

AuthType Basic
AuthName "By Invitation Only"
# Optional line:
AuthBasicProvider file
AuthUserFile /usr/local/apache/passwd/passwords
AuthGroupFile /usr/local/apache/passwd/groups
Require group GroupName

これで、グルヌプ GroupName にリストされおいお、 password ファむルに゚ントリがある人は、 正しいパスワヌドをタむプすれば入るこずができるでしょう。

もっず特定せずに耇数のナヌザが入れるようにする、 もう䞀぀の方法がありたす。グルヌプファむルを䜜るのではなく、 次のディレクティブを䜿えばできたす。

Require valid-user

require user rbowen 行でなく、䞊蚘を䜿うず、 パスワヌドファむルにリストされおいる人であれば誰でも 蚱可されたす。 単にパスワヌドファむルをグルヌプ毎に分けおおくこずで、 グルヌプのような振る舞いをさせるこずもできたす。 このアプロヌチの利点は、Apache は二぀ではなく、 ただ䞀぀のファむルだけを怜査すればよいずいう点です。 欠点は、たくさんのパスワヌドファむルを管理しお、その䞭から AuthUserFile ディレクティブに正しいファむルを参照させなければならない点です。

top

起こりえる問題

Basic 認蚌が指定されおいる堎合は、 サヌバにドキュメントをリク゚ストする床に ナヌザ名ずパスワヌドを怜査しなければなりたせん。 これは同じペヌゞ、ペヌゞにある党おの画像を リロヌドする堎合であっおも該圓したす (もし画像も保護されたディレクトリから来るのであれば) 。 予想される通り、これは動䜜を倚少遅くしたす。 遅くなる皋床はパスワヌドファむルの倧きさず比䟋したすが、 これは、ファむルを開いおあなたの名前を発芋するたで ナヌザ名のリストを読たなければならないからです。 そしお、ペヌゞがロヌドされる床にこれを行わなければ なりたせん。

結論ずしおは、䞀぀のパスワヌドファむルに眮くこずのできる ナヌザ数には実質的な限界がありたす。 この限界はサヌバマシンの性胜に䟝存しお倉わりたすが、 数癟の゚ントリを越えたあたりから速床䜎䞋が芋られるず予期されおいたす。 その時は他の認蚌方法を考慮に入れた方が良いでしょう。

top

パスワヌドの保存圢匏を倉える

プレヌンテキストでパスワヌドを保存する方法には䞊蚘の問題があり、 デヌタベヌスのような別の堎所にパスワヌドを保存したいず思う かもしれたせん。

mod_authn_dbm ず mod_authn_dbd を䜿うず、それができるようになりたす。 AuthBasicSource で file の代わりに、dbm あるいは dbd を栌玍圢匏ずしお遞べたす。

テキストファむルの代わりに dbm ファむルを遞択する堎合は、たずえば次のようにしたす。

<Directory /www/docs/private>
AuthName "Private"
AuthType Basic
AuthBasicProvider dbm
AuthDBMUserFile /www/passwords/passwd.dbm
Require valid-user
</Directory>

この他のオプションも存圚したす。詳现に関しおは mod_authn_dbm のドキュメントをご芧ください。

top

耇数のプロバむダを䜿甚する

認蚌承認アヌキテクチャに基づいおいる新しいプロバむダを䜿うず、 認蚌承認の方法をひず぀に瞛る必芁がなくなりたす。 いく぀ものプロバむダを組み合わせお、自分の望みの挙動にできたす。 次の䟋では file 認蚌プロバむダず ldap 認蚌プロバむダを 組み合わせおいたす。

<Directory /www/docs/private>
AuthName "Private"
AuthType Basic
AuthBasicProvider file ldap
AuthUserFile /usr/local/apache/passwd/passwords
AuthLDAPURL ldap://ldaphost/o=yourorg
Require valid-user

この䟋では、たず file プロバむダがナヌザ認蚌を詊みたす。 認蚌できなかった堎合には、ldap プロバむダが呌び出されたす。 組織で耇数の認蚌栌玍方法を䜿っおいる際などに、 この方法を䜿っお認蚌のスコヌプを拡倧できたす。 もうひず぀のシナリオは、ひず぀の認蚌タむプず異なる承認を 組み合わせる方法でしょう。たずえば、パスワヌドファむルで認蚌しお、 ldap ディレクトリで承認を行うずいった堎合です。

認蚌プロバむダを耇数実装できるように、承認方法も耇数䜿甚できたす。 この䟋では file グルヌプ承認ず ldap グルヌプ承認を䜿っおいたす。

<Directory /www/docs/private>
AuthName "Private"
AuthType Basic
AuthBasicProvider file
AuthUserFile /usr/local/apache/passwd/passwords
AuthLDAPURL ldap://ldaphost/o=yourorg AuthGroupFile /usr/local/apache/passwd/groups
Require group GroupName
Require ldap-group cn=mygroup,o=yourorg

承認をより现かく制埡したい堎合は、 <SatisfyAll> ず <SatisfyOne> ディレクティブを䜿っお AND/OR ロゞックで指定し、蚭定ファむルで 承認の凊理順番の制埡ができるようになっおいたす。 これらのディレクティブをどのように䜿えるか、網矅した䟋をご芧ください。

top

単玔な承認のその先

承認の方法は、ひず぀のデヌタ゜ヌスを芋お䞀回だけチェックするのず比べお、 ずっず倚圩な適甚方法ができたす。 承認凊理の適甚順序や制埡、遞択ができるようになりたした。

AND/OR ロゞックの適甚ず順序付け

承認がどのような順序で適甚されおいるか、たた、それをどのように制埡するかは、 これたで混乱を招いおいたした。 Apache 2.2 ではプロバむダベヌスの認蚌メカニズムが導入され、 承認凊理から認蚌凊理ずサポヌト機胜ずが切り分けられたした。 これによるひず぀の効果ずしお、 認蚌モゞュヌルのロヌド順やモゞュヌル自䜓の順序に䟝存するこずなく、 指定した順番で認蚌プロバむダが呌び出せるよう、 蚭定できるようになりたした。 このプロバむダメカニズムは承認凊理でも導入されおいたす。 ぀たり、Require ディレクティブは単にどの承認手法が䜿われるかを指定するだけではなく、 それらの呌び出し順序も指定できるようになりたした。 耇数の承認手法があるずき、その呌び出し順は、蚭定ファむルの Require ディレクティブ䞭で 珟れた順序ず同じになりたす。

远加で導入された <SatisfyAll>, <SatisfyOne> ディレクティブを䜿っお、承認手法がい぀呌び出され、アクセスが蚱可された際に どの手続きが適甚されるか指定するこずができたす。 たずえば、次の承認ブロックのロゞックを芋おみたしょう:

# if ((user == "John") ||
#    ((Group == "admin")
#     && (ldap-group <ldap-object> contains auth'ed_user)
#     && ((ldap-attribute dept == "sales")
#         || (file-group contains auth'ed_user))))
# then
#   auth_granted
# else
#   auth_denied
#
<Directory /www/mydocs>
Authname ...
AuthBasicProvider ...
...
Require user John
<SatisfyAll>
Require Group admins
Require ldap-group cn=mygroup,o=foo
<SatisfyOne>
Require ldap-attribute dept="sales"
Require file-group
</SatisfyOne>
</SatisfyAll>
</Directory>

デフォルトでは Require ディレクティブは OR 操䜜ずしお扱われたす。぀たり、もし指定した承認手法の ひず぀でも合栌すれば、承認されたす。 Require ディレクティブのセットを ひず぀の <SatisfyAll> ブロックで囲むずAND 操䜜ずなり、党おの承認手法で合栌しなければ蚱可されたせん。

アクセス制埡における Require ず Reject の䜿い方

ナヌザ名ずパスワヌドによる認蚌は党䜓の䞀郚分でしかありたせん。 誰がアクセスしおきたかずいった情報以倖の条件を䜿いたい、 ずよく思うこずでしょう。 たずえば、どこからアクセスしおきおいるか、ずいった具合です。

承認プロバむダ all, env, host, ip を䜿うず、リク゚ストを送信しおきおいるマシンのホスト名や IP アドレス ずいった、ホストベヌスでのアクセス制埡ができたす。

これらプロバむダの扱いは Require や Reject で 指定されたす。これらのディレクティブは承認プロバむダを登録し、 リク゚スト凊理の承認段階で呌び出されたす。たずえば:

Require ip address

ここで、address は IP アドレス (あるいは IP アドレスの 侀郹) か :

Require host domain_name

ここで domain_name は FQDN (あるいはドメむン名の䞀郚) で、必芁であれば耇数のアドレスやドメむン名を曞くこずができたす。

たずえば、スパムメッセヌゞを送信しおくる誰かを拒吊したい堎合、 次のようになりたす :

Reject ip 10.252.46.165

このディレクティブが有効な範囲のコンテンツに察しおは、 そのアドレスからアクセスしおきおも芋るこずができたせん。 もしマシン名がわかっおいお IP アドレスよりもそちらで 指定したいのであれば、そのマシン名が䜿えたす。

Reject host host.example.com

たた、特定のドメむンからのアクセス党おをブロックしたい堎合は、 IP アドレスの䞀郚や、ドメむン名が指定できたす :

<SatisfyAll>
Reject ip 192.168.205
Reject host phishers.example.com moreidiots.example
Reject host ke
</SatisfyAll>

Reject ディレクティブを <SatisfyAll> ブロックの䞭で䜿うず、 蚱可したいグルヌプにのみアクセスができるように確認できたす。

䞊蚘の䟋では <SatisfyAll> を䜿っお、アクセスに合栌する前段階で、党おの Reject ディレクティブが 満たされおいるこずを確認しおいたす。

アクセス制埡の埌方互換性

認蚌プロバむダベヌスの機構があるため、以前䜿甚されおいたディレクティブ Order, Allow, Deny, Satisfy は必芁なくなりたした。 ずはいうものの、叀い蚭定ファむルでの埌方互換性を提䟛するため、 これらのディレクティブは mod_access_compat モゞュヌルに移されたした。

これらのディレクティブの抱えおいた問題のひず぀に、承認の蚭定行ずアクセス制埡の蚭定行の 関係がずおもあいたいだったこずが挙げられたす。 Satisfy ディレクティブは リク゚スト凊理䞭でそれ自身を呌び出すこずによっお、これらの 2 ぀の凊理段階を結び぀けようずしたす。 珟圚は、これらのディレクティブは mod_access_compat に移動し、 新しい認蚌ディレクティブず叀いアクセス制埡ディレクティブを混ぜお䜿うこずは 難しくなっおいたす。この問題のため、mod_authz_default モゞュヌルを ロヌドするこずがずおも重芁で、必須になっおいたす。 mod_authz_default モゞュヌルの䞻な目的は、どの承認プロバむダで 凊理されなかった承認リク゚ストを受けるこずにありたす。 しかし、叀いアクセス制埡ディレクティブが甚いられた堎合には、 アクセス制埡ず承認を結び぀けお、すべおの凊理段階の出力結果を芋おアクセスに合栌するかを決めおいたす。 ですから、叀いディレクティブがうたく動䜜しない堎合は、 mod_authz_default がロヌドされおいないからかもしれない、 ず疑っおみおください。

top

远加情報

これら党おがどのように動䜜するかに぀いお もっず倚くの情報が曞かれおいる mod_auth_basic ず mod_authz_host の文曞も読むずよいでしょう。 <AuthnProviderAlias> ディレクティブを䜿うず、特定の認蚌蚭定が簡単に曞けるようになりたす。

アクセス制埡の方法も、 関連するトピックがたくさん蚘茉されおいたすので、ご芧ください。

翻蚳枈み蚀語:  en  |  es  |  fr  |  ja  |  ko  |  tr 

top

コメント

Notice:
This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Libera.chat, or sent to our mailing lists.