GSSAPI Proxy initiative

Nico Williams nico at cryptonector.com
Fri Nov 4 10:51:20 EDT 2011


On Thu, Nov 3, 2011 at 4:46 PM, Trond Myklebust
<Trond.Myklebust at netapp.com> wrote:
> On Thu, 2011-11-03 at 17:30 -0400, Simo Sorce wrote:
>> I have discussed use of the keyring in a private discussion before
>> starting the thread, and it turns out the keyring has a number of
>> limitations that makes it probably unsuitable for this project.
>>
>> As an upcall mechanism it has some limitations on the size of the
>> payloads, IIRC limited to a page, and that means that you cannot pass
>> blobs carrying big kerberos tickets.

I never meant storing the ccache, or even the TGTs in the keyring.

>> As a storage mechanism for credential caches it also has size limits.
>> Currently the limit is 20k per user which is not even enough to hold a
>> single ticket in some cases. This limit can be increased of course, but
>> then you end keeping around a huge amount of unswappable ram depending
>> on the number of users.
>
> Allowing keys to be swapped out is a really really really really really
> really bad idea when your kernel depends upon them being available as
> part of the memory reclaim process, as would be the case when you are
> talking about NFS, CIFS or AFS dirty page writebacks.

If you have local swap you'll be fine.  Of course, the text for the
gssd had better be in-core.  Diskless over NFS doesn't work all that
well, IMO.

Obviously you'll need to be able to block the triggering
process/syscall, and you'll need to make sure there's no deadlock, but
the first is a given (since we're talking about NFS) and the second
should be possible if gssd does not stray into any NFS mounts (see my
comment about disklessness over NFS).

But even if you want diskless over NFS with RPCSEC_GSS (you'll want
RPCSEC_GSSv3) you can make this work by ensuring that all of the text
of gssd and its libraries and plugins and... are pinned in-core, and
by not swapping over NFS.  The way Linux boot works this is quite
feasible.  You'll want ccaches stored in tmpfs, of course.

>> So for long term storage of credentials we will probably not rely on
>> kernel keyrings, nor as an upcall mechanism.
>
> So this would be an argument for scrapping keyrings from the kernel? If
> they're not good for kerberos tickets, why would we want to keep them at
> all?
> What would you replace them with, given the above requirements
> concerning swapping?

No, I don't think it's an argument for scrapping keyrings, just for
not storing actual credentials in them (store references to them
instead).

I like to think that my CPG proposal for Solaris from a few years ago
is much cleaner than keyrings.  But keyrings could be made to do.

Nico
--



More information about the krbdev mailing list