Re: Draft available on GSSAPI naming issues

Nicolas Williams <[email protected]> Tue, 13 Jul 2004 16:48:03 -0500
Newsgroups gmane.ietf.cat
Message-ID <[email protected]>
On Tue, Jul 13, 2004 at 11:14:33PM +0200, Martin Rex wrote:
> Sam,
> 
> Sam Hartman wrote:
> > 
> > Please take a look at
> > http://www.ietf.org/internet-drafts/draft-hartman-gss-naming-00.txt.
> > This describes problems I see with GSSAPI's naming architecture and a
> > proposal to solve these problems.  I will be presenting at the BOF
> > meeting.
> > 
> > I'm particularly interested in things I've missed in the problem
> > description or other open issues that I failed to mention.
> 
> There are zero problems with existing GSS-API naming.

I agree with your comment -- there's nothing wrong with the GSS-API's
naming.

Name-based authorization is really problematic though, and in a way that
transcends the GSS-API.

Please read the comments I just posted.  I think some extensions to the
GSS-API can be made that will greatly improve authorization in
applications by moving beyond the use of canonical names based on
display forms that are subject to change at any time.

> I have three major problems in the above document:
> 
>  (1) it fails to distinguish authentication from authorization.

It doesn't have to.  The GSS-API handles authentication.

>  (2) it fails to recognize where existing infrastructures deliberatly
>      abuses the underlying protocol (e.g. Microsoft entirely ignores
>      the Kerberos name-based authentication and uses a proprietary
>      extension to convey authentication and authorization information).

It doesn't have to.  The basic problem with name-based authorization
transcends the GSS-API and its mechanisms (see above and my other post
just now).

>  (3) it fails to realize that *ALL* access control schemes require
>      a canonical representation of either the identity or some
>      standarized authorization information in order to work.
>
>      On Microsoft platforms the "canonical" name appears to be a "SID",
>      which is what gets stored in their (D)ACLs.  The printable representation
>      of a SID is a "SAM account name" (LanManager style).

But a user may have multiple SIDs (a primary user SID, a primary group
SID and additional user and group SIDs).  The primary user SID can be
considered a canonical name, yes, and maps onto the
GSS_C_NT_MACHINE_UID_NAME name type, but the GSS-API provides no way to
get the GSS_C_NT_MACHINE_UID_NAME that corresponds to a
GSS_C_NT_USER_NAME (or vice-versa -- but the reverse might not be a
one-to-one mapping!).

We MUST at the very least have a way to convert names of one type to
another, where that is feasible.

I'm sure you'll agree that authorization by UID or SID is much better
than by name -- the former change much less frequently than the latter
and non-reuse of the former is a typical policy in many organizations.

> The provision of GSS-API to (pre-)populate ACLs using
> gss_import_name()+gss_canonicalize_name()+gss_export_name() is
> absolutely necessary.  Btw: It is extensible since gss_canonicalize_name()
> already requires a (mechanism) OID input parameter as a hint what kind of
> transformation is required.

But GSS_Canonicalize_name() has no nametype OID parameter.  If it had
both, a mech OID and a nametype OID, or if GSS_Display_name() had an
optional display-as-other-nametype OID parameter then name-based
authorization, using GSS_C_NT_MACHINE_UID_NAME names, would be a lot
less problematic.

I'll stop here.  I consider this nametype conversion idea an olive
branch.  I do prefer the name attribute interface that Sam's draft
describes however, as that would allow for access to principals' group
membership information, and so one, in a fairly generic manner.

Nico
-- 
-++**==--++**==--++**==--++**==--++**==--++**==--++**==
This message was posted through the Stanford campus mailing list
server.  If you wish to unsubscribe from this mailing list, send the
message body of "unsubscribe ietf-cat-wg" to [email protected]