
On Tue, Mar 10, 2020 at 07:25:46PM +0100, Andrea Bolognani wrote:
On Tue, 2020-03-10 at 16:00 +0000, Daniel P. Berrangé wrote:
The split daemon model is intended to allow us to address this long standing design flaw, by allowing the QEMU session driver to optionally talk to a secondary driver running with different privileges, instead of the instance running with the same privs.
So currently we have
<interface type='network'> <source network='default'/> </interface>
This refers to a secondary driver running at the same privilege level.
I expected we'd extend it to allow
<interface type='network'> <source scope='system' network='default'/> </interface>
This explicitly requests the secondary driver running with elevated privileges.
This makes perfect sense to me, and in fact I believe you're basically suggesting what I was arguing for earlier :)
In your scenario, when you don't specify a scope you get the same one as the primary driver is using (this matches the current behavior): so if you are using qemu:///session, every <interface> will use network:///session unless you explicitly specify scope='system', at which point network:///system will be used; in the same fashion, if you're connected to qemu:///embed, the default for <interface>s should be network:///embed, with the possibility to use either network:///session (with scope='session') or, most likely, network:///system (with scope='system').
No, I'm not talking about using the same URI for the secondary drivers, I'm talking about using the same *privilege* level. ie, qemu:///system and a qemu:///embed running as root should both use the privileged network/storage driver. The qemu:///session and qemu:///embed running as non-root should both default to the unprivileged network/storage drivers.
With such functionality present, it logically then also extends to cover connections to daemons running in different namespaces.
I'm still unclear on how this scenario, which would apparently have multiple eg. privileged virtnetworkd, running at the same time but in different network namespaces, would work.
There would need to be some selection method, most likely a way to explicitly specify the socket path, but this is a longish way into the future. Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|