Skip to content

Commit

Permalink
feat: add chainsaw test for policy ordering in authz server (#297)
Browse files Browse the repository at this point in the history
Signed-off-by: Vishal Choudhary <[email protected]>
  • Loading branch information
vishal-chdhry authored Jan 6, 2025
1 parent 1583e5c commit 7c35858
Show file tree
Hide file tree
Showing 5 changed files with 129 additions and 0 deletions.
41 changes: 41 additions & 0 deletions tests/e2e/authz-server/policy-ordering/chainsaw-test.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
apiVersion: chainsaw.kyverno.io/v1alpha1
kind: Test
metadata:
name: policy-ordering
spec:
namespace: app
steps:
- try:
- create:
file: ./istio-policy.yaml
- create:
file: ./policy-b.yaml
- create:
file: ./shell.yaml
- wait:
apiVersion: v1
kind: Pod
timeout: 1m
for:
condition:
name: Ready
value: 'true'
- script:
content: >
kubectl exec -n $NAMESPACE deploy/curl -- curl -s -w "\nhttp_code=%{http_code}" httpbin:8000/get -H "x-force-authorized: true"
check:
($stdout): |-
Unauthorized Request from Policy B
http_code=403
- create:
file: ./policy-a.yaml
- script:
content: >
kubectl exec -n $NAMESPACE deploy/curl -- curl -s -w "\nhttp_code=%{http_code}" httpbin:8000/get -H "x-force-authorized: true"
check:
($stdout): |-
Unauthorized Request from Policy A
http_code=403
finally:
- sleep:
duration: 10s
14 changes: 14 additions & 0 deletions tests/e2e/authz-server/policy-ordering/istio-policy.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
apiVersion: security.istio.io/v1
kind: AuthorizationPolicy
metadata:
name: policy
namespace: istio-system
spec:
selector:
matchLabels:
ext-authz: enabled
action: CUSTOM
provider:
name: kyverno-authz-server
rules:
- {}
13 changes: 13 additions & 0 deletions tests/e2e/authz-server/policy-ordering/policy-a.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# yaml-language-server: $schema=../../../../.schemas/json/authorizationpolicy-envoy-v1alpha1.json
apiVersion: envoy.kyverno.io/v1alpha1
kind: AuthorizationPolicy
metadata:
name: policy-a
spec:
deny:
- response: >
envoy
.Denied(403)
.WithBody("Unauthorized Request from Policy A")
.Response()
13 changes: 13 additions & 0 deletions tests/e2e/authz-server/policy-ordering/policy-b.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# yaml-language-server: $schema=../../../../.schemas/json/authorizationpolicy-envoy-v1alpha1.json
apiVersion: envoy.kyverno.io/v1alpha1
kind: AuthorizationPolicy
metadata:
name: policy-b
spec:
deny:
- response: >
envoy
.Denied(403)
.WithBody("Unauthorized Request from Policy B")
.Response()
48 changes: 48 additions & 0 deletions tests/e2e/authz-server/policy-ordering/shell.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
apiVersion: v1
kind: ServiceAccount
metadata:
name: curl
---
apiVersion: v1
kind: Service
metadata:
name: curl
labels:
app: curl
service: curl
spec:
ports:
- port: 80
name: http
selector:
app: curl
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: curl
spec:
replicas: 1
selector:
matchLabels:
app: curl
template:
metadata:
labels:
app: curl
spec:
terminationGracePeriodSeconds: 0
serviceAccountName: curl
containers:
- name: curl
image: curlimages/curl
command: ["/bin/sleep", "infinity"]
imagePullPolicy: IfNotPresent
volumeMounts:
- mountPath: /etc/curl/tls
name: secret-volume
volumes:
- name: secret-volume
secret:
secretName: curl-secret
optional: true

0 comments on commit 7c35858

Please sign in to comment.