Skip to content

Commit

Permalink
Merge branch 'main' into miscellaneous-policies-cel-part-3
Browse files Browse the repository at this point in the history
  • Loading branch information
MariamFahmy98 authored Jul 10, 2024
2 parents 18cd551 + 4edca3f commit a04f06c
Show file tree
Hide file tree
Showing 232 changed files with 10,995 additions and 114 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/check-actions.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Ensure SHA pinned actions
uses: zgosalvez/github-actions-ensure-sha-pinned-actions@76d1d8e0b075d7190b5d59b86da91c7bdbcc99b2 # v3.0.7
uses: zgosalvez/github-actions-ensure-sha-pinned-actions@b88cd0aad2c36a63e42c71f81cb1958fed95ac87 # v3.0.10
with:
allowlist: |
kyverno/chainsaw
10 changes: 5 additions & 5 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ jobs:
options: --user root
steps:
- name: Checkout code
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
with:
path: policies
- name: Run ah lint
Expand All @@ -33,14 +33,14 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
with:
path: policies
- name: Validate all policies
run: ./.hack/verify-files-structure.sh
working-directory: policies
- name: Clone Kyverno
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
with:
repository: kyverno/kyverno
path: kyverno
Expand All @@ -58,11 +58,11 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
with:
path: policies
- name: Checkout Kyverno
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
with:
repository: kyverno/kyverno
path: kyverno
Expand Down
7 changes: 5 additions & 2 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,12 @@ jobs:
- ^flux$
- ^flux-cel$
- ^istio$
- ^istio-cel$
- ^karpenter$
- ^kasten$
- ^kasten-cel$
- ^kubecost$
- ^kubecost-cel$
- ^kubeops$
- ^kubevirt$
- ^linkerd$
Expand All @@ -68,7 +71,7 @@ jobs:
- ^other$/^res
- ^other-cel$/^res
- ^other$/^[s-z]
- ^other-cel$/^res
- ^other-cel$/^[s-z]
- ^pod-security$
- ^pod-security-cel$
- ^psa$
Expand All @@ -82,7 +85,7 @@ jobs:
name: ${{ matrix.k8s-version.name }} - ${{ matrix.tests }}
steps:
- name: Checkout
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Setup Go
uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1
with:
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# yaml-language-server: $schema=https://raw.githubusercontent.com/kyverno/chainsaw/main/.schemas/json/test-chainsaw-v1alpha1.json
apiVersion: chainsaw.kyverno.io/v1alpha1
kind: Test
metadata:
creationTimestamp: null
name: enforce-sidecar-injection-namespace
spec:
steps:
- name: step-01
try:
- apply:
file: ../enforce-sidecar-injection-namespace.yaml
- patch:
resource:
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
name: enforce-sidecar-injection-namespace
spec:
validationFailureAction: Enforce
- assert:
file: policy-ready.yaml
- name: step-02
try:
- apply:
file: ns-good.yaml
- apply:
expect:
- check:
($error != null): true
file: ns-bad-disabled.yaml
- apply:
expect:
- check:
($error != null): true
file: ns-bad-nolabel.yaml
- apply:
expect:
- check:
($error != null): true
file: ns-bad-somelabel.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
apiVersion: v1
kind: Namespace
metadata:
labels:
istio-injection: disabled
name: bad-istio-sinj01
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: bad-istio-sinj03
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
apiVersion: v1
kind: Namespace
metadata:
labels:
foo: enabled
name: bad-istio-sinj02
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
apiVersion: v1
kind: Namespace
metadata:
labels:
istio-injection: enabled
name: good-istio-sinj01
---
apiVersion: v1
kind: Namespace
metadata:
labels:
foo: disabled
istio-injection: enabled
bar: enabled
name: good-istio-sinj02
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
name: enforce-sidecar-injection-namespace
status:
ready: true
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
apiVersion: cli.kyverno.io/v1alpha1
kind: Test
metadata:
name: enforce-sidecar-injection-namespace
policies:
- ../enforce-sidecar-injection-namespace.yaml
resources:
- ../.chainsaw-test/ns-bad-disabled.yaml
- ../.chainsaw-test/ns-bad-nolabel.yaml
- ../.chainsaw-test/ns-bad-somelabel.yaml
- ../.chainsaw-test/ns-good.yaml
results:
- policy: enforce-sidecar-injection-namespace
rule: check-istio-injection-enabled
kind: Namespace
resources:
- bad-istio-sinj01
- bad-istio-sinj02
- bad-istio-sinj03
result: fail
- policy: enforce-sidecar-injection-namespace
rule: check-istio-injection-enabled
kind: Namespace
resources:
- good-istio-sinj01
- good-istio-sinj02
result: pass

24 changes: 24 additions & 0 deletions istio-cel/enforce-sidecar-injection-namespace/artifacthub-pkg.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: enforce-sidecar-injection-namespace-cel
version: 1.0.0
displayName: Enforce Istio Sidecar Injection in CEL expressions
description: >-
In order for Istio to inject sidecars to workloads deployed into Namespaces, the label `istio-injection` must be set to `enabled`. This policy ensures that all new Namespaces set `istio-inject` to `enabled`.
install: |-
```shell
kubectl apply -f https://raw.githubusercontent.com/kyverno/policies/main/istio-cel/enforce-sidecar-injection-namespace/enforce-sidecar-injection-namespace.yaml
```
keywords:
- kyverno
- Istio
- CEL Expressions
readme: |
In order for Istio to inject sidecars to workloads deployed into Namespaces, the label `istio-injection` must be set to `enabled`. This policy ensures that all new Namespaces set `istio-inject` to `enabled`.
Refer to the documentation for more details on Kyverno annotations: https://artifacthub.io/docs/topics/annotations/kyverno/
annotations:
kyverno/category: "Istio in CEL"
kyverno/kubernetesVersion: "1.26-1.27"
kyverno/subject: "Namespace"
digest: 123feb2a8d1b2743e33b1f91ddf7291c47eedcf2c24ae537a1d3afe6c503338d
createdAt: "2024-05-12T04:38:32Z"

Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
name: enforce-sidecar-injection-namespace
annotations:
policies.kyverno.io/title: Enforce Istio Sidecar Injection in CEL expressions
policies.kyverno.io/category: Istio in CEL
policies.kyverno.io/severity: medium
kyverno.io/kyverno-version: 1.11.0
policies.kyverno.io/minversion: 1.11.0
kyverno.io/kubernetes-version: "1.26-1.27"
policies.kyverno.io/subject: Namespace
policies.kyverno.io/description: >-
In order for Istio to inject sidecars to workloads deployed into Namespaces, the label
`istio-injection` must be set to `enabled`. This policy ensures that all new Namespaces
set `istio-inject` to `enabled`.
spec:
validationFailureAction: Audit
background: true
rules:
- name: check-istio-injection-enabled
match:
any:
- resources:
kinds:
- Namespace
operations:
- CREATE
validate:
cel:
expressions:
- expression: "has(object.metadata.labels) && 'istio-injection' in object.metadata.labels && object.metadata.labels['istio-injection'] == 'enabled'"
message: "All new Namespaces must have Istio sidecar injection enabled."

33 changes: 33 additions & 0 deletions istio-cel/enforce-strict-mtls/.chainsaw-test/chainsaw-test.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# yaml-language-server: $schema=https://raw.githubusercontent.com/kyverno/chainsaw/main/.schemas/json/test-chainsaw-v1alpha1.json
apiVersion: chainsaw.kyverno.io/v1alpha1
kind: Test
metadata:
creationTimestamp: null
name: enforce-strict-mtls
spec:
steps:
- name: step-01
try:
- apply:
file: ../enforce-strict-mtls.yaml
- patch:
resource:
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
name: enforce-strict-mtls
spec:
validationFailureAction: Enforce
- assert:
file: policy-ready.yaml
- assert:
file: crd-assert.yaml
- name: step-02
try:
- apply:
file: pa-good.yaml
- apply:
expect:
- check:
($error != null): true
file: pa-bad.yaml
13 changes: 13 additions & 0 deletions istio-cel/enforce-strict-mtls/.chainsaw-test/crd-assert.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: peerauthentications.security.istio.io
spec: {}
status:
acceptedNames:
kind: PeerAuthentication
listKind: PeerAuthenticationList
plural: peerauthentications
singular: peerauthentication
storedVersions:
- v1beta1
26 changes: 26 additions & 0 deletions istio-cel/enforce-strict-mtls/.chainsaw-test/pa-bad.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
name: pa-bad01
spec:
mtls:
mode: PERMISSIVE
---
apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
name: pa-bad02
spec:
mtls:
mode: DISABLE
---
apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
name: pa-bad03
spec:
selector:
matchLabels:
app: finance
mtls:
mode: DISABLE
39 changes: 39 additions & 0 deletions istio-cel/enforce-strict-mtls/.chainsaw-test/pa-good.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
name: good-pa01
spec:
mtls:
mode: STRICT
---
apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
name: good-pa02
spec:
mtls:
mode: UNSET
---
apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
name: good-pa03
spec: {}
---
apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
name: good-pa04
spec:
selector:
matchLabels:
app: finance
mtls:
mode: STRICT
---
apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
name: good-pa05
spec:
mtls: {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
name: enforce-strict-mtls
status:
ready: true
Loading

0 comments on commit a04f06c

Please sign in to comment.