Solaris ssh pam_krb
Nicolas Williams
Nicolas.Williams at sun.com
Mon Apr 3 16:58:52 EDT 2006
On Mon, Apr 03, 2006 at 04:43:07PM -0400, Jeffrey Hutzelman wrote:
> On Monday, April 03, 2006 02:01:21 PM -0500 Nicolas Williams
> <Nicolas.Williams at sun.com> wrote:
> >On Mon, Apr 03, 2006 at 02:27:36PM -0400, Jeffrey Hutzelman wrote:
> >
> >Since you've agreed that PAGs are not a session separation feature I'll
> >just put you firmly in that column and ignore any further protestations
> >that PAGs are a form of "weak separation" ;) :]
>
> Fine. It's really just about making identity selection work in a sane way.
> The idea is that if I start a new PAG, and get reduced or no credentials in
> that PAG, then ordinary file accesses actually fail when they're supposed
> to, rather than randomly succeeded.
Yay! :-)
> >Oh no, not "for every vnode or file op" -- for every authentication
> >attempt. Surely AFS does not do an AP exchange "for every vnode or file
> >op," right? Right?!
> >
> >Please tell me that it doesn't... If not I may have to laugh at AFS :)
>
> No, of course not. Actually, that's part of my point. We avoid doing that
> by caching established connections and indexing them by PAG, and we avoid
> _using_ even the cached connection on every op by also caching metadata,
> file contents, and access rights. But if mapping the in-kernel PAG to the
> identifier AFS actually uses requires an upcall, then I have to do the
> upcall on every vnode and file op, because that's pretty much how often I
> have to examine cached access rights (actually, it's not quite _that_ bad,
> but it's close).
Ah, OK, I get it. *This* is a kernel-side application of PAGs, yes.
But:
- it doesn't necessarily have to be distinguished as an "application"
as the other examples of multi-app PAG consumers do (see below)
- you only need to upcall when a PAG->connection cache lookup misses
The only question I have then is: how to deal with new PAGs that are
intended to share their predecessors' AFS connections/credentials?
And I think the answer would either be: add an AFS-specific syscall to
establish the new_PAG->old_connection association or bite the bullet and
re-authenticate using the PAG->credentials association kept in
user-land.
I expect this sort of event to be rare. How often do users setpag(2)?
> I'm beginning to think that maybe there is some unstated assumption here,
> and we are talking past each other. In your user-mode multi-app PAG world,
> what would you have me do to find the cached access rights that apply to a
> process? Maybe your answer to this will uncover the disconnect.
Yes, you've identified the disconnect. But I think there's an answer
(see above).
> >>Yes, you could do that. Those wouldn't be the same semantics as AFS,
> >>but that's not necessarily a problem. It _would_ be very similar to
> >>the semantics of Kerberos file ccaches, which can also be useful.
> >
> >Since you agree that PAGs are not a session separation feature I don't
> >see how the semantics of this "join PAGs I own" feature would be
> >incompatible with the semantics of AFS PAGs, but an extension.
>
> It's complicated, in part because different people have different
> expectations. Step out of the world of perfect security for a moment, and
> consider the real world. In the real world, there are people who assume
> that because we explicitly don't provide an interface for PAG-joining, you
> can't do it. Some of those people are blissfully unaware that there are
> ways to do it anyway. Others know full well what they're getting into, and
> consider it a problem to eventually work around.
Sorry, but I think those users will be as blissfully unaware of the one
thing (that PAGs aren't for strict separation) as of the other (that
'lo, you can "join" existing PAGs).
> Personally, I happen to think that being able to join your own existing
> PAG's would be fine. But I _know_ there are AFS-using sites out there that
> feel differently.
Too bad. They're trusting PAGs more than they should. If they really
need a session separation feature then they need trusted OS labelling.
> >I should correct myself here -- the right way to implement "join PAGs
> >one owns" in the scheme I've proposed is to find the associations of the
> >PAG you want to join, join new PAG instead, and then establish all those
> >associations for the new PAG. (To keep continuity I'd make associations
> >to PID before joining a new PAG -- "make before break.")
>
> Hm, so you don't get to arbitrarily change your PAG, but you do get to set
> existing associations. That's interesting, because it could potentially
> allow each application to decide whether its ID's can be joined. That
> might well satisfy the people who want to use PAG's for process separation.
Exactly! :)
Nico
--
More information about the Kerberos
mailing list