q-sacl.tex
来自「ftam等标准协议服务器和客户端的源代码。」· TEX 代码 · 共 198 行
TEX
198 行
\chapter{Search Access Control}\label{disc_sacl}\index{searchACL attribute} The access control described above is sufficient to protect individualentries from unauthorized access, but it does little to protect thedirectory as a whole from ``trawling'': the disclosure of large amountsof organizational data or structure information by repeated searches.In the past, the administrative size limit was the only control on suchaccess. The search ACL is designed to allow much more flexible controlon the types on searches performed and the number of results that canbe obtained by a directory user.A search ACL belongs to a single entry and specifies restrictions onsearches involving that entry and possibly its descendants. A searchACL scope must be specified. A scope of ``subtree'' means the searchACL applies during subtree searches involving the entry and itsdescendants. Note that the subtree search must be rooted at or abovethe entry containing the search ACL for the ACL to apply. A``singlelevel'' search ACL applies only during a single level searchrooted at the entry containing the ACL. Note that the subtree andsingle level scopes are disjoint: a subtree search ACL has no bearingon a single level search and vice versa.A search ACL with scope ``baseobject'' applies to the entry during anytype of search, and can thus be used to provide discretionary accesscontrol for searches in a way similar to normal access control.The simplest and most restrictive application of a search ACL is toprevent searching on certain attribute types. For example, the followingsearch ACL would not allow anyone to perform any type of search by theuserPassword attribute in the subtree rooted at the entry containingthe search ACL (or in its children).\begin{quote}\small\begin{verbatim}sacl= others # nosearch # userPassword \ # subtree $ singlelevel\end{verbatim}\end{quote}The access selector for a search ACL is the same as for a normal QUIPUACL. Note that a search started at a point in the DIT below the entrycontaining a search ACL is not constrained by that search ACL.To allow searches by certain attributes, but to limit the number ofresults that can be returned, a search ACL like this may be used:\begin{quote}\small\begin{verbatim}sacl= others # search # commonName $ surname \ # subtree # 10 # partialresultssacl= others # nosearch # default # subtree\end{verbatim}\end{quote}This allows others to search only by the attributes commonName and surname,returning at most 10 matches. If ``trawling'' is a concern, the searchACL above can be modified to not return any results if the size limitspecified is exceeded:\begin{quote}\small\begin{verbatim}sacl= others # search # commonName $ surname \ # subtree # 10 # nopartialresultssacl= others # nosearch # default # subtree\end{verbatim}\end{quote}Note that both of the preceeding examples only restrict subtree searches.If single level searches are to be restricted also, the scope should bechanged to ``subtree \$ singlelevel.'' Note also that the attributes notspecified in another search ACL may be referred to by using the ``default''keyword. In the example above, this capability is used to disallowsearches on any attributes but commonName and surname.An individual entry may protect itself from being found by certain typesof searches by using the ``baseobject'' search ACL scope. For example,\begin{quote}\small\begin{verbatim}sacl= others # nosearch # commonName $ surname # baseobject\end{verbatim}\end{quote}Finally, it may be desirable to restrict certain types of searches belowan entry. For example, if not checked, an effective dumping technique isto do repeated searches of the form cn=a*, cn=b*, etc. This technique isnot entirely thwarted by the ``nopartialresults'' capabilitydescribed above, because a clever and determined attacker can constructrepeated range filters where the range is small enough not toexceed the size limit.As a defense against such attacks, a minimum substring key length maybe specified in a searchACL. This minimum length is also used as theminumum prefix that must be common to any range queries using the inequalityoperators. For example, a search acl like this one\begin{quote}\small\begin{verbatim}sacl= others # search # default # subtree # 10 \ # nopartialresults # 3\end{verbatim}\end{quote} specifies that others may perform subtree searches by the defaultattribute set, returning at most 10 matches. No matches will bereturned if the limit of 10 is exceeded. Furthermore, any substringqueries must contain a substring that is at least 3 characters long,and any inequality range queries must involve values whose first 3characters are the same. To see how this works, consider the followingqueries and the reason they are either accepted or rejected becausethey violate the above search ACL.\begin{tabular}{lll}Filter & Accepted? & Explanation \\\hlinecn=a* & no & maximum substring length is 1\\cn=aa* & no & maximum substring length is 2\\cn=*a* & no & maximum substring length is 1\\cn=abc* & yes & maximum substring length is 3\\cn=a*abcd* & yes & maximum substring length is 4\\(cn$>$=a \& cn$<$=b) & no & common prefix length is 0\\(cn$>$=aa \& cn$<$=ab) & no & common prefix length is 1 (a)\\(cn$>$=abcdef \& cn$<$=abcghi) & yes & common prefix length is 3 (abc)\\\end{tabular}\section{List ACL}\label{disc_lacl}\index{listACL attribute}Just as a search ACL can be used to control access to groups of entriesduring search operations, the list ACL can be used to control accessduring list operations. A list ACL may apply to an individual node, ora node's children. For example, to prevent everyone except those usersin the US from listing a particular entry, a user might add thefollowing list ACL to the entry:\begin{quote}\small\begin{verbatim}lacl= others # nolist # entrylacl= prefix # c=US # list # entry\end{verbatim}\end{quote}The access selector portion of a list ACL is the same as for a normalQUIPU ACL.A list ACL can also be used to control the listing of a node's children.In addition to specifying whether a particular user can list thechildren or not, one can specify the maximum number of children thatwill be returned by a single list operation. For example, to preventeveryone except US users from listing the children of an entry,that entry should have the following list ACL:\begin{quote}\small\begin{verbatim}lacl= others # nolist # childrenlacl= prefix # c=US # list # children\end{verbatim}\end{quote}A limit on the number of children returned from a list (10 in thisexample) may be imposed by the following:\begin{quote}\small\begin{verbatim}lacl= others # list # children # 10\end{verbatim}\end{quote}\section{Authentication Policy}\label{disc_authp}\index{authPolicy attribute}\index{authentication policy}With discretionary access control, search access control, and list accesscontrol, there is a need to authenticate the party requesting access. Itshould be specifiable on a per entry basis what form this authenticationshould take for it to be believed. For example, one trusting individualmight view no authentication as sufficient, allowing access overunauthenticated DSP links. Another user might be satisfied with simpleauthentication. Still another security conscious individual might notbe satisfied with anything less than strong authentication.In addition, there may be different authentication levels required toperform different operations. The most common example of this is someonewho will accept no or simple authentication to allow ``read'' access totheir entry, but requires simple or strong authentication to performany modifications to their entry.The authPolicy attribute is used on a per entry basis to provide thisfunctionality. It divides access into three categories: modify,read and compare, and search and list. For each category, an authenticationpolicy can be specified. For example\begin{quote}\small\begin{verbatim}authp= strong # simple # trust\end{verbatim}\end{quote}requires strong authentication for modification operations, simpleauthentication for read and compare operations, and no authenticationfor list and search operations on the entry.The default behavior is as if every entry had the following authPolicyattribute:\begin{quote}\small\begin{verbatim}authp= simple # simple # simple\end{verbatim}\end{quote}which requires simple authentication for all operations.Normally the authPolicy attribute will be inherited throughout anentire subtree of entries.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?