Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
RE: [stellation-res] Access control list inheritance behavior question

> >-----Original Message-----
> >From: stellation-res-admin@xxxxxxxxxxxxxxx
> >[mailto:stellation-res-admin@xxxxxxxxxxxxxxx]On Behalf Of Mark C.
> >Chu-Carroll
> >Sent: September 28, 2002 6:51 AM
> >To: stellation-res@xxxxxxxxxxxxxxx
> >Subject: [stellation-res] Access control list inheritance behavior
> >question
> >
> >
> >
> >I've finally got some time to implement ACLs for the repository. I'm
> >working on implementing the inheritance behavior. In the docs we've
> >written so far,  we haven't completely specified the ACL inheritance
> >behavior. There are a couple of variations, and I'm unsure of which
> >one is really what we want.
> >
> >There are three possible behaviors that make sense to me:
> >
> >(1) Inheritance as immediate copy. In this scheme, when we create a new
> >  repository entity, the ACL inheritance means that a new ACL is created
> >  for the new entity by copying the ACL of its parent. In terms of using
> >  the system, this means that modifying the ACL of the parent *never*
> >  has an effect on the child.
> >
> >(2) Inheritance as lazy copy. There are two variants here.   The
> >  behavioral effect of these is that changes to the parent ACL
> >  are reflected in the child *until* you specifically do something
> >  to make the lists be distinct.
> >
> >  (2a) Automatic ACL copy on child modification: In this scheme, when we
> >  create a new repository entity, it uses the *same* ACL as its parent.
> >  When you modify the ACL of the child, it creates a copy of the parent
> >  ACL, and modifies that.
> >
> >  (2b) Explicit ACL copy: In this scheme, when we create a new
> >   repository entity, it uses the *same* ACL as its parent. It continues
> >   to use exactly the same ACL as its parent until the user explicitly
> >   asks the system to create an ACL for the child; when the user does
> >   so, it copies the parents ACL. So until the user explicitly copies
> >   the ACL, changing the parent ACL and changing the child ACL are one
> >   and the same. Once the user copies the ACL, it behaves as in (1).
> >
> >(3) Inheritance as ACL delta. This is closest to a object inheritance
> >  behavior. Here, when you create a new repository entity, we create a
> >  a new ACL for it; and that new ACL references the parent ACL. The
> >  new ACL consists of a set of deltas against the ACL of the parent.
> >
> >  The effect of this is that changes to the parent *always* effect the
> >  ACL of the child, but changes to the child do not effect the ACL of
> >  the parent.
> >
> >Pros and cons:
> >
> >There's a lot of niceness about (3). The catch is that
> >from an administrators point of view, it's difficult to make it work so
> >that (3) does *quite* what you might expect.  For example, if as an
> >administrator, you withdraw checkin privileges for a group, that will
> >remove checkin privileges from *most* places. But here's where it'll
> >go wrong.  A user forks branch "A" off of main. For branch "A", they
> >remove checkin privileges from group "g". Then someone forks "B" off of
> >"A", and they *add* checkin privileges for group "g".  Now an
> >administrator wants to withdraw all checkin privs for "g". They do it on
> >"main", which is the parent of all the others. "g" still has
> >checkin privileges on "B". So while in theory, (3) feels right, I think
> >it's likely to cause confusion by misleading people into thinking they
> >can do something by modifying a parent ACL that they can't really do
> >that way. So I'm not sure that I want to do it this way...
> >
> >I'm not particularly wild about either of the lazy copy methods. The
> >abrupt change from inherited behavior to independent behavior is just
> >not going to be intuitive.
> >
> >(1) is very inflexible, but it is the easiest to understand.
One way you could make this more flexible is to take advantage of the
parent-child relationship between branches. Thus you could apply a change to
a single branch only, to a branch and all its' children, or to a subset of
the children of a given parent based on a regular expression matching
process. This sould retain the conceptual simplicity of (1) but make the
administrator's job a lot easier. Using yur example, the administrator could
then say remove checkin priveleges from group g whereever it may appear. I
would like (1) with the extension I am proposing.

> >
> >So I'm mostly vacillating between (1) and (3), but I could be
> >convinced to go with (2a) or (2b) if you folks strongly prefer it.
> >
> >	-Mark
> >
Regards

Jonathan

Personal Email
jgossage@xxxxxxxx

Business Email
jonathan@xxxxxxxxxxxxxx



Back to the top