【解決】問題ID 28335について(質問)

  • フォーラムは新サイトへ移行しました。
  • このフォーラムではゲスト投稿が禁止されています
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2017-5-21 23:00 | 最終変更
cadlyus  新米   投稿数: 2
問題ID 28335のaccessディレクティブについて、「アクセス制御をしていない場合と同じ条件」となる回答がそれぞれ
・access to * by * read ・・・(1)
・access to *      ・・・(2)
 by anonymous read
 by * none

となっていますが、上記の記述は同じ設定となるのでしょうか。
(1)は全てのユーザ(認証、匿名含む)に対して読み取り許可
(2)は匿名ユーザのみ(?)に対して読み取り許可、それ以外は拒否
のように見え、設定が異なるような気がしています。

ひょっとすると、(2)の場合のように匿名ユーザで読み取りを許可している場合、上位のユーザ(例:認証ユーザ)でも読み取りが許可されたりするのでしょうか?

よろしくお願いします。
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2017-5-22 9:48
arashi1977  長老 居住地: 広島  投稿数: 1715
引用:
・access to * by * read ・・・(1)
・access to *      ・・・(2)
 by anonymous read
 by * none

となっていますが、上記の記述は同じ設定となるのでしょうか。
(1)は全てのユーザ(認証、匿名含む)に対して読み取り許可
(2)は匿名ユーザのみ(?)に対して読み取り許可、それ以外は拒否
のように見え、設定が異なるような気がしています。

ひょっとすると、(2)の場合のように匿名ユーザで読み取りを許可している場合、上位のユーザ(例:認証ユーザ)でも読み取りが許可されたりするのでしょうか?
解説の以下の部分に関する話題ですね。
引用:
アクセス制御の設定を何も記述しない場合は「access to * by * read」と同じ条件が適用され、全てのデータを全てのユーザが参照できるようになっています。
認証される前のユーザの為に、anonymousを指定します。
したがって、アクセス制御が記述されていない場合は以下の設定がされているのと同じことになります。

access to *
by anonymous read
by * none
※なんか「認証される前のユーザの為に、anonymousを指定します。」って変な文だなぁ…

勘違いしてはいけないのは、anonymousは「匿名のユーザ」ではなく、「認証前のユーザ」であることですね。

「access to * by anonymous read」というアクセス制限は「認証前のユーザに対して、全てのエントリの読み取りを許可する」ということです。認証前のユーザということは、OpenLDAPで管理している(アクセス制限可能な)ユーザ以外も対象なわけです。
そうすると、「登録されたユーザであろうがなかろうが、全てのエントリの参照を許可する」ので、「上位のユーザ」とか関係ないってことになりますね。

そして参考にもありますが
引用:
by以降に記述されている条件は順番に処理され、条件にマッチするとそれ以降の条件は処理されません。記述する順番には注意が必要です。
と、「by * none」が評価される前に、(認証前の)全てのアクセスに対して読み取り許可を付与する条件がマッチしていますので、「それ以外は拒否」が発動しません。

というところでどうでしょうか?
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2017-5-23 22:24
cadlyus  新米   投稿数: 2
arashi1977さん、こんばんは。
返信が遅くなってしまい、すみません。
回答ありがとうございました!
引用:
arashi1977さんは書きました:

勘違いしてはいけないのは、anonymousは「匿名のユーザ」ではなく、「認証前のユーザ」であることですね。

「access to * by anonymous read」というアクセス制限は「認証前のユーザに対して、全てのエントリの読み取りを許可する」ということです。認証前のユーザということは、OpenLDAPで管理している(アクセス制限可能な)ユーザ以外も対象なわけです。
そうすると、「登録されたユーザであろうがなかろうが、全てのエントリの参照を許可する」ので、「上位のユーザ」とか関係ないってことになりますね。
なるほど!
ユーザが登録されているかどうかは関係ないということですね。

よくよく考えてみると、
LDAPサーバにアクセス要求 → アクセス許可判定(ここでユーザ認証) → LDAPサーバアクセス
という流れであるため、認証されていないユーザ(anonymous)を許可していれば、ユーザ認証以前に許可されますね。
引用:
そして参考にもありますが
引用:
by以降に記述されている条件は順番に処理され、条件にマッチするとそれ以降の条件は処理されません。記述する順番には注意が必要です。
と、「by * none」が評価される前に、(認証前の)全てのアクセスに対して読み取り許可を付与する条件がマッチしていますので、「それ以外は拒否」が発動しません。

というところでどうでしょうか?
認証時に「access to * by anonymous read」で引っかかってしまうため、「by * none」は発動しないんですね。
確かにそれですと、「access to * by * read」と同じ動作になりますね。(実質すべてのアクセスに対して許可)

色々調べてもなかなか分からず、モヤモヤしておりましたがやっと理解できました。
arashi1977さん、改めて回答ありがとうございました。

  >フォーラム検索へ


Copyright (c) 2020 Ping-t All rights reserved.