Apache 2.4はauthz_host_moduleのRequireディレクティブでアクセス制御を実現している。
RequireAll, RequireAny, RequireNoneについて
-
RequireAll
- 全ての条件にマッチすればTRUEと評価する (AND条件)
-
RequireAny
- いずれかの条件にマッチすればTRUEと評価する (OR条件)
-
RequireNone
- いずれの条件にもマッチしなければTRUEと評価する (NOT条件)
例)
<Location /admin>
<RequireAll>
<RequireAny>
Require user admin
Require ip 192.168.1
</RequireAny>
<RequireNone>
Require group blacklist
</RequireNone>
</RequireAll>
</Location>
この場合、adminユーザ あるいは 接続元IPが192.168.1のネットワークである かつ、
blacklistに記載されていない場合は /adminにアクセスできる。
RequireAll, RequireAny, RequireNone どれも記載がなければ、
デフォルトではRequireAnyが適用される模様。
Requireディレクティブはいろいろと設定値があるようなので、調べたいところ。
Requireディレクティブについて
-
mod_authz_core
- Require all granted => 全て許可
- Require all denied => 全て拒否
- Require env <環境変数> => 環境変数で制御
- Require method http => httpメソッドで制御
-
mod_authz_host
- Require ip <IPアドレス> => IPアドレスで制御
- Require host <ホスト名> => ホスト名で制御
-
mod_authz_user
- Require user <ユーザ名>
- Require group <グループ名>
- Require valid_user => 認証ユーザを許可