[AFS3-std] Re: rxgk-afs tokens for ptservers, etc.
Benjamin Kaduk
kaduk@MIT.EDU
Tue, 12 Feb 2013 23:25:55 -0500 (EST)
On Tue, 12 Feb 2013, Jeffrey Hutzelman wrote:
> On Tue, 2013-02-12 at 20:55 +0000, Chaskiel Grundman wrote:
>>> [Last paragraph of section 3]
>>> Tokens returned from the GSSNegotiate call MUST only be used with
>>> database servers. Tokens for fileservers MUST be obtained by calling
>>> AFSCombineTokens before each server is contacted.
>>>
>>> Without context, that doesn't seem clear to me whether it means the
>> database server processes and the fileserver process, or if it means the >
>> actual machines.
>>
>> Interpreting this as actual machines makes the most sense here.
>
> Operationally, maybe, but in terms of code structure and the way server
> implementations work, I think not.
I agree.
[trim details of the motivation for why]
>
>
> Finally, I think the rule as it applies to fileservers also needs to
> apply to volservers. Among other things...
>
>> One of the
>> purposes for all this complexity is so that fileserver machines (running
>> bosserver, fileserver and volserver processes) can have unique keys not
>> shared with all the other server hosts in the cell. This is somewhat simpler
>> administratively, but also enables a cell to have servers administered by
>> multiple groups that don't trust each other (everyone must trust the
>> database server maintainers, but that's it)
>
>
> And if that's the case, then you need a server-specific token to talk to
> a volserver.
Yup, it really seems like the volserver and fileserver are pretty tied
together. (Along with the salvager, though I don't recall that we ever
talk directly to the salvager.)
> I'm not sure what to do about the bosserver. It's really more of a
> management tool than part of the main protocol suite. It seems like, at
> a minimum, it ought to be possible to obtain a token for a given
> bosserver by negotiating directly with that server, the same as for any
> other rxgk service. Arguably the same should be possible for volservers
> and maybe even fileservers, though in practice that doesn't seem as
> useful.
I'll put more thoughts on the bosserver in a separate mail.
For now, I want to double-check if there is anything that is missing from
this list of server processes that may need to be contacted over an
rxgk-secured connection:
fileserver
(cache manager callback "server", already has its own thread)
ptserver
vlserver
kaserver
volserver
bosserver (deferred)
updateserver
buserver
butc
We bundle fileserver/volserver (using tokens from AFSCombineTokens), and
ptserver/vlserver are "clearly" expected to use tokens from GSSNegotiate
(i.e., with the cell-wide key).
The kaserver needs to die and has no reason to use rxgk.
What, then, of the updateserver and the backup suite? I must confess to
have never deployed an upserver and an only passing acquaintance with the
architecture of the backup suite, so take the following with a grain of
salt.
It looks like there is a single central update server, which every server
machine in the cell contacts (acting as clients) to poll for updates.
That would imply that the update server should have the cell-wide key and
be able to accept tokens from GSSNegotiate.
The backup situation looks more complicated, but I guess the buservers are
database servers and act thusly with regard to accepting tokens. I
suppose we should support departmental admins running a butc on their own
fileserver to backup the volumes hosted there. That would seem to imply
that butc should accept per-server tokens; I guess implementors will need
ensure that bos and volser will accept printed (?) tokens using the
per-server key so that such a local butc would work.
If the local bosserver/volserver/butc will need access to the per-server
key, that means the per-server key will probably end up on disk somewhere.
Which doesn't really seem like a problem, just something to note.
Unless we want each of them to register in the vldb as their own uuid in
some sort of dummy setup, but that smells like a hack...
Does that feel like a reasonable partition for the various services?
-Ben