Bug 1301026 - [RFE][OSP 18] LUKS encryption of all Nova ephemeral disk backends (local (RAW), QCOW2, rbd and LVM)
Summary: [RFE][OSP 18] LUKS encryption of all Nova ephemeral disk backends (local (RAW...
Keywords:
Status: CLOSED DEFERRED
Alias: None
Product: Red Hat OpenStack
Classification: Red Hat
Component: openstack-nova
Version: 17.0 (Wallaby)
Hardware: Unspecified
OS: Unspecified
medium
urgent
Target Milestone: ---
: 18.0
Assignee: melanie witt
QA Contact: Joe H. Rahme
URL:
Whiteboard:
: 1631239 (view as bug list)
Depends On: 760547 1301021 1305024 1375855 1518998 1518999
Blocks: 1821539 1230405 1336045 1476900 1518616 1558125
TreeView+ depends on / blocked
 
Reported: 2016-01-22 11:15 UTC by Daniel Berrangé
Modified: 2022-10-13 19:18 UTC (History)
18 users (show)

Fixed In Version:
Doc Type: Enhancement
Doc Text:
Clone Of:
: 1353247 1821539 (view as bug list)
Environment:
Last Closed: 2022-10-13 19:18:44 UTC
Target Upstream Version: Antelope
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
OpenStack gerrit 752284 0 None MERGED Image and flavor defined ephemeral storage encryption 2021-01-19 08:15:19 UTC
OpenStack gerrit 835877 0 None NEW Re-propose spec for ephemeral storage encryption 2022-05-20 16:40:14 UTC
OpenStack gerrit 836075 0 None NEW Re-propose spec for ephemeral encryption for libvirt 2022-05-20 16:40:14 UTC
Red Hat Issue Tracker OSP-2692 0 None None None 2021-11-18 16:34:52 UTC

Description Daniel Berrangé 2016-01-22 11:15:15 UTC
Description of problem:
Nova currently has some limited encryption support which works with LVM volumes. This is not a particularly common deployment choice. The encryption support needs to be extended to cover qcow2 files, RBD and iSCSI volumes at the very minimum. This will require QEMU to have native support for the LUKS encryption format.

Comment 3 Stephen Gordon 2017-03-14 19:47:42 UTC
Kashyap are there other dependencies for this work? The linked dependency is (theoretically) resolved?

Comment 4 Daniel Berrangé 2017-03-14 19:55:30 UTC
Unfortunately the infrastructure isn't fully completed. QEMU has support for LUKS over plain files, block devices and network volumes, but doesn't have LUKS integration into qcow2 yet. Libvirt supports LUKS over plain files and block devices, but not yet for network volumes.

It is enough to start working on the nova piece, but not complete it yet

Comment 5 Kashyap Chamarthy 2017-03-15 11:09:11 UTC
(In reply to Daniel Berrange from comment #4)
> Unfortunately the infrastructure isn't fully completed. QEMU has support for
> LUKS over plain files, block devices and network volumes, but doesn't have
> LUKS integration into qcow2 yet.

Dan, I presume this in-progress upstream QEMU patch series (that adds LUKS support to QCOW2) from you, is what you're referring to (which I've been following from a distance)

https://lists.nongnu.org/archive/html/qemu-devel/2017-02/msg04653.html --
[PATCH v5 00/18] Convert QCow[2] to QCryptoBlock & add LUKS support

> Libvirt supports LUKS over plain files and
> block devices, but not yet for network volumes.
> 
> It is enough to start working on the nova piece, but not complete it yet

Comment 6 Kashyap Chamarthy 2017-08-31 11:17:03 UTC
So, the v10 of the relevant QEMU patch series from DanPB:

    "[PATCH v10 00/20] Convert QCow[2] to QCryptoBlock & add LUKS support"
    -- https://lists.nongnu.org/archive/html/qemu-block/2017-06/msg00755.html) 

is merged in QEMU 2.10 (released on 30-Aug-2017).

Comment 8 Lee Yarwood 2018-02-20 15:33:04 UTC
Moving to rhos-15.0? given RHEL dependencies will not be available during Rocky development.

Comment 9 Kashyap Chamarthy 2019-01-29 10:09:12 UTC
Dan,

Besides the patch series pointed out in comment#6 (which is merged), do
you recall if there is any other pending action on libvirt and QEMU?

From a past conversation with Eric Blake, it looks like the following
two bugs are also relevant here:

    https://bugzilla.redhat.com/show_bug.cgi?id=760547 -- [RFE] 
    specifying the entire image chain as a qemu drive (blockdev-add)

    https://bugzilla.redhat.com/show_bug.cgi?id=1375855 -- LUKS 
    encryption not supported for snapshots' backing files

That was my IRC chat with Eric (from September 2017).  Eric writes:

    You can't create snapshots on top of an encrypted image, unless you  
    can pass the secret to use the encrypted image as a backing file.  
    So libvirt has to use persistent backing chains (rather than
    recomputing it each time the domain supports), if the XML is going
    to track association of a secret with a member of the backing chain.
    That's true whether or not libvirt uses '-blockdev', but switching
    to '-blockdev' is natural fallout from that work.

    QEMU already supports associating a secret with any depth in the 
    backing chain, but that support is easiest when using '-blockdev'.
    (You have to use pseudo-JSON backing file references otherwise,
    which gets hairy).  So there's all the more incentive for libvirt to
    just supply '-blockdev' instructions to QEMU in the first place.

Need to investigate how much of the above is still relevant.  I know 
Peter Krempa has already been working on '-blockdev' support for a
while.

Comment 10 Ademar Reis 2019-04-18 17:15:46 UTC
(In reply to Kashyap Chamarthy from comment #9)
> Dan,
> 
> Besides the patch series pointed out in comment#6 (which is merged), do
> you recall if there is any other pending action on libvirt and QEMU?
> 
> From a past conversation with Eric Blake, it looks like the following
> two bugs are also relevant here:
> 
>     https://bugzilla.redhat.com/show_bug.cgi?id=760547 -- [RFE] 
>     specifying the entire image chain as a qemu drive (blockdev-add)
> 
>     https://bugzilla.redhat.com/show_bug.cgi?id=1375855 -- LUKS 
>     encryption not supported for snapshots' backing files
> 
> That was my IRC chat with Eric (from September 2017).  Eric writes:
> 
>     You can't create snapshots on top of an encrypted image, unless you  
>     can pass the secret to use the encrypted image as a backing file.  
>     So libvirt has to use persistent backing chains (rather than
>     recomputing it each time the domain supports), if the XML is going
>     to track association of a secret with a member of the backing chain.
>     That's true whether or not libvirt uses '-blockdev', but switching
>     to '-blockdev' is natural fallout from that work.
> 
>     QEMU already supports associating a secret with any depth in the 
>     backing chain, but that support is easiest when using '-blockdev'.
>     (You have to use pseudo-JSON backing file references otherwise,
>     which gets hairy).  So there's all the more incentive for libvirt to
>     just supply '-blockdev' instructions to QEMU in the first place.
> 
> Need to investigate how much of the above is still relevant.  I know 
> Peter Krempa has already been working on '-blockdev' support for a
> while.

I'm adding several BZs to the "depends-on" list. The current status is that this feature primarily depends on blockdev work being done in upstream libvirt. Downstream target is RHEL-AV-8.1 (some of the BZs are still marked rhel-7.7, but that's misleading and will be fixed in the next days/weeks).

Comment 11 Lee Yarwood 2019-12-04 14:11:25 UTC
*** Bug 1631239 has been marked as a duplicate of this bug. ***

Comment 14 smooney 2022-10-13 19:18:44 UTC
This feature request has been deferred to a future OSP release and migrated to our new Jira backlog for consideration in a future product release. 
Starting with the Antelope upstream release, DFG:Compute is tracking its feature backlog in Jira. 
This feature request has been migrated to DFG:Compute’s new Jira backlog.
The Jira tracker for this feature request can be found at https://issues.redhat.com/browse/OSP-19409.
At the time of this writing, only Red Hat associates have access to the Jira tracker.


Note You need to log in before you can comment on or make changes to this bug.