<div dir="auto"><div>Hi Brian,<div dir="auto"><br></div><div dir="auto">Thank you very much for your reply and the references, it has been most helpful.</div><div dir="auto"><br></div><div dir="auto">Kind regards</div>S. Andronic<br><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, 22 Oct 2021, 00:52 Brian Rosmaita, <<a href="mailto:rosmaita.fossdev@gmail.com" target="_blank" rel="noreferrer">rosmaita.fossdev@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On 10/20/21 8:24 AM, S Andronic wrote:<br>
> Hi,<br>
> <br>
> I have a question in regards to Openstack Glance and if I got it right<br>
> this can be a place to ask, if I am wrong please kindly point me in the<br>
>   right direction.<br>
> <br>
>   When you enable Image Signing and Certificate Validation in nova.conf:<br>
>   [glance]<br>
>   verify_glance_signatures = True<br>
>   enable_certificate_validation = True<br>
<br>
Note: Since Rocky, if you have enable_certificate_validation = True but <br>
have default_trusted_certificate_ids at its default value of empty list, <br>
then a user must supply a list of trusted_image_certificates in the <br>
create-server request, or the request will fail.<br>
> <br>
>   Will this stop users from uploading unsigned images<br>
<br>
No, glance doesn't have a setting that requires uploaded images to be <br>
signed.  However:<br>
- If the image record contains *all* the appropriate image signature <br>
properties, the PUT /v2/images/{image_id}/file call will fail if the <br>
data can't be validated.<br>
- You could write an image import plugin that would disallow import of <br>
image data for which the image record doesn't have the image signature <br>
properties set.<br>
<br>
> or using unsigned<br>
>    images to spin up instances?<br>
<br>
Yes, if verify_glance_signatures is True, nova won't boot unsigned images:<br>
<a href="https://docs.openstack.org/nova/latest/configuration/config.html#glance.verify_glance_signatures" rel="noreferrer noreferrer noreferrer" target="_blank">https://docs.openstack.org/nova/latest/configuration/config.html#glance.verify_glance_signatures</a><br>
<br>
>   Intuitively I feel that it will enforce checks only if the signature<br>
>   property exists, but what if it doesn't?<br>
<br>
See above.<br>
<br>
>   Does it control in any way unsigned images?<br>
<br>
Yes, if verify_glance_signatures is True, unsigned images can't be used <br>
to boot an instance.<br>
<br>
>   Does it stop users from uploading or using anything unsigned?<br>
<br>
No, glance doesn't require it.<br>
<br>
>   Would an image without the signing properties just be rejected?<br>
<br>
It depends on what service you are talking about:<br>
<br>
Glance: no, glance won't reject an unsigned image.<br>
<br>
Nova: yes, if verify_glance_signatures is set.<br>
<br>
Cinder: it depends ... if verify_glance_signatures is enabled:<br>
- if you create a volume from an image AND the image has *any* of the <br>
image signature properties set, cinder will try to validate the image <br>
data and the volume will go to error if validation fails.  If the <br>
validation succeeds, you get signature_verified: true in the <br>
volume-image-metadata.<br>
- if you create a volume from an image AND the image has NONE of the <br>
image signature properties, the volume creation will succeed (assuming <br>
nothing else goes wrong) and you get signature_verified: false in the <br>
volume-image-metadata.<br>
<br>
But ... Nova won't do certificate validation for a boot-from-volume <br>
request (as described in [0]).  But I'm not clear on what happens if <br>
verify_glance_signatures is true and enable_certificate_validation is <br>
false.  I believe that nova will boot the volume on the theory that <br>
cinder has already handled the signature validation part (which it has, <br>
if the option is enabled and at least one image signature property is <br>
set on the image), and it's the certificate validation part that isn't <br>
being handled?  Hopefully someone else will explain this.<br>
<br>
[0] <br>
<a href="https://specs.openstack.org/openstack/nova-specs/specs/rocky/implemented/nova-validate-certificates.html" rel="noreferrer noreferrer noreferrer" target="_blank">https://specs.openstack.org/openstack/nova-specs/specs/rocky/implemented/nova-validate-certificates.html</a><br>
<br>
>   If this feature doesn't stop the use of unsigned images as a security<br>
>   control what is the logic behind it then?<br>
<br>
I guess you can look at the spec to see what threat models the feature <br>
was proposed to address:<br>
<a href="https://specs.openstack.org/openstack/nova-specs/specs/mitaka/implemented/image-verification.html" rel="noreferrer noreferrer noreferrer" target="_blank">https://specs.openstack.org/openstack/nova-specs/specs/mitaka/implemented/image-verification.html</a><br>
<br>
>   Is this meant not to stop users from using unsigned images but such<br>
>   that people who do use signed images have verification for their code?<br>
<br>
This is a good question, and the asymmetry between how nova and cinder <br>
treat requests to create a resource from an unsigned image when <br>
verify_glance_images is enabled makes this difficult to answer (at least <br>
for me).<br>
<br>
>   So if the goal is to stop people from using random images and image<br>
>   signing and validation is not the answer what would be?<br>
<br>
It really depends on what your cloud users want/need, and what you mean <br>
by a "random image".  For example, you could only allow public images <br>
provided by you the operator to be used to boot servers by blocking <br>
image uploads and server snapshots, or allowing snapshots but not <br>
allowing image sharing (which could get you "random" images, but they'd <br>
be restricted to a single project, which would probably be OK).  Like I <br>
said, it depends on your goals and what your users will put up with (I <br>
think users would absolutely hate not being able to create server <br>
snapshots, but there are probably some users for whom that wouldn't be a <br>
problem).<br>
<br>
While we're talking about server snapshots, however, note that with <br>
verify_glance_images enabled in nova, you can boot a server from a <br>
signed image and then use the server createImage action to create an <br>
image in Glance.  This image won't have the image signature properties <br>
on it, however, and hence won't be bootable.  Your users will have to <br>
download the image so they can generate a signature for it and then set <br>
all the image signature metadata on the image before it nova will boot <br>
it.  (I'm pretty sure this is true.)<br>
<br>
You may want to send another email with '[ops]' in the subject line to <br>
ask other operators who use this feature what their configuration and <br>
experiences are like.<br>
<br>
> <br>
>   Kind Regards,<br>
>   S. Andronic<br>
<br>
Good luck!<br>
brian<br>
<br>
<br>
<br>
</blockquote></div>
</div></div>