Re: LDAP Groups topic split-out
Jordan Brown <[email protected]> Thu, 3 Dec 2015 16:33:38 -0800
| Newsgroups | gmane.ietf.ldapext |
|---|---|
| Message-ID | <[email protected]> |
On 12/3/2015 3:12 PM, Charlie wrote: > After reading David Foster Wallace on set theory, I wrote an RFC a > couple years back to address the lack of a generic or globally useful > grouping mechanism in LDAP-accessible directories. Comments are > welcomed. > > http://typinganimal.net/rants/textify.php?f=draft-brooks-ldap-sets-00.txt 3.1. Properly, Boy Scout and Scout are capitalized. In the general case, I'd say that it's equally correct to say that the list of Scouts is an attribute of the troop and to say that membership in the troop is an attribute of the particular Scout. It's an N:M relationship; it can be approached from either direction. (I had not realized until I got to the discussion in D.2 that a mailing list was best served by member-of attributes. One would think that it would be best served by a member-list attribute, but you're absolutely correct that using a member-of attribute reduces the number of queries in the common case.) For an indexed database, it's probably OK to represent the relationship in either direction. For a database that understands the relationship, the relationship might be visible on both sides and the connection automatically maintained. For simpler databases, indeed maintaining "member-of" is probably better, both because it's convenient for the common queries and because it's probably a smaller list than the "members" list. (But note: it's not at all obvious which variation is better from an access control standpoint. Is it more likely that you will want to hide the membership of group X, or the list of groups that user Y is a member of? Presumably if you want to do either, then you need to ensure that that membership linkage, however it is presented in the directory, is subject to access control restrictions.) 3.4. Empty sets are also useful in trivial cases, e.g. when creating a set and before populating, and as a possible intermediate state while adding and removing members. 3.5 I'm not convinced that "proxy" objects (which you call "dummy" objects) aren't the right answer. Directly referring to external objects assumes that there's no need for auxiliary data about those objects. (Hmm. Is there a need to describe auxiliary information about a particular membership relationship? For instance, for a mailing list, might one want to maintain a count of messages from a particular list to a particular user that have bounced?) 4.4 I'm not convinced that an undefined "scope" attribute is helpful. 4.5 psetMembership seems like overkill, though its ability to represent dynamic sets is interesting. 5.3 If recursion is always expanded by the client, there's no need for timeouts on queries to prevent DoS. The clients can decide on their own when to stop recursing. C.1, C.2 I thought that memberOfPset contained DNs. D.5 posixGroup has memberUid as a MAY attribute and so *can* represent empty sets. > If you're not up for a long-read, I would recommend just reading > "Appendix D: Other Efforts and their Shortcomings" which explains all > the attempts to date and how they've failed to gain traction. > > Projects continue to try to solve their individual problems instead of > working towards a truly generic grouping mechanism that will suit all > needs, so nothing's progressing. Simo mentioned this in the context > of FreeIPA, for example - they broke their implementation of RFC2307 > and moved on, rather than helping Andrew Findlay create a standard > that supported empty groups. It seems like each of us is focused on > our own potato patch. > Actually, here in the Solaris Naming organization, mostly our assumption is that we have to live with whatever the directory gives us, that the directory was established by the enterprise before we arrived on the scene and so our ability to influence it is minimal. We might participate in an effort such as this one to try to nudge the future in a desirable direction, but the assumption is that no one scheme will ever achieve such dominance that we can ignore the others. Of course I would be happy to be proven wrong so that we could remove a bunch of flexibility that's associated with the need to interoperate with such a variety of schemata.