-
Notifications
You must be signed in to change notification settings - Fork 68
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
Proposal for cryptographically signing integration packages #728
Comments
Let me sketch the MVP. I based my research on the GPG signing workflow: https://www.gnupg.org/gph/en/manual/x135.html . The biggest inconvenience is the archiving logic which creates .zip archives on the fly. This will change if we decide to switch to store only .zip files in the Package Storage.
Comments:
Let me know what you think. |
@akshay-saraswat signing is also a good point for the registry design. What should be signed? Who should have access to those keys? |
Some thoughts.
Maybe we can wait to this. Signing whole archives would be definitely easier and less error-prone than something like content addressing. But one point in favour of content addressing is that it may allow to include the signature in the package itself (as I think is done in android packages for example).
But only because only Elastic can publish packages so far :) Any package developer should be able to sign packages, with their own keys.
Ideally building packages should generate both the package files and the signature when a key is configured. Maybe there should be also a way to sign packages already built. These actions should be supported by
Not sure about this. Keys distribution should be probably independent from the distribution of the images. e.g. Kibana could have Elastic keys pre-installed, so when installing a package it can check the validity of the signature. Other keys could be installed from trusted key servers.
I think the registry shouldn't have any responsibility in this process, apart of serving the signatures if they are separated files.
I think developers of packages should have their private keys, and all the content in the packages should be signed (except the signature itself if we do something like content addressing and include it in the package file). |
Design overview 0 - means a prerequisite Changes in Package Registry #760 (done)
Changes in Package Spec If we don't bundle .sig files together with packages, no need for spec updates. Changes in Elastic Package
Changes in Integrations
Changes in Package Storage
|
We do have to package sig files with package for air gapped environnement right? Do package registry validate or invalidate the signature authenticity? What if as an open source open I push a package with my own sig file? |
Yes, we'll include them in every Docker distribution.
Based on @jsoriano's reply above, the Package Registry should be "stupid" as there is a risk of being compromised. In this case I would leave signature verification to Kibana.
It's an interesting question, but I guess we aren't even close to that point. Let's first fully support community packages (third-party owners) and then we can talk about own signatures :) |
I'm working on the signing logic in elastic-package. I did some research and ProtonMail's library should do the trick: https://github.com/ProtonMail/gopenpgp#detached-signatures-for-plain-text-messages |
The implementation is done, so let me resolve in favor of elastic/elastic-package#583 . |
There are lots of components that would need changes for package signing and validation in Kibana.
Acceptance Criteria:
The text was updated successfully, but these errors were encountered: