[cap-talk] ... enforcement - ambient authority - definition?

Jed Donnelley jed at nersc.gov
Wed Oct 6 16:23:29 EDT 2004


<somewhat delayed reply>
At 04:03 PM 9/29/2004, David Wagner wrote:
>Jed Donnelley writes:
> >>Systrace [is] an ambient authority system where the process does not
> >>run with all the rights of the user who started the process.
> >
> >In that sense I don't consider it an ambient authority system.
> >It provides an additional 'filter' on the ambient authority, so it is
> >something more.  As you say, though, a terminological nit.
>
>To continue the picking of minor nits:
>
>Then I think you are using the terminology in a way different from
>what I've seen others use (as far as I can tell).  The benefit of using
>accepted terminology is that communication is often easier when we avoid
>non-standard usages.

Of course.  Since I'm new to the term I'll adopt the use you suggest unless
we hear from others.

>Based on what I've read here, the definition of "ambient authority system"
>on this list seems to be any system where a process has associated
>with it an implicit set of rights, where when the process performs
>some operation (e.g., makes a syscall), the reference monitor checks
>whether there exists any right in the processes' set that would permit
>the operation to succeed.
>
>In other words, ambient authority systems are ones where the process does
>not explicitly state which of its rights it is wielding (which of its
>rights it thinks demonstrates that the operation should be permitted).
>Rather, this is left implicit, and as a result the reference monitor has
>to guess at which right the process intended to use for this operation.

I'm afraid this does puzzle me a bit.  Take the example (common and
to the point I would think) of a file open call.  Naturally the program must
state what resource it's trying to open - namely the file whose name it
specifies.  Are you distinguishing between the name and the right?  Even
in a classical capability list system one might argue that an index (e.g. 5)
is just a name for the resource to be accessed.  Of course such a system
provides a tremendous simplification with regard to access rights checking.
All the rights are in one simple place and referred to by a simple "name".
Still, the distinction from an ambient authority system is a bit lost on
me.  I guess I was keying in on the inheritance of "ambient" authority -
e.g. in a fork or exec call.  I don't recall, but I wouldn't be surprised to
see some capability systems with something comparable where a
fork copies or even shares the c-list of the caller - though it seems
somewhat nasty business.  "just" a simplification to reduce overhead.

Even with such a simplification in a call I wouldn't consider a capability
system with such a call an "ambient authority" system.  That term seems
to me to more strongly suggest a system in which processes pick
up a widely shared authority pool - e.g. the pool belonging to a "user".

Since I picked the term up from Alan Karp, perhaps he can explain it
and/or refer us to its origin.  Where did you pick it up from David?
In doing a quick Google (the wonders of the age) I see Dean Tribble
takes credit for coining the term and describes a bit of his thinking at:

http://zesty.ca/zest/out/msg00139.html

Jonathan Shapiro provides this clarification, coming close to what you
say above David:

"... MumbleSoft is an "ambient authority" system.  Operations requiring
privilege do not explicitly designate the authority that permits that
operation."

from: http://zesty.ca/zest/out/msg00181.html#msg181-sec0

OK, I can accept that terminology, though as can be seen from the
above and elsewhere it wasn't entirely intuitive to me.  By that definition
Systrace is definitely an "ambient authority" system - even if each process
execution in principle has its own distinct authority set (provided by the
policy file).  In the classical capability list system I guess one can say
that even if the index is a name for the resource, it is simultaneously
a name for the right to the resource (the great value of capability systems,
binding the name for a resource with a right to access the resource).

>At least, that's my understanding of the accepted meaning of this term
>among this community.  (Caveat: I've learned this notion from others,
>so I could well have it wrong; if so, I hope others will let me know.)
>
>End of nit pick.  Sorry for that.  I hope I'm not beating a dead horse...

Perhaps I started using the term too much and too soon without a
thorough understanding.  It definitely has an intuitive appeal.  I hope
the above clarifies the preferred use of the term - though others should
of course feel free to chime in.

--Jed http://www.webstart.com/jed/  



More information about the cap-talk mailing list