Here is my access list in a template form:
dn: olcDatabase={1}hdb,cn=config
changetype: modify
replace: olcAccess
# limit access to directory manager to local host only and specific manager ip's
olcAccess: to dn.base="cn=admin,dc=,dc="
by peername.ip=127.0.0.1 auth
by sockurl=ldapi:/// auth
by peername.ip=<manager IP> auth
by users none
by anonymous none
#Allow admin users full access to all attrs
#Allow OpenLDAP2 Sync User read access to all
#Everyone else, continue
olcAccess: to *
by peername.ip=172.16.0.0%255.255.0.0 dn="uid=adminuser,dc=,dc=" manage
by peername.ip=<secondary ldap server ip> dn="uid=syncuser,ou=Service_Logins,dc=,dc=" read
by peername.ip=<third ldap server ip> dn="uid=syncuser,ou=Service_Logins,dc=,dc=" read
by * break
#Handle password fields, for all possible entities. No further processing for these attributes
olcAccess: to attrs=userPassword,shadowLastChange filter=(&(objectClass=shadowAccount)(!(shadowInactive=1)))
by self =w
by sockurl=ldapi:/// auth
by peername.ip=172.16.0.0%255.255.0.0 auth
by peername.ip=127.0.0.1 group.exact="cn=localadmingroup,dc=,dc=" manage
by group.exact="cn=admingroup,dc=,dc=" write
by * none
#Specific processing for an Account
#Everyone else, continue
olcAccess: to attrs=attr1,attr2
by dn="uid=account1,ou=Service_Logins,dc=,dc=" read
by * break
#Specific processing for a Group
#Everyone else, continue
olcAccess: to attrs=attr3,attr4
by group.exact="cn=group1,out=Group,dc=,dc=" manage
by * break
#Handle SELF writable fields
#Everyone else, continue
olcAccess: to attrs=loginShell,mailRoutingAddress,additionalattrs
by self write
by * break
#Handle more restrictive fields
#Stop processing on match
olcAccess: to attrs=audio,attr5,attr6,attr7
filter=(&(matchTrue=1)(objectClass=Person))
by * none
#Handle Anonymous Allowed fields
#Stop Processing on Match
olcAccess: to attrs=attr8,attr9,attr10
by * read
#Handle User Allowed Fields
#Stop Processing on Match
olcAccess: to dn.subtree="dc=,dc=" attrs=audio
by users read
#Hide additional superuser accounts in directory
olcAccess: to attrs=entry filter=(|(ou=Service_Logins)(uid=logins))
by * none
#Allow access to specific objectclasses
olcAccess: to filter=(|(objectClass=nisDomainObject)(objectClass=nisNetGroup)(objectClass=posixGroup)(objectClass=groupOfUniqueNames)(objectClass=organizationalUnit))
by * read
#Allow access to directory entries. Required to query directory when using default deny policy
olcAccess: to dn.subtree="dc=,dc="
attrs=entry,objectClass
by * read
#Default Deny
olcAccess: to *
by * none