All Policies
Require Istio AuthorizationPolicies
An AuthorizationPolicy is used to provide access controls for traffic in the mesh and can be defined at multiple levels. For the Namespace level, all Namespaces should have at least one AuthorizationPolicy. This policy, designed to run in background mode for reporting purposes, ensures every Namespace has at least one AuthorizationPolicy.
Policy Definition
/istio/require-authorizationpolicy/require-authorizationpolicy.yaml
1apiVersion: kyverno.io/v1
2kind: ClusterPolicy
3metadata:
4 name: require-authorizationpolicies
5 annotations:
6 policies.kyverno.io/title: Require Istio AuthorizationPolicies
7 policies.kyverno.io/category: Istio
8 policies.kyverno.io/severity: medium
9 kyverno.io/kyverno-version: 1.8.0
10 policies.kyverno.io/minversion: 1.6.0
11 kyverno.io/kubernetes-version: "1.24"
12 policies.kyverno.io/subject: AuthorizationPolicy
13 policies.kyverno.io/description: >-
14 An AuthorizationPolicy is used to provide access controls for traffic in the mesh and
15 can be defined at multiple levels. For the Namespace level, all Namespaces should have
16 at least one AuthorizationPolicy. This policy, designed to run in background mode for reporting
17 purposes, ensures every Namespace has at least one AuthorizationPolicy.
18spec:
19 validationFailureAction: Audit
20 background: true
21 rules:
22 - name: check-authz-pol
23 match:
24 any:
25 - resources:
26 kinds:
27 - Namespace
28 context:
29 - name: allauthorizationpolicies
30 apiCall:
31 urlPath: "/apis/security.istio.io/v1beta1/authorizationpolicies"
32 jmesPath: "items[].metadata.namespace"
33 validate:
34 message: "All Namespaces must have an AuthorizationPolicy."
35 deny:
36 conditions:
37 all:
38 - key: "{{request.object.metadata.name}}"
39 operator: AnyNotIn
40 value: "{{allauthorizationpolicies}}"