All Policies
Check Long-Lived Secrets in ServiceAccounts
Before version 1.24, Kubernetes automatically generated Secret-based tokens for ServiceAccounts. To distinguish between automatically generated tokens and manually created ones, Kubernetes checks for a reference from the ServiceAccount's secrets field. If the Secret is referenced in the secrets field, it is considered an auto-generated legacy token. These legacy Tokens can be of security concern and should be audited.
Policy Definition
/other/check-serviceaccount-secrets/check-serviceaccount-secrets.yaml
1apiVersion: kyverno.io/v1
2kind: ClusterPolicy
3metadata:
4 name: check-serviceaccount-secrets
5 annotations:
6 policies.kyverno.io/title: Check Long-Lived Secrets in ServiceAccounts
7 policies.kyverno.io/category: Security
8 policies.kyverno.io/severity: medium
9 kyverno.io/kyverno-version: 1.11.1
10 kyverno.io/kubernetes-version: "1.27"
11 policies.kyverno.io/subject: Secret,ServiceAccount
12 policies.kyverno.io/description: >-
13 Before version 1.24, Kubernetes automatically generated Secret-based tokens
14 for ServiceAccounts. To distinguish between automatically generated tokens
15 and manually created ones, Kubernetes checks for a reference from the
16 ServiceAccount's secrets field. If the Secret is referenced in the secrets
17 field, it is considered an auto-generated legacy token. These legacy Tokens can
18 be of security concern and should be audited.
19spec:
20 validationFailureAction: Audit
21 background: true
22 rules:
23 - name: deny-secrets
24 match:
25 any:
26 - resources:
27 kinds:
28 - ServiceAccount
29 validate:
30 message: "Long-lived API tokens are not allowed."
31 pattern:
32 X(secrets):