]> git.sur5r.net Git - openldap/blobdiff - doc/guide/admin/slapdconfig.sdf
clarify "by anonymous auth" semantics
[openldap] / doc / guide / admin / slapdconfig.sdf
index dd5ab6cbfdf3157883300e048d4e9be6b5829e8d..1b38b5fd402083c7d2c5e0869ebcca3535b332cb 100644 (file)
@@ -1,5 +1,5 @@
 # $OpenLDAP$
-# Copyright 1999-2000, The OpenLDAP Foundation, All Rights Reserved.
+# Copyright 1999-2003, The OpenLDAP Foundation, All Rights Reserved.
 # COPYING RESTRICTIONS APPLY, see COPYRIGHT.
 
 H1: The slapd Configuration File
@@ -589,7 +589,8 @@ H3: What to control access to
 
 The <what> part of an access specification determines the entries
 and attributes to which the access control applies.  Entries are
-commonly selected in two ways: by DN and by filter.
+commonly selected in two ways: by DN and by filter.  The following
+qualifiers select entries by DN:
 
 >      by *
 >      by dn[.<basic-style>]=<regex>
@@ -599,7 +600,9 @@ The first form is used to select all entries.  The second form may
 be used to select entries by matching a regular expression against
 the target entry's {{normalized DN}}.   (The second form is not
 discussed further in this document.)  The third form is used to
-select entries which are within the requested scope of DN.
+select entries which are within the requested scope of DN.  The
+<DN> is a string representation of the Distinguished Name, as
+described in {{REF:RFC2253}}.
 
 The scope can be either {{EX:base}}, {{EX:one}}, {{EX:subtree}},
 or {{EX:children}}.  Where {{EX:base}} matches only the entry with
@@ -647,11 +650,13 @@ There are two special {{psuedo}} attributes {{EX:entry}} and
 {{EX:children}}.  To read (and hence return) an target entry, the
 subject must have {{EX:read}} access to the target's {{entry}}
 attribute.  To add or delete an entry, the subject must have
-{{EX:write}} access to the entry's parent's {{EX:children}} attribute.
-To rename an entry, the subject must have {{EX:write}} access to
-both the old parent's and new parent's {{EX:children}} attributes.
-The complete examples at the end of this section should help clear
-things up.
+{{EX:write}} access to the entry's {{EX:entry}} attribute AND must
+have {{EX:write}} access to the entry's parent's {{EX:children}}
+attribute.  To rename an entry, the subject must have {{EX:write}}
+access to entry's {{EX:entry}} attribute AND have {{EX:write}}
+access to both the old parent's and new parent's {{EX:children}}
+attributes.  The complete examples at the end of this section should
+help clear things up.
 
 Lastly, there is a special entry selector {{EX:"*"}} that is used to
 select any entry.  It is used when no other {{EX:<what>}}
@@ -677,14 +682,9 @@ dn.<scope-style>=<DN>|Users within scope of a DN
 
 The DN specifier behaves much like <what> clause DN specifiers.
 
-Other control factors are also supported.
-For example, a {{EX:<who>}} can be restricted by a
-regular expression matching the client's domain name:
-
->      domain=<regular expression>
-
-or by an entry listed in a DN-valued attribute in the entry to
-which the access applies:
+Other control factors are also supported.  For example, a {{EX:<who>}}
+can be restricted by an entry listed in a DN-valued attribute in
+the entry to which the access applies:
 
 >      dnattr=<dn-valued attribute name>
 
@@ -693,6 +693,10 @@ whose DN is listed in an attribute of the entry (e.g., give
 access to a group entry to whoever is listed as the owner of
 the group entry).
 
+Some factors may not be appropriate in all environments (or any).
+For example, the domain factor relies on IP to domain name lookups.
+As these can easily spoofed, the domain factor should not be avoided.
+
 
 H3: The access to grant
 
@@ -767,11 +771,12 @@ This access directive grants read access to everyone.
 >              by anonymous auth
 >              by * read
 
-This directive allows users to modify their own entries, allows
-authenticate, and allows all others to read.  Note that only the
-first {{EX:by <who>}} clause which matches applies.  Hence, the
-anonymous users are granted {{EX:auth}}, not {{EX:read}}.  The last
-clause could just as well have been "{{EX:by users read}}".
+This directive allows the user to modify their entry, allows anonymous
+to authentication against these entries, and allows all others to
+read these entries.  Note that only the first {{EX:by <who>}} clause
+which matches applies.  Hence, the anonymous users are granted
+{{EX:auth}}, not {{EX:read}}.  The last clause could just as well
+have been "{{EX:by users read}}".
 
 It is often desirable to restrict operations based upon the level
 of protection in place.  The following shows how security strength
@@ -784,10 +789,12 @@ factors (SSF) can be used.
 
 This directive allows users to modify their own entries if security
 protections have of strength 128 or better have been established,
-allows simple authentication and read access when 64 or better
-security protections have been established.
+allows authentication access to anonymous users, and read access
+when 64 or better security protections have been established.  If
+client has not establish sufficient security protections, the
+implicit {{EX:by * none}} clause would be applied.
 
-The following example shows the use of a regular expression
+The following example shows the use of a style specifiers
 to select the entries by DN in two access directives where
 ordering is significant.
 
@@ -818,7 +825,7 @@ attribute and various {{EX:<who>}} selectors.
 >      access to dn.subtree="dc=example,dc=com" attr=homePhone
 >              by self write
 >              by dn.children=dc=example,dc=com" search
->              by domain=.*\.example\.com read
+>              by peername=IP:10\..+ read
 >      access to dn.subtree="dc=example,dc=com"
 >              by self write
 >              by dn.children="dc=example,dc=com" search
@@ -831,9 +838,9 @@ by them, anybody else has no access (implicit {{EX:by * none}})
 excepting for authentication/authorization (which is always done
 anonymously).  The {{EX:homePhone}} attribute is writable by the
 entry, searchable by entries under {{EX:example.com}}, readable by
-clients connecting from somewhere in the {{EX:example.com}} domain,
-and otherwise not readable (implicit {{EX:by * none}}).  All other
-access is denied by the implicit {{EX:access to * by * none}}.
+clients connecting from network 10, and otherwise not readable
+(implicit {{EX:by * none}}).  All other access is denied by the
+implicit {{EX:access to * by * none}}.
 
 Sometimes it is useful to permit a particular DN to add or
 remove itself from an attribute. For example, if you would like to