You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/spec/v1beta2/helmcharts.md
+60-6
Original file line number
Diff line number
Diff line change
@@ -252,15 +252,20 @@ For practical information, see
252
252
253
253
**Note:** This feature is available only for Helm charts fetched from an OCI Registry.
254
254
255
-
`.spec.verify`is an optional field to enable the verification of [Cosign](https://github.com/sigstore/cosign)
255
+
`.spec.verify`is an optional field to enable the verification of [Cosign](https://github.com/sigstore/cosign) or [Notation](https://github.com/notaryproject/notation)
256
256
signatures. The field offers three subfields:
257
257
258
-
- `.provider`, to specify the verification provider. Only supports `cosign` at present.
258
+
- `.provider`, to specify the verification provider. The supported options are `cosign` and `notation` at present.
259
259
- `.secretRef.name`, to specify a reference to a Secret in the same namespace as
260
-
the HelmChart, containing the Cosign public keys of trusted authors.
261
-
- `.matchOIDCIdentity`, to specify a list of OIDC identity matchers. Please see
260
+
the HelmChart, containing the public keys of trusted authors. For Notation this Secret should also include the [trust policy](https://github.com/notaryproject/specifications/blob/v1.0.0/specs/trust-store-trust-policy.md#trust-policy) in
261
+
addition to the CA certificate.
262
+
- `.matchOIDCIdentity`, to specify a list of OIDC identity matchers (only supported when using `cosign` as the verification provider). Please see
262
263
[Keyless verification](#keyless-verification) for more details.
263
264
265
+
#### Cosign
266
+
267
+
The `cosign` provider can be used to verify the signature of an OCI artifact using either a known public key or via the [Cosign Keyless](https://github.com/sigstore/cosign/blob/main/KEYLESS.md) procedure.
268
+
264
269
```yaml
265
270
---
266
271
apiVersion: source.toolkit.fluxcd.io/v1beta2
@@ -281,7 +286,7 @@ following attributes to the HelmChart's `.status.conditions`:
281
286
- `status: "True"`
282
287
- `reason: Succeeded`
283
288
284
-
#### Public keys verification
289
+
##### Public keys verification
285
290
286
291
To verify the authenticity of HelmChart hosted in an OCI Registry, create a Kubernetes
287
292
secret with the Cosign public keys:
@@ -303,7 +308,7 @@ Note that the keys must have the `.pub` extension for Flux to make use of them.
303
308
Flux will loop over the public keys and use them to verify a HelmChart's signature.
304
309
This allows for older HelmCharts to be valid as long as the right key is in the secret.
305
310
306
-
#### Keyless verification
311
+
##### Keyless verification
307
312
308
313
For publicly available HelmCharts, which are signed using the
@@ -362,6 +367,55 @@ instance hosted at [rekor.sigstore.dev](https://rekor.sigstore.dev/).
362
367
Note that keyless verification is an **experimental feature**, using
363
368
custom root CAs or self-hosted Rekor instances are not currently supported.
364
369
370
+
#### Notation
371
+
372
+
The `notation` provider can be used to verify the signature of an OCI artifact using known
373
+
trust policy and CA certificate.
374
+
375
+
```yaml
376
+
---
377
+
apiVersion: source.toolkit.fluxcd.io/v1beta2
378
+
kind: HelmChart
379
+
metadata:
380
+
name: podinfo
381
+
spec:
382
+
verify:
383
+
provider: notation
384
+
secretRef:
385
+
name: notation-config
386
+
```
387
+
388
+
When the verification succeeds, the controller adds a Condition with the
389
+
following attributes to the HelmChart's `.status.conditions`:
390
+
391
+
- `type: SourceVerified`
392
+
- `status: "True"`
393
+
- `reason: Succeeded`
394
+
395
+
To verify the authenticity of an OCI artifact, create a Kubernetes secret
396
+
containing Certificate Authority (CA) root certificates and the a `trust policy`
397
+
398
+
```yaml
399
+
---
400
+
apiVersion: v1
401
+
kind: Secret
402
+
metadata:
403
+
name: notation-config
404
+
type: Opaque
405
+
data:
406
+
certificate1.pem: <BASE64>
407
+
certificate2.crt: <BASE64>
408
+
trustpolicy.json: <BASE64>
409
+
```
410
+
411
+
Note that the CA certificates must have either `.pem` or `.crt` extension and your trust policy must
412
+
be named `trustpolicy.json` for Flux to make use of them.
413
+
414
+
For more information on the signing and verification process see [Signing and Verification Workflow](https://github.com/notaryproject/specifications/blob/v1.0.0/specs/signing-and-verification-workflow.md).
415
+
416
+
Flux will loop over the certificates and use them to verify an artifact's signature.
417
+
This allows for older artifacts to be valid as long as the right certificate is in the secret.
@@ -593,6 +602,55 @@ instance hosted at [rekor.sigstore.dev](https://rekor.sigstore.dev/).
593
602
Note that keyless verification is an **experimental feature**, using
594
603
custom root CAs or self-hosted Rekor instances are not currently supported.
595
604
605
+
#### Notation
606
+
607
+
The `notation` provider can be used to verify the signature of an OCI artifact using known
608
+
trust policy and CA certificate.
609
+
610
+
```yaml
611
+
---
612
+
apiVersion: source.toolkit.fluxcd.io/v1beta2
613
+
kind: OCIRepository
614
+
metadata:
615
+
name: <repository-name>
616
+
spec:
617
+
verify:
618
+
provider: notation
619
+
secretRef:
620
+
name: notation-config
621
+
```
622
+
623
+
When the verification succeeds, the controller adds a Condition with the
624
+
following attributes to the OCIRepository's `.status.conditions`:
625
+
626
+
- `type: SourceVerified`
627
+
- `status: "True"`
628
+
- `reason: Succeeded`
629
+
630
+
To verify the authenticity of an OCI artifact, create a Kubernetes secret
631
+
containing Certificate Authority (CA) root certificates and the a `trust policy`
632
+
633
+
```yaml
634
+
---
635
+
apiVersion: v1
636
+
kind: Secret
637
+
metadata:
638
+
name: notation-config
639
+
type: Opaque
640
+
data:
641
+
certificate1.pem: <BASE64>
642
+
certificate2.crt: <BASE64>
643
+
trustpolicy.json: <BASE64>
644
+
```
645
+
646
+
Note that the CA certificates must have either `.pem` or `.crt` extension and your trust policy must
647
+
be named `trustpolicy.json` for Flux to make use of them.
648
+
649
+
For more information on the signing and verification process see [Signing and Verification Workflow](https://github.com/notaryproject/specifications/blob/v1.0.0/specs/signing-and-verification-workflow.md).
650
+
651
+
Flux will loop over the certificates and use them to verify an artifact's signature.
652
+
This allows for older artifacts to be valid as long as the right certificate is in the secret.
653
+
596
654
### Suspend
597
655
598
656
`.spec.suspend`is an optional field to suspend the reconciliation of a
0 commit comments