42 lines
1.3 KiB
YAML
42 lines
1.3 KiB
YAML
apiVersion: kyverno.io/v1
|
|
kind: ClusterPolicy
|
|
metadata:
|
|
name: restrict-gateway-client-label
|
|
annotations:
|
|
policies.kyverno.io/title: Restrict Gateway client privilege label
|
|
policies.kyverno.io/category: Gateway API
|
|
policies.kyverno.io/severity: medium
|
|
policies.kyverno.io/description: >-
|
|
Only approved namespaces may set gateway.quorate.internal/allow-gateway-client.
|
|
spec:
|
|
validationFailureAction: Enforce
|
|
background: true
|
|
rules:
|
|
- name: gateway-client-label-namespace-allowlist
|
|
match:
|
|
any:
|
|
- resources:
|
|
kinds:
|
|
- Pod
|
|
preconditions:
|
|
all:
|
|
- key: >-
|
|
{{ request.object.metadata.labels."gateway.quorate.internal/allow-gateway-client" || '' }}
|
|
operator: Equals
|
|
value: "true"
|
|
validate:
|
|
message: >-
|
|
gateway.quorate.internal/allow-gateway-client is only allowed on pods
|
|
in approved OIDC client namespaces (forgejo, forgejo-public, grafana,
|
|
longhorn, quay).
|
|
deny:
|
|
conditions:
|
|
all:
|
|
- key: "{{ request.namespace }}"
|
|
operator: AnyNotIn
|
|
value:
|
|
- forgejo
|
|
- forgejo-public
|
|
- grafana
|
|
- longhorn
|
|
- quay
|