On Wed, Jun 01, 2016 at 11:11:40AM -0400, John Ferlan wrote:
On 06/01/2016 09:10 AM, Daniel P. Berrange wrote:
> On Wed, Jun 01, 2016 at 09:04:00AM -0400, John Ferlan wrote:
>> My quandary is less about the qemu-img infrastructure than the storage
>> driver code.
>>
>> That is, it's "less clear" in my mind how the storage_backend.c
code
>> would need to handle a ",file=" for its short lived master key. Where
to
>> create the file? What issues around permissions will there be?
>> Basically anything that virSecurityManagerDomainSetPathLabel handles for
>> the domain master key. I've been working under the assumption that
it'll
>> need to be done, but hadn't quite got that far yet.
>
> I see three possible options
>
> 1 Have storage driver create a random master key when libvirtd starts up
> and use that with all qemu-img invokations
>
> 2 Have storage driver create a random master key per pool and use that
> with all qemu-img invokations against that pool
>
I wasn't thinking that this key would need to be stored long term,
although I suppose that works too using the driver->stateDir as the
location and building the file name using master-key.aes.
I had been leaning towards generating it on the fly as needed. It was
more the mgmt of the file for what amounts to one operation. Of course
while typing and thinking generating a temporary file on the fly has
drawbacks too.
> 3 Ignore master keys entirely and just put the encryption key for the
> luks volume in a file directly. ie just one secret object using file=
> instead of two secret objects
>
Just to be clear - the key could be base64 encoded raw text in a file?
Or just the raw text in a file. Too bad we couldn't link to the secret
driver file directly...
In either case it's still not clear what protections are sufficient.
That is would there need to be a virSecurityManagerDomainSetPathLabel
type call in order for qemu-img to use the file or would creating the
file in driver->stateDir be sufficient?
Yep, using a master secret does not really buy us any benefit when
using qemu-img in one-shot mode. The main rational for the master
secret feature was to facilitate QEMU hotplug, so that you could
securely pass secrets to a running QEMU without having to create
files on disk for every single secret you pass over the QMP monitor.
With qemu-img being a short-lived process doing individual specific
tasks, it is fine to just save the real secret on disk in either
raw or base64 format, and directly reference it without using a
master secret. In terms of permissions it is sufficient to make
sure the file is simply -r------- & owned by the uid/gid that we're
invoking qemu-img under.
Regards,
Daniel
--
|:
http://berrange.com -o-
http://www.flickr.com/photos/dberrange/ :|
|:
http://libvirt.org -o-
http://virt-manager.org :|
|:
http://autobuild.org -o-
http://search.cpan.org/~danberr/ :|
|:
http://entangle-photo.org -o-
http://live.gnome.org/gtk-vnc :|