Files
Homelabv4/infrastructure/kyverno/policies/require-drop-all-capabilities.yaml
Scooby HuskyandClaude Opus 4.6 131cbca4a6 Fix ArgoCD ServerSideDiff permanent OutOfSync diffs
Add explicit CRD/API defaults to manifests that were causing ArgoCD's
SSA dry-run to produce results different from live state:

- HTTPRoutes: add group, kind, weight defaults to parentRefs/backendRefs
- Kyverno ClusterPolicies: add skipBackgroundRequests, allowExistingViolations
- Tetragon TracingPolicies: add return, maxData, resolve, returnCopy defaults
- Gateway certificateRefs: add group="" default
- Guacamole Gateway: add group="" to certificateRefs

Add ignoreDifferences for resources that legitimately differ:
- Cilium cert Secrets (auto-generated, data always differs)
- Istio ValidatingWebhookConfiguration failurePolicy (istiod mutates)
- Crowdsec LAPI Secrets (randomly generated)
- ServiceMonitor/PodMonitor relabeling action defaults
- StatefulSet volumeClaimTemplates apiVersion/kind defaults

Persist argocd-cm ignoreDifferences config in ArgoCD Helm values.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 17:32:59 -05:00

75 lines
2.2 KiB
YAML

apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
name: require-drop-all-capabilities
annotations:
policies.kyverno.io/title: Require Drop All Capabilities
policies.kyverno.io/category: DoD STIG
policies.kyverno.io/severity: high
policies.kyverno.io/description: >-
STIG V-242398: Containers must drop all Linux capabilities and only
add back specific capabilities that are required. This follows the
principle of least privilege for container security contexts.
spec:
validationFailureAction: Audit
background: true
rules:
- name: require-drop-all
skipBackgroundRequests: true
match:
any:
- resources:
kinds:
- Pod
exclude:
any:
- resources:
namespaces:
- kube-system
- rook-ceph
- istio-system
- prometheus
- kyverno
- argocd
- cert-manager
- cnpg-system
- envoy-gateway-system
- kiali-operator
- mariadb-system
- redis-operator
- reloader
- scylla-operator
- vault
- mqtt
- gitlab
- netbird
- grafana
- crowdsec
- external-dns
- nextcloud
- home-assistant
- guacamole
- teslamate
- unpoller
- frigate
- authentik
- checkov
- external-secrets
validate:
allowExistingViolations: true
message: >-
Containers must drop ALL capabilities (STIG V-242398).
Add securityContext.capabilities.drop: ["ALL"] to each container.
pattern:
spec:
containers:
- securityContext:
capabilities:
drop:
- ALL
=(initContainers):
- securityContext:
capabilities:
drop:
- ALL