-
Notifications
You must be signed in to change notification settings - Fork 60
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
falcoctl cosign signature verification #174
Comments
Hi @falcosecurity/falcoctl-maintainers I've some points in mind and related questions:
|
Update: there's work in progress from ORAS and OCI to unify the artifact specs (OCI and ORAS) and consequent support from ORAS - of Go library and cli have already release candidates. Sources: |
@maxgio92 I like this proposal and I believe the next release of ORAS CLI and library could be the appropriate solution to support falcoctl sign/verify commands. The reason is that we are also working on similar things in Notary v2 (Notation) for signing and verifying OCI artifacts. Currently, Notation is using ORAS-go. The signatures are also persisted as ORAS artifact manifest. |
@maxgio92 BTW, Notation-go provides APIs for signing and verifying OCI artifacts. Currently, notation-go is also towards a more extensible framework for easy integration, and we are preparing for the API doc. |
Hello there, and thank you for this discussion! |
Thank you. |
cc @cpanato |
Thank you so much @FeynmanZhou! |
Ok, my two cents on this. I know that for @FeynmanZhou this could be obvious, but I am new to these topics so I will write quite a bit, just to have a validation of what I have understood and find the right way to solve the problem. We are in front of some alternatives, so let's start from the first one. The first option we have is to put the signature inside one of the layers of the manifest. I believe that Helm did something similar in the past. I think we all agree that this approach is not optimal, since the signature is not part of the artifact and we may want to have a way to extend the artifact even after we pushed it (classic examples, SBOMs or scan results) and without modifying the digest, so this is the reason why I would not use this approach. The second approach is Things get really better with
Plus, when the registry will be capable, the Referrers API can be used, that can enable us to discover and get a list of all the artifacts that points to a given one, so that the signature can be retrieved and verified. This for sure is the cleanest way to solve the problem (thank you ORAS authors for doing so!). Now the problem is that our registry (GHCR in this case), does not yet implement the Referrers API as far as I know. So two questions:
By the way, I have seen that we can also take advantage of Lastly, it would be really nice to see a bump to Hope the conclusions I made are right and that you can answer my questions, thanks! |
@leogr
As I know, the OCI Distribution-spec just cut the v1.1.0-rc1 in Sep. I am not sure if GHCR will adopt the rc.1 now.
I can ask my colleagues to confirm.
@shizhMSFT @Wwwsylvia @qweeah Could you pls help to confirm if this transition is already supported by ORAS-go v2.0.0-rc.4?
Yes, we are toward the same goal! It was planned in notation-go and hopefully it will bump in Nov. See notaryproject/notation-go#136 |
I am trying to get a timeline from GHCR for when they will be able to support OCI 1.1 spec. Will update you if I learn something soon. |
According to the upgrade procedures of the distribution-spec, the remote registry may do the transition at the server side. In the case of the remote server not doing the transition, the transition still can be done at the client side using |
Thanks @shizhMSFT @toddysm @FeynmanZhou @loresuso !!! I think individual implementations of generic artifacts (signatures, SBOM, attestation, etc.) storage have been around before the introduction of what then OCI and ORAS communities just contributed and worked to unify into OCI as standard (artifact spec and reference API to link artifacts). Now that registries are working too to stick to the fresh specification (e.g. Docker Hub) I believe - also becasue falcoctl is (re)fresh too - can make sense to follow OCI through the notation library. My 2 cents |
An important point: do we want to include both the signin and verification features inside falcoctl? Or, do we want to include verification only and instead delegate signin to external tools (e.g. supposed to run in CI alongside a falcoctl artifact push)? In both cases, a decision on the API is needed IMO. Moreover, as notaryproject/notation-go#136 will be completed I'd like to work on this and then propose it in draft if you agree. |
hi @maxgio92, you hit the primary point that we’re working towards; implementing standards (cose for singing), so any project, product or service can implement signing or verification across those standards. |
Hey folks, I've read this interesting discussion and some random thoughts came to my mind:
As of today, Cosign and Notation seem equivalent to me, and I guess they both will converge to the OCI distribution-spec (sigstore confirmed their intention here. We may think of supporting both, IMO. Finally, I believe it is worth bringing this discussion up to the whole Falcosecurity organization since there may be other sub-projects that want to sign their artifacts (likely, we want to use the same standards/tools across the entire org). Here is an example of a sub-project using cosign 👉 falcosecurity/falcosidekick#302 cc @falcosecurity/core-maintainers |
The Helm way 👉 falcosecurity/charts#427 |
Thanks @leogr. I see the point of the responsibility of verifying only the authenticity of the artifacts. And I agree as we discussed in the meantime. I agree with the fact that all the implementations will converge to the OCI specification for artifacfs, for distribution. (as a detail, then we may want to discuss the encoding and signing algorithms to support, e.g. Notation supports JOSE and COSE). I also agree with opening the discussion to the community in order to start talking about general signing at Falco organization-level, so that we make consistent choices on the architectures. |
As of the discussion of the today's supply chain security working group [1], I think we are on the same page on the responsibilities of the tools for the Falco OCI artifact's signature and signature verification:
[1] References:
|
I believe we can use this issue for the verify feature of Falcoctl while keeping two separate ones for rules and plugins. WDYT? |
I agree @LucaGuerra |
This issue tracks the feature proposal as for #132 to provide commands to:
in order to guarantee the authenticity and integrity of the Falco artifacts distributed by
falcoctl
.Proposal
As
falcoctl
followed a design where OCI registries are used as storage, for general OCI artifacts, it can make sense to store every artifact, signatures included, as OCI artifacts in registry.Additional context
The text was updated successfully, but these errors were encountered: