重要なアクセス制御を行っている場合、2つのルールが同じ要求に一致する場合があります。それらが競合する場合(つまり、一方が「拒否」と言い、もう一方が「許可」と言う)、どちらを優先するかを決定する何らかの方法が必要です。または、ルールが一致しない場合があり、それらのケースをカバーするためにデフォルトのポリシーが必要です。
Apacheでは、これはと呼ばれOrder
、そのように機能します。これは主に、Apacheがアクセス制御を処理することを決定したためです。それらを処理する方法では、ルールは「許可」ルールと「拒否」ルールに分けられます。リクエストが届くと、概念的には次のように処理が行われます。
- Apacheは、順序がの場合は最初に拒否ルールを実行し、順序がの
deny,allow
場合は最初に許可ルールを実行しallow,deny
ます。
- Apacheは他のルールを実行します。
- 最後の試合が勝ちます。一致するものがない場合、の最後のアクション
Order
はポリシーです。
(このプロセスには明らかにいくつかの最適化があります。おそらく、allow,deny
で、許可ルールが一致しない場合、Apacheは拒否ルールを気にせず、とにかく要求をすでに拒否しているためです。同様に、拒否ルールが一致しない場合ではdeny,allow
、要求は許可されます(停止するものが残っていないため)。ただし、概念的には、両方のルールセットを実行することを検討できます。)
各ルールに優先度パラメータなどを付けて、管理者にすべてに与える優先度を決定させることは可能だと思います。率直に言って、しかし、あなたがしたいのは何かを許可するか拒否するかを知ることだけであるとき、それはそのすべてのトラブルの価値はありません。これは、「許可」ルールまたは「拒否」ルールのいずれかを処理順序に基づいて他方をオーバーライドする機会を与えることで簡単に達成できるため、彼らはそれを実行しました。ただし、サイトが異なれば、他のルールセットを優先する必要がある場合もあるため、サイトを構成可能にしました。