[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: New ACL model and test operations



Sébastien Bahloul wrote:

Hello,

First point : I am looking to integrate a new ACL model in OpenLDAP.

The main idea of this model is that relationship between entries is the main key of authorizing to search or modify entries. So i thought of a relation oriented ACL model. It has not be concepted to replace ACL or ACI, but to fill the gap between ACL and ACI !

The choice to use entries to store these new ACL may also be reused : by using LDAP entries, ACL are synchronized between master and slaves.

I give a first try (which is located at Sourceforge - aacls.sourceforge.net) which is now in beta stage. It has been designed as a backend but i don't think now that this was the good choice.

So i want to know if it could be interesting to rewrite and integrate it in OpenLDAP.

The second point is about test operations : the main idea is, if the directory is able to know when authenticated users are authorized to write on a attribute, to create or to delete an entry, administration interfaces could use these information to generate pages. So what do you think about implementing a LDAP extended operation which can test a particular right (i.e. right to modify the attribute of a special entry, depending of the authenticated user) ?

(the test write operation is also part of the first try publicated on SourceForge)

I haven't read your document carefully enough, yet, to comment on the contents, but your idea sounds interesting. Let me anticipate that attepts to write new ACL models are currently underway, you may want to compare with them; check for instance this thread: http://www.openldap.org/lists/openldap-devel/200407/msg00000.html
First of all, I suggest you work with CVS HEAD code rather than with some (very outdated) release. If you work with CVS code it should be much easier t keep your implementation up to date.
Another suggestion is that you try to develop your implementation as an overlay rather than as a patch; the straightforward approach would be to use a directive "access to * by * write", then control the actuall access rights by trapping each operation and applying your own controls, reducing the ampunt of information accessed accordingly. However, as a possible develoment, it might be worth extending the overlay mechanism by adding some ACL handling capabilities, e.g. something similar to ACIs syntax. I'm thinking for instance of adding an "overlay" <by> clause, such that


access to *
 by overlay write

passes the overlay mechanism arbitrary access control to an entry (or portions of it, as dictated by the attrs[.val] specification); then overlays could be allowed an access_allowed_mask() function that returns the mask associated to the combination of (sub)target and user.

Finally, to implement the access testing feature, you might be interested in looking at the slapacl(8) tool that is currently available in HEAD code; you could design an extended operation based on that principle. Frankly, I don't see a general way to assess the permissions on data; the mechanism used in slapacl(8) is the only complete way to assess the access to a specific piece of data, but to me it looks rather impractical. However, if the purpose is to let a well-designed client to assess in advance, on a limited set of attributes and for a limited set of entries what access te current user has, I can see room for perfoming a limited number of extended operations.

p.






SysNet - via Dossi,8 27100 Pavia Tel: +390382573859 Fax: +390382476497