Apache フォワードプロキシの認可: Require と AuthMerging
proxy.conf を独立したポリシー層として扱うのではなく、Apache のセクション結合ルールを通してグローバルおよびバーチャルホストのプロキシ認可をたどります。
proxy.conf のルールは特別な種類のルールではありません。Apache はインクルードされた設定を設定ツリーに読み込み、それを囲むグローバル、VirtualHost、または一致するセクションがディレクティブの関与の仕方を決めます。
まず、フォワードプロキシのリクエストを処理するリスナーとバーチャルホストから始めます。次に、そのコンテキストとメイン設定から一致する Proxy セクションを集めます。重要なのはセクションの処理順であり、どのファイルが最後に編集されたかだけではありません。
認可は常に累積するとは限らない
既定の AuthMerging Off の動作では、後から適用されるセクションが独自の認可ロジックを提供するまで認可は継承されます。その新しいロジックは、別の制限を追加するのではなく、以前の要件を置き換えることがあります。
| 設定 | 最も近い先行する認可セクションとの組み合わせ |
|---|---|
| Off | 新しい認可が継承されたロジックを上書きできる |
| And | 両方のセットが認可する必要がある |
| Or | どちらか一方のセットが認可すればよい |
AuthMerging 自体は、それを含むセクションに対してのみローカルです。And を一度設定すれば以降のすべてのセクションが変わる、と考えないでください。
意図するポリシーは可能な限り明示してください。認可コンテナで囲まれていない 2 行の Require は暗黙の代替であり、IP ルールと valid-user は自動的に「IP かつユーザー」にはなりません。使うのは 両方の条件が同じ判断に属する場合の RequireAll。
プロキシのアカウントを変更したりアクセスを開放したりする前に、一致する設定全体を確認します。次に、稼働中のリスナーに対して 許可されるケースと拒否されるケースを検証します。別のセクションが実効的な認可を提供しているために、リクエストが拒否されたり、逆に予期せず許可されたりすることがあります。