Re: aname_to_locaname vs gssapi svc/host.domain.org@REALM

Nico Williams <[email protected]>
Newsgroups gmane.comp.encryption.kerberos.heimdal.general
Message-ID <CAK3OfOjr51FER=2kZNEQrorwgMQKtv=_XBneq3jw=OJB1+c2EA@mail.gmail.com>
On Wed, Oct 26, 2011 at 2:53 AM,  <[email protected]> wrote:
> I'd like to thank you Nico for identifying the core issue.

Well, I did antagonize Harry a bit, so, maybe it's a wash.  I wish I'd
seen Harry's point earlier, though I still think Harry should just
avoid the issue altogether.

Also, regarding Apache...  Yes, Apache has a legitimate reason for
being a daemon that is also an NFS (or AFS, or...) client.  However,
Apache is effectively a proxy for its clients.  Therefore Apache
either needs to be considered part of the system that the clients are
accessing and therefore, like the NFS software, fully privileged to
access all of that system, OR it needs delegated credentials (possibly
-preferably!- constrained) with which to impersonate the clients to
the NFS backend.

The edge service (Apache) as proxy or core service issue comes up a
lot.  "Host-based user" naming is not an applicable solution to it.

So, I hold to the following:

 - for most system daemons there's no reason to ever touch NFS (or
AFS, ...) outside a diskless client case
 - for disklessness you should use iSCSI
 - for Apache you either need to give it credentials that have the
same access as the union of all of Apache's legitimate client users,
or you need to have it used credential delegation, preferably in the
form of constrained credential delegation (see S4U2Proxy)

This leaves you with a need for "host-based user naming" only for
applications that are a) not in the same category as Apached, b)
automated and not directly related to any one user, and which c) need
isolation/partitioning across groups of hosts.  This is a *legitimate*
use-case.

Minimizing the number of legit use cases for host-based user naming is
important because minimizing the impact on the namespaces you have to
manage is important.  Namespace explosion is not fun, much less cheap.

(Harry's focus on things like nslcd is, I think, what kept me from
addressing this legitimate need for host-based user naming.  I just
couldn't get past what I think is a bad example.  Sorry.)

> On Tue, Oct 25, 2011 at 09:32:07PM -0500, Nico Williams wrote:
>> The next simplest is to use "host-based usernames".  MIT krb5 makes it
>> easy to map these to whatever server-side usernames you want, but
>> since that means having either distinct usernames on the server for
>> each host instance of the same client-side username, that gets
>> complicated pretty quickly.
>
> It is not more complicated than the access control granularity which
> you need.

The size of the namespace to be managed has something to do with the
cost of managing it.

> <offtopic = NFS>
> Do not assign distinct user names after the hosts they are
> running on but rather after the access rights they are supposed
> to have. I.e. not account_f_q_d_n but account_hostclass which means
> actually account_accessclass  (avoiding '/' makes it actually
> implementable despite all weird hardcoded assumptions about account
> names in different places).

Naming users after the access they are supposed to have doesn't help
in a dynamic world because that level of access will change over time.
 Any way you dice it the access these accounts are supposed to have
will be related to sets of subjects (in this case: sets of related
client hosts) and/or resources (which, in Harry's example are
intimately tied to the sets of subjects), so you end up with at least
an explosion based on the number of distinct sets of subjects.

Now, if you have few such use cases and few such sets of related
subjects, then it's manageable.  If you let this get out of control
you end up with a namespace explosion.

> The number of accounts=principals to maintain can become
> O(<suchaccounts>x<hosts>) but only in an extreme case. It is always
> O(<suchaccounts>x<accessclasses>) which probably is much less.

Yes, but that's bad enough IMO because it won't scale to a large
enough deployment.

> So it does not have to be complicated and does not need any
> extra support from the OSs, NFS or Kerberos.

It requires a suitable aname2lname facility, which Heimdal lacks.

Also, you really want to avoid collisions with host-based service
names.  Methinks we should standardize a host-based user naming
convention for that reason.

> Such an access control is more general than the suggested (hypothetical)
> file labels per client host which you mention later (this allows e.g. to
> move two accounts' instances together to the same host but still keep
> their access rights separated).

First off, labeled security is not hypothetical.  What is hypothetical
is the required protocol extensions and server-side features in NFS,
but these are already in progress (you can see this by looking at the
IETF NFSv4 WG mailing list traffic over the past year on the subject
of labeled security).

Windows 8 has a variant on labeled security called claims-based access
control (CBAC) that is not hypothetical either.

> That said, a deeper redesign would certainly give Harry an even simpler
> and more maintainable system than keeping those host-related acls which
> were conditioned by the old NFS3. Getting rid of NFS-conditioned
> assumptions is not easy - hard in the existing setups, even harder
> in the minds of people (not meaning anyone here).
> :(

The deeper redesign that is coming is labeled security.  I don't know
what else could replace it while also avoiding the namespace explosion
discussed above and earlier.

Nico
--
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.