-
Notifications
You must be signed in to change notification settings - Fork 2.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Document Signing Procedure for Official Images #1516
Comments
As we were discussing over in moby/moby#20844 (comment), I think it would be extremely useful if we could implement some of what @yosifkit outlined in moby/moby#20844 (comment) to ensure that we're not only creating signed, trustable artifacts, but also that we're using the features of Notary to their fullest in order to do so (eating our own dogfood and ensuring that the system is being tested appropriately, given that my understanding was that signing our images was to be a test of Notary and Content Trust within the engine in general):
|
The timing on today's blog post (https://blog.docker.com/2016/03/notary-0-2/) is fantastic 😄 👍 |
We've been having a lot of discussion about how to best handle official image signing and there is a strong feeling there should be an opportunity to review a built image. It feels like the right way to handle this is to take @toli's suggestion on the docker/docker PR that you should sign and push to I think there are 2 phases of official image creation at play that are being conflated and we should look at separating them. This repo handles review and collation of the input of the build. However there is a separate, increasingly useful step, of validating the output of the build. It is desirable to do this output validation before finally stamping the image as "official". |
@endophage @NathanMcCauley : I spoke to @tianon and he is in agreement to this approach. We will be setting up official-staging and move this forward. We are actually waiting for another issue (repolinks) to get resolved (hopefully today). |
To clarify a little, I'm fine with that plan as long as the validation
remains as simple as signing; I think it's a bit overblown to make image
availability contingent on security scanning results being available, as we
have discussed.
|
As of now, the current process is as follows: official images are pushed to the library organization, and Docker Inc signs them in place. The introduction of windows images necessitated either a change from what was being discussed here, or running the process in duplicate, and we opted for the former. Currently, the exact process isn't well documented, so we're keeping this issue open to point people to--this is just a small update as to where we are currently at with this. |
This is still rather unclear in 2019.
I assume that is supposed to read "pushed by the library organization"? There are still more questions:
|
No, although I can definitely see the confusion (especially since the
All signing of all images under https://hub.docker.com/u/library happens at/by Docker Inc -- neither the image maintainers or the official images maintainers have any access or control over that process (although we're definitely open to being more involved in that / signing closer to the build source if any Docker Inc folks are reading this and want to make that process more interesting ❤️). For image maintainers to be involved in that signing flow, however, the image maintainers would need to be responsible for building their own images, which for most of our maintainers would be a huge hurdle and would remove a huge portion of the value proposition of the program in the first place (automated rebuilds, multiple architectures, image source review, etc). See https://github.com/docker-library/official-images#architectures-other-than-amd64 and https://github.com/docker-library/faq#how-are-images-built-especially-multiarch for more details around the image build process if you're curious about that. As for questions on Notary (and usage of the |
Thanks @tianon for the comprehensive reply. I just discovered that enforcing content trust on a docker daemon is only a Docker EE feature. This means docker content trust is wholly infeasible to use with Docker CE and docker-compose, that is, the vast majority of the open source ecosystem. So for most of us there is no way to run verified trusted docker images in production. Very unfortunate. |
@abeluck You may want to check this docker engine plugin https://github.com/SixSq/img-authz-plugin. It enforces DCT in DE on image and container creation operations. Internally, it simply uses |
@abeluck Docker compose is client side, so client side enforcement is fine. The engine side enforcement is for some very specific use cases, and it is not the interface we really want to see long term, and looking to design a new interface. |
@justincormack The issue is, afaict, there is no way to tell docker-compose to use DCT (such as the docker flag @konstan Thanks for the link, I'll check it out. |
Hi 👋
Thank you for clarifying this. I think it is very important that people have a clear understanding who they trust when they see an image has been signed (by using Where do you think is a good place to document it? Perhaps https://github.com/docker-library/faq would be good? What do you think? Unfortunately, to guarantee credibility, this information should be included in public materials controlled by Docker Inc. However, the mere information that the keys do not belong to the image maintainers, neither the maintainers of Docker Official Images, is very useful. For example, I always try to pin the certificates when I provision a new environment, and I found quite easily (kudos for Michael) that for pulling Docker images I can do it by Best, |
Docker's official images should all be signed using Docker's Content Trust feature. Right now they're all signed, but it'd be good to ensure that remains in effect and a process is followed to make sure that happens for all future builds.
The text was updated successfully, but these errors were encountered: