Re: [ldapext] DBIS - new IETF drafts

Andrew Findlay <> Thu, 09 January 2014 18:09 UTC

Return-Path: <>
Received: from localhost ( []) by (Postfix) with ESMTP id DE6671ADFF3 for <>; Thu, 9 Jan 2014 10:09:04 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.602
X-Spam-Status: No, score=-1.602 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, MIME_8BIT_HEADER=0.3, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] autolearn=no
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id IzanDi5ruZq2 for <>; Thu, 9 Jan 2014 10:09:03 -0800 (PST)
Received: from ( [IPv6:2001:470:1f15:20::201]) by (Postfix) with ESMTP id AB12D1AE078 for <>; Thu, 9 Jan 2014 10:09:02 -0800 (PST)
Received: from ([2001:8b0:8d0:f7e1:b46a:19f4:7c3b:2519] by with esmtpsa (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.72) (envelope-from <>) id 1W1K2G-00063h-N5; Thu, 09 Jan 2014 18:08:52 +0000
Received: from andrew by with local (Exim 4.80.1) (envelope-from <>) id 1W1K2F-0006Ca-Ub; Thu, 09 Jan 2014 18:08:51 +0000
Date: Thu, 9 Jan 2014 18:08:51 +0000
From: Andrew Findlay <>
To: Michael =?iso-8859-1?Q?Str=F6der?= <>
Message-ID: <>
References: <> <> <>
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <>
User-Agent: Mutt/1.5.21 (2010-09-15)
Sender: Andrew Findlay <>
Subject: Re: [ldapext] DBIS - new IETF drafts
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: LDAP Extension Working Group <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Thu, 09 Jan 2014 18:09:05 -0000

On Thu, Jan 09, 2014 at 04:48:37PM +0100, Michael Ströder wrote:

> > Nested groups are very important especially in large enterprises, and really
> > do assist with data management.
> I am always getting told this but I have strong doubts about nested groups.

Groups are usually there to define permissions - the Authorisation
part of the AAA triple. Allowing nested groups helps to decouple
individual users from individual permissions. For example:

	The Helpdesk group contains a, b, c, d
	The SysManagers group contains e, f
	The PasswordRestKiosk group contains j, k, l, m
	The AccountProvisioning group contains p

I can now write permission rules like:

	Members of Helpdesk, PasswordRestKiosk, AccountProvisioning may set user passwords
	Members of SysManagers may set system-account passwords
	Members of Helpdesk, AccountProvisioning may change user contact data

where each of the rules is expressed as a group whose members are
other groups. It is easy to explain such rules, and easy to maintain
them as they are visibale as data in the LDAP tree.
I think this is a lot better than maintaining flat groups like:

	UserPasswordSetGroup contains a, b, c, d, j, k, l, m, p
	SysPasswordResetGroup contains e, f
	UserContactModifyGroup contains a, b, c, d, p

> >  Yes we'll get more search operations, but I
> > don't think this will be a problem.  I should be able to prove this will work
> > in my reference implementation.
> Resolving nested group membership is a big performance cost. I can see this
> with a MS Sharepoint installation working with a OpenLDAP server. Sharepoint
> sends many search requests even though nested groups are not used in this
> deployment.

That is because there is no standard schema for nested groups, so
there is no server-side support to make them efficient. [In fact
many LDAP server implementations do define their own nesting
schemes, but I don't think any of them are shared with other
unrelated implementations.]

You and I started trying to sort this out after the first LDAP
conference, but the effort got bogged down. Maybe we should dust off
the drafts and see if anything can be salvaged.

> Also nested groups are a pain if you want to report all effective user rights
> to auditors (which is something banks have to do at least once per year). In
> this context even maintaining the group membership does not look that simple
> anymore.

I don't see that it adds much to the work. If the server supports
nested groups then it is a single query; otherwise it is a series of
derefs. (I am assuming a simple two-level nesting here as I can see
many uses for that without making the rules too complex.)

|                 From Andrew Findlay, Skills 1st Ltd                 |
| Consultant in large-scale systems, networks, and directory services |
|                +44 1628 782565     |