Ski Kacoroski wrote:
Ok,

I think I it mostly figured out for my particular case. I would appreciate any comments (and improvements) on the following set of ACLs which limit access to a staff object in my directory. I am very interested if there is a best practice way on how to provide different levels of access to different attributes of an object. Once I get this down, I will add something the FAQ. Thanks in advance for your help.

Not relevant to your ACLs, but something to put in the FAQ: every ACL is followed by an implicit "by * none", so any ACL later in the list which applies in the same scope as a previous ACL will not be effective. (So if you were to put your last ACL, below, first then it would be the only one that was effective unless you specified "by * break".)

# Basic setup ACL's
# Allow everyone to access base dn to set up a connection
access to dn.base=""
  by * read

# Allow everyone to access all entries
access to attrs=entry
  by self write
  by * read

# password only can be changed by self and admins
access to attrs=userPassword
  by anonymous auth
  by group/nsdGrp/memberURL="cn=Admins,ou=Groups,dc=nsd,dc=org" write
  by self write
  by * none

# Staff tree ACLs
# everyone can read these attributes, admins can write
access to dn.subtree="ou=staff,ou=People,dc=nsd,dc=org" attrs=cn,givenName,sn,mail,displayName
  by group/nsdGrp/memberURL="cn=Admins,ou=Groups,dc=nsd,dc=org" write
  by * read

# everyone can read these attributes, admins and self can write
access to dn.subtree="ou=staff,ou=People,dc=nsd,dc=org" attrs=nsdPrefLastName,nsdPrefFirstName
  by group/nsdGrp/memberURL="cn=Admins,ou=Groups,dc=nsd,dc=org" write
  by self write
  by * read

# all authenticated people can read, admins can write
access to dn.subtree="ou=staff,ou=People,dc=nsd,dc=org" attrs=nsdMobilePhone,nsdAltPhone,nsdGeneralPhone,nsdPhoto
  by group/nsdGrp/memberURL="cn=Admins,ou=Groups,dc=nsd,dc=org" write
  by users read
  by * search

# all authenticated people can read, admins & self can write
access to dn.subtree="ou=staff,ou=People,dc=nsd,dc=org" attrs=nsdPersonalEmail,nsdPersonalPhone,nsdPersonalMobilePhone
  by group/nsdGrp/memberURL="cn=Admins,ou=Groups,dc=nsd,dc=org" write
  by self write
  by users read
  by * search

# self can read these attributes, admins can write
access to dn.subtree="ou=staff,ou=People,dc=nsd,dc=org" attrs=nsdEmployeeNumber,nsdBargainUnit,nsdPCN
  by group/nsdGrp/memberURL="cn=Admins,ou=Groups,dc=nsd,dc=org" write
  by self read
  by * search

# for everything else, only admins can read & write
access to *
  by group/nsdGrp/memberURL="cn=Admins,ou=Groups,dc=nsd,dc=org" write
  by * search

cheers,

ski


--
Perfection is just a word I use occasionally with mustard.
--Atom Powers--
Systems Administrator
DigiPen Institute of Technology
(425) 895-4443

Reply via email to