Re: Schema for posixGroup successor (RFC 2307 bis)
Andrew Findlay <[email protected]> Thu, 12 Feb 2015 12:54:36 +0000
| Newsgroups | gmane.ietf.ldapext |
|---|---|
| Message-ID | <[email protected]> |
On Thu, Feb 12, 2015 at 12:53:00PM +0100, Michael Ströder wrote: > Could you please go ahead pushing draft-findlay-ldap-groupofentries? OK. I won't have much time for this over the next month, but as a start I attach the original draft and a summary of the discussions surrounding it. The draft itself is quite simple, in that it proposes a group class that is very similar to the existing groupOfNames. The can of worms it opened up is not so easy to fix however :-) The main issues relate to nesting of groups: what it means, whether it should be allowed in a given case, and how clients and servers might split the work in dealing with potentially-nested groups. Some of the more likely solutions to those problems would remove the 'member' attribute from the groupOfEntries class, thus breaking your proposal... Here is the discussion summary: ----------------------------------------------------------------------- draft-findlay-ldap-groupofentries-00.txt discussion summary 2007-09-24 ====================================================================== On September 17th I introduced an I-D to create an LDAP group class that was capable of representing an empty group. The initial proposal was for the smallest possible change from the existing groupOfNames class. Most people who joined the discussion on [email protected] were broadly in support of allowing empty groups, though some thought that any changes away from the status quo were doomed to fail. Howard Chu pointed out that groupOfUniqueNames is even worse than groupOfNames as the LDAP syntax for the nameAndOptionalUID attribute type cannot be parsed reliably. Kurt Zeilenga provided much detailed editorial advice, and posed a question about how to handle groups where the DSA is unwilling or unable to return some or all member names. Luke Howard suggested that the behaviour of nested groups should be defined. I was initially against an explicit definition, but was soon persuaded that there could be significant performance and security problems with ad-hoc nesting. At this point the discussion moved almost entirely to the consideration of nesting issues. Pete Rowley wanted an interface to be used by read-only clients to find out what groups a particular entry is a member of without caring about how the groups are defined. He suggested a memberOf attribute (presumably server-maintained) for this purpose. Michael Liben also liked this approach. Simo Sorce proposed a control for server-side group expansion, and Michael Ströder suggested that an extended operation for asking specific membership questions would be better. Howard Chu suggested that any such operation would need a depth limit parameter. Steven Legg proposed directMember and nestedGroups attributes, and Michael Ströder suggested that these might be a sufficient set to describe nested groups. I wondered whether nested groups should be split into those that could in turn have their own nested groups and those that could not, but Simo Sorce thought that people would never choose to use the more restrictive case. I was initially against dropping the original 'member' attribute, but Steven pointed out that having a new directMember attribute would allow people to define their own group classes and still take advantage of defined nesting semantics. Current situation ================= It seems to me that we now have these threads of development: 1) A new structural group class that can represent empty groups. This could go forward with the existing ambiguous member attribute or it could become the basis of a group representation with more carefully defined semantics using directMember. 2) A new auxiliary class and one or more attributes to represent groups that may contain other groups. For this to make much sense it would require the well-defined version of (1). In (1) and (2) I see the definitions of the attributes being the key, and would avoid requiring the use of the object classes to obtain the defined semantics. 3) A new control or extended operation so that a client can ask the server to do the heavy lifting involved with nested groups. 4) A new server-maintained attribute called memberOf to give an alternative way for clients to ask for membership information. AD already has such an attribute, and Pierangelo Masarati recently proposed one for OpenLDAP so there may be useful existing work to build on. 5) A document explaining why groupOfUniqueNames, uniqueMember and nameAndOptionalUID are bad, possibly leading to them being deprecated in the next revision of the core LDAP standards. I am willing to co-ordinate work on (1) and (2). Are there volunteers to take on the others? ----------------------------------------------------------------------- Andrew -- ----------------------------------------------------------------------- | From Andrew Findlay, Skills 1st Ltd | | Consultant in large-scale systems, networks, and directory services | | http://www.skills-1st.co.uk/ +44 1628 782565 | ----------------------------------------------------------------------- _______________________________________________ Ldapext mailing list [email protected] https://www.ietf.org/mailman/listinfo/ldapext
draft-findlay-ldap-groupofentries-00.txt
(text/plain, 8.1 KB)
Network Working Group A. Findlay
Internet-Draft Skills 1st Ltd
Expires: March 16, 2008 September 13, 2007
The LDAP groupOfEntries object class
draft-findlay-ldap-groupofentries-00
Status of this Memo
By submitting this Internet-Draft, each author represents that any
applicable patent or other IPR claims of which he or she is aware
have been or will be disclosed, and any of which he or she becomes
aware will be disclosed, in accordance with Section 6 of BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as Internet-
Drafts.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html.
This Internet-Draft will expire on March 16, 2008.
Copyright Notice
Copyright (C) The IETF Trust (2007).
Abstract
This memo describes the LDAP groupOfEntries object class which is a
replacement for the existing groupOfNames class. The new class
permits the creation of empty groups.
If approved as a Standards Track document, this document will update
RFC4519 [2]
Document Intent
This document is intended to be, after appropriate review and
revision, submitted to the RFC Editor as a Standards Track document.
Distribution of this memo is unlimited. Technical discussion of this
document will take place on the IETF LDAP Extensions mailing list
<[email protected]>. Please send editorial comments directly to the
author <[email protected]>
1. Introduction
A groupOfNames object class has existed since the earliest X.521 [1]
standard. It has an identical definition in LDAP (RFC4519 [2]). The
class is used to define entries holding DN-valued member attributes,
each value pointing to an entry that represents a single member of
the group being described, or to another entry of type groupOfNames.
groupOfNames is a structural object class, so it is often the only
class used in the definition of group objects.
Experience has shown that the definition of groupOfNames causes
difficulties in practice. In particular, the fact that 'member' is a
mandatory attribute means that it is not possible to create an empty
group or to delete the last member from a group. This leads to
artificial tricks such as making every group a member of itself, or
adding a dummy member to every group when it is created. These
tricks in turn make the management of groups more complex and prone
to error. Groups are commonly used to control access to resources,
so management errors can lead to security risks.
There does not appear to be any good reason for the 'member'
attribute to be mandatory. This memo describes a new object class
called groupOfEntries that is equivalent to groupOfNames in all other
respects but which makes 'member' an optional attribute.
2. The existing groupOfNames object class
RFC4519 [2] contains this definition:
The 'groupOfNames' object class is the basis of an entry that
represents a set of named objects including information related to
the purpose or maintenance of the set. (Source: X.521 [1])
( 2.5.6.9 NAME 'groupOfNames'
SUP top
STRUCTURAL
MUST ( member $
cn )
MAY ( businessCategory $
seeAlso $
owner $
ou $
o $
description ) )
The inclusion of 'member' in the 'MUST' section of the definition
prevents empty groups from being created.
3. The groupOfEntries object class
The 'groupOfEntries' object class is the basis of an entry that
represents a set of named objects including information related to
the purpose or maintenance of the set. It should be used in
preference to the 'groupOfNames' object class.
( 1.2.826.0.1.3458854.2.1.1.1 NAME 'groupOfEntries'
SUP top
STRUCTURAL
MUST ( cn )
MAY ( member $
businessCategory $
seeAlso $
owner $
ou $
o $
description ) )
This object class allows groups to be empty. In all other respects
it behaves like the groupOfNames object class.
The OID assigned to this object class is delegated by Skills 1st Ltd.
4. Effect on other documents
This draft deprecates the use of the groupOfNames object class in
RFC4519 [2] and replaces it with the groupOfEntries class.
5. IANA considerations
It is requested that IANA register upon Standards Action the
groupOfEntries Object Identifier Descriptor and its associated OID.
6. Security considerations
Groups are commonly used to define access permissions to directory
entries and resources in other services. Allowing for empty groups
avoids the risks associated with leaving a dummy placeholder member
in group entries, so security is improved.
Appendix A. Acknowledgements
The author gratefully acknowledges the contributions of Michael
Stroeder to the first draft of this document.
7. Informative References
[1] "The Directory: Selected Object Classes", ITU-T
Recommendation X.521, March 1988.
[2] "LDAP: Schema for User Applications", RFC 4519, June 2006.
Author's Address
Andrew Findlay
Skills 1st Ltd
2 Cedar Chase
Taplow
Maidenhead SL6 0EU
GB
Phone: +44 1628 782565
Email: [email protected]
URI: http://www.skills-1st.co.uk/
Full Copyright Statement
Copyright (C) The IETF Trust (2007).
This document is subject to the rights, licenses and restrictions
contained in BCP 78, and except as set forth therein, the authors
retain all their rights.
This document and the information contained herein are provided on an
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Intellectual Property
The IETF takes no position regarding the validity or scope of any
Intellectual Property Rights or other rights that might be claimed to
pertain to the implementation or use of the technology described in
this document or the extent to which any license under such rights
might or might not be available; nor does it represent that it has
made any independent effort to identify any such rights. Information
on the procedures with respect to rights in RFC documents can be
found in BCP 78 and BCP 79.
Copies of IPR disclosures made to the IETF Secretariat and any
assurances of licenses to be made available, or the result of an
attempt made to obtain a general license or permission for the use of
such proprietary rights by implementers or users of this
specification can be obtained from the IETF on-line IPR repository at
http://www.ietf.org/ipr.
The IETF invites any interested party to bring to its attention any
copyrights, patents or patent applications, or other proprietary
rights that may cover technology that may be required to implement
this standard. Please address the information to the IETF at
[email protected].
Acknowledgment
Funding for the RFC Editor function is provided by the IETF
Administrative Support Activity (IASA).