|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] Xenstore domains and XS_RESTRICT
On 08/12/16 08:55, Juergen Gross wrote:
> On 07/12/16 18:10, Ian Jackson wrote:
>> Juergen Gross writes ("Xenstore domains and XS_RESTRICT"):
>>> In order to solve the problem I suggest the following change to the
>>> Xenstore wire protocol:
>>>
>>> struct xsd_sockmsg
>>> {
>>> - uint32_t type; /* XS_??? */
>>> + uint16_t type; /* XS_??? */
>>> + uint16_t domid; /* Use privileges of this domain */
>>
>> I don't think this is a particularly nice extension. (Also the way
>> you have written it has an endianness hazard.) What if we decide, at
>> some future point, to support domids >2^16 ? That's hard right now
>> but I don't want to make it harder.
>
> Do we support any big endian systems? I don't think so. An endianess
> problem could occur only if there are any big endian systems using the
> old (current) struct xsd_sockmsg.
>
> Regarding size of domid: this is true.
>
>>
>> I suggest the following protocol extension instead:
>>
>> Add to xenstore.txt (the list of xenstore commands):
>>
>> RESTRICTCMD <domid|><realcommand|><realpayload|>
>>
>> Here <domid|> is a domain id, and <realcommand|> is a command
>> number; both of these are 32-bit integers in host byte order.
>
> Hmm, normally parameters outside the command header are transferred
> using ASCII representation. Do we really want to introduce the first
> exception?
>
>>
>> This is an instruction to execute the command <realcommand|>
>> with payload <realpayload|>. However, all permissions
>> checking should be done as if the command had been issued by
>> domain <domid|>.
>>
>> The req_id and tx_id, and (if the command affects watches) any
>> watches that are manipulated, are those of the calling
>> connection. So the reply is sent to the xenstore client
>> (usually, ring client) which sent the RESTRICTCMD command.
>>
>> If RESTRICTCMD is used to invoke WATCH, the <domid|> from the
>> RESTRICTCMD is attached to the watch, in xenstored. Insofar
>> as watch events are filtered by the permission system, the
>> <domid|> from the RESTRICTCMD is used for watch events
>> originating from such a watch. But the actual watch events
>> are sent to the connection that called RESTRICTCMD.
>>
>> This is similar in semantics to RESTRICT but applies to this
>> one particular command (and its effects), only.
>>
>> RESTRICTCMD has no effect on, and is not visible through, the
>> xenstore ring connection of domain <domid|> (if that domain
>> has one).
>>
>> What do you think ?
>>
>> There is a command length limit implication but I don't think that's
>> important.
>
> That was the first problem coming to my mind. OTOH I'm not sure this
> is really a problem as users of RESTRICTCMD should have no need to
> use payloads of 4k.
>
> In summary I see advantages for both solutions. IMO the needed changes
> for my solution will be a little bit smaller, though.
So we have no resolution which approach should be selected: mine or
Ian's (or any other?).
Any preferences?
Juergen
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |