Skip to content

Commit f51c98e

Browse files
committed
Fail when verifying with insecure
If implemented we fails when trying to verify with insecure set. This will likely change once cosign add support for insecure registries. Signed-off-by: Soule BA <[email protected]>
1 parent e2f4e5e commit f51c98e

File tree

2 files changed

+32
-0
lines changed

2 files changed

+32
-0
lines changed

controllers/ocirepository_controller.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -399,6 +399,17 @@ func (r *OCIRepositoryReconciler) reconcileSource(ctx context.Context, obj *sour
399399
} else if !obj.GetArtifact().HasRevision(revision) ||
400400
conditions.GetObservedGeneration(obj, sourcev1.SourceVerifiedCondition) != obj.Generation ||
401401
conditions.IsFalse(obj, sourcev1.SourceVerifiedCondition) {
402+
403+
// Insecure is not supported for verification
404+
if obj.Spec.Insecure {
405+
e := serror.NewGeneric(
406+
fmt.Errorf("cosign does not support insecure registries"),
407+
sourcev1.VerificationError,
408+
)
409+
conditions.MarkFalse(obj, sourcev1.SourceVerifiedCondition, e.Reason, e.Err.Error())
410+
return sreconcile.ResultEmpty, e
411+
}
412+
402413
err := r.verifySignature(ctx, obj, url, opts.verifyOpts...)
403414
if err != nil {
404415
provider := obj.Spec.Verify.Provider

controllers/ocirepository_controller_test.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1036,6 +1036,7 @@ func TestOCIRepository_reconcileSource_verifyOCISourceSignature(t *testing.T) {
10361036
tests := []struct {
10371037
name string
10381038
reference *sourcev1.OCIRepositoryRef
1039+
insecure bool
10391040
digest string
10401041
want sreconcile.Result
10411042
wantErr bool
@@ -1132,6 +1133,22 @@ func TestOCIRepository_reconcileSource_verifyOCISourceSignature(t *testing.T) {
11321133
*conditions.TrueCondition(sourcev1.SourceVerifiedCondition, "Verified", "verified"),
11331134
},
11341135
},
1136+
{
1137+
name: "insecure registries are not supported",
1138+
reference: &sourcev1.OCIRepositoryRef{
1139+
Tag: "6.1.4",
1140+
},
1141+
digest: img4.digest.Hex,
1142+
shouldSign: true,
1143+
insecure: true,
1144+
wantErr: true,
1145+
want: sreconcile.ResultEmpty,
1146+
assertConditions: []metav1.Condition{
1147+
*conditions.TrueCondition(meta.ReconcilingCondition, "NewRevision", "new revision '<digest>' for '<url>'"),
1148+
*conditions.TrueCondition(sourcev1.ArtifactOutdatedCondition, "NewRevision", "new revision '<digest>' for '<url>'"),
1149+
*conditions.FalseCondition(sourcev1.SourceVerifiedCondition, sourcev1.VerificationError, "cosign does not support insecure registries"),
1150+
},
1151+
},
11351152
}
11361153

11371154
builder := fakeclient.NewClientBuilder().WithScheme(testEnv.GetScheme())
@@ -1181,6 +1198,10 @@ func TestOCIRepository_reconcileSource_verifyOCISourceSignature(t *testing.T) {
11811198
},
11821199
}
11831200

1201+
if tt.insecure {
1202+
obj.Spec.Insecure = true
1203+
}
1204+
11841205
if !tt.keyless {
11851206
obj.Spec.Verify.SecretRef = &meta.LocalObjectReference{Name: "cosign-key"}
11861207
}

0 commit comments

Comments
 (0)