Re: [ldapext] empty-groupOfNames-issue

Simo Sorce <simo@redhat.com> Fri, 04 December 2015 15:56 UTC

Return-Path: <simo@redhat.com>
X-Original-To: ldapext@ietfa.amsl.com
Delivered-To: ldapext@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id D38731A88CB for <ldapext@ietfa.amsl.com>; Fri, 4 Dec 2015 07:56:49 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.911
X-Spam-Level:
X-Spam-Status: No, score=-6.911 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_HI=-5, SPF_HELO_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id F9DTZdP-EA1v for <ldapext@ietfa.amsl.com>; Fri, 4 Dec 2015 07:56:48 -0800 (PST)
Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id F157F1A88CF for <ldapext@ietf.org>; Fri, 4 Dec 2015 07:56:46 -0800 (PST)
Received: from int-mx14.intmail.prod.int.phx2.redhat.com (int-mx14.intmail.prod.int.phx2.redhat.com [10.5.11.27]) by mx1.redhat.com (Postfix) with ESMTPS id 8DEC447D5; Fri, 4 Dec 2015 15:56:46 +0000 (UTC)
Received: from willson.usersys.redhat.com ([10.3.113.3]) by int-mx14.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id tB4Fui64031257 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Fri, 4 Dec 2015 10:56:45 -0500
Message-ID: <1449244604.3445.65.camel@redhat.com>
From: Simo Sorce <simo@redhat.com>
To: Andrew Findlay <andrew.findlay@skills-1st.co.uk>
Date: Fri, 04 Dec 2015 10:56:44 -0500
In-Reply-To: <20151204152510.GG3643@slab.skills-1st.co.uk>
References: <5661765D.6040603@stroeder.com> <20151204134757.GE3643@slab.skills-1st.co.uk> <56619F0A.8060608@stroeder.com> <20151204152510.GG3643@slab.skills-1st.co.uk>
Organization: Red Hat, Inc.
Content-Type: text/plain; charset="UTF-8"
Mime-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Scanned-By: MIMEDefang 2.68 on 10.5.11.27
Archived-At: <http://mailarchive.ietf.org/arch/msg/ldapext/fRxyEHnOpu_7dRWDIxVRkPfkdsY>
Cc: ldapext <ldapext@ietf.org>, Michael Ströder <michael@stroeder.com>
Subject: Re: [ldapext] empty-groupOfNames-issue
X-BeenThere: ldapext@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: LDAP Extension Working Group <ldapext.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/ldapext>, <mailto:ldapext-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/ldapext/>
List-Post: <mailto:ldapext@ietf.org>
List-Help: <mailto:ldapext-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/ldapext>, <mailto:ldapext-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 04 Dec 2015 15:56:50 -0000

On Fri, 2015-12-04 at 15:25 +0000, Andrew Findlay wrote:
> On Fri, Dec 04, 2015 at 03:11:22PM +0100, Michael Ströder wrote:
> 
> > Do you think that a complete replacement RFC _obsoleting_ RFC 4519 would be
> > needed?  If the ldapext community would agree on changing the standard wouldn't
> > a small RFC _updating_ RFC 4519 also be sufficient?
> 
> That may be possible, but I don't know enough about the conventions to
> be sure.
> 
> > Please let us keep the scope limited to the empty-groupOfNames-issue.  I'm not
> > keen on opening the can-of-worms on semantics of nested groups.
> 
> Indeed. That needs tackling in due course, but it is a much bigger problem.
> 
> > >> http://tools.ietf.org/html/draft-findlay-ldap-groupofentries
> > >>
> > >> + Very simple
> > >> + Fully compliant to standardization best practices
> > >>
> > >> - It's not clear whether it was widely adopted in deployments.
> > > 
> > > Maybe not in the exact form I described in that I-D, but functionally
> > > equivalent objectclasses have been in most of my customers' systems.
> > > It could be argued that the corrupted form of groupOfNames described
> > > above is actually proof of widespread deployment of an analogous class.
> > 
> > Hmm, the wording gets a bit blurry here.
> > How would you explain the clear distinction between 1. and 2.?
> 
> There are exacly 2 differences between groupOfNames and groupOfEntries:
> 
> 1)	the member attribute is mandatory in groupOfNames but
> 	optional in groupOfEntries
> 
> 2)	the name and OID are different
> 
> In practical terms, groupOfEntries is better because it allows for
> empty groups. The benefits are:
> 
> a)	Empty groups are reasonable things to have: the need for a group
> 	does not disappear just because there are no current members.
> 
> b)	Forcing groups to always contain at least one entry causes
> 	management systems to do silly things like adding an entry for
> 	a non-existent member or even making the group recursively a
> 	member of itself. These workarounds for the broken definition
> 	can cause security problems as well as just being awkward.
> 	There is no defined convention for doing this, so identifying
> 	the dummy member can be difficult. If several management systems
> 	can modify the same entry it is possible that it will accumulate
> 	several dummy members.
> 
> Changing the existing groupOfNames to make member an optional attribute
> does not solve the problem:
> 
> p)	Existing management systems will continue to add dummy members
> 	but new ones will not know what to do about such values.
> 
> q)	New management systems will have to check the schema definition
> 	to find out whether member is mandatory or not.
> 
> In effect, groupOfNames has been corrupted and is no longer a portable
> objectclass.

I do not agree with this conclusion.
Realxing the constraint from MUST to MAY is forward compatible, and
older tools can keep doing what they always did.

Given there is no provision in the old or new groupOfNames to have
members that "make sense", software always need to be prepared to deal
with bogus members, so p) is not a "problem to solve".

You may have a point with q) if you want to deal with a generic
management system, but then your proposal to create a new objectlcass
adds exactly the same problem, as the management system need to know
what to use, except it makes it worse in 2 ways:
1) you have no way to find out what to do just by inspecting the schema
because both classes may be in the schema, which do you choose ?
2) you have to change all client applications that are hardcoded to use
groupOfNames

Looking at 1) and 2) then q) is a comparatively little price to pay.

> On the other hand, the corrupt version of groupOfNames does serve as
> a proof that groupOfEntries is desired by the community because it is
> functionally identical.

Yet it is not identical, see 2) above.

Simo.

-- 
Simo Sorce * Red Hat, Inc * New York