Rule Metadata

Last updated: 2024-01-15
🟡
Severity
MEDIUM
⚙️
Category
Configuration & Resource Hygiene
Version
v1.0.0
Downloads
1.2K
Author: Spotter Security Team
Created: 2024-01-10
Compliance:
CIS NIST

CPU Limits Not Set

Containers should have CPU limits defined to prevent excessive CPU consumption.

YAML Configuration

rule.yaml YAML
apiVersion: rules.spotter.dev/v1alpha1
kind: SpotterRule
metadata:
  name: spotter-config-003
  labels:
    severity: "medium"
    category: "config"
  annotations:
    rules.spotter.dev/title: "CPU Limits Not Set"
    rules.spotter.dev/version: "1.0.0"
    rules.spotter.dev/cwe: "CWE-770"
    rules.spotter.dev/description: "Containers should have CPU limits defined to prevent excessive CPU consumption."
spec:
  match:
    resources:
      kubernetes:
        apiGroups:
          - ""
          - "apps"
          - "serving.knative.dev"
        versions:
          - "v1"
        kinds:
          - Pod
          - Deployment
          - StatefulSet
          - DaemonSet
          - Job
          - Configuration
        namespaces:
          include: ["*"]
          exclude: ["kube-system", "kube-public"]
  cel: |
    (object.kind == 'Pod' && has(object.spec.containers) && object.spec.containers.exists(c, !has(c.resources) || !has(c.resources.limits) || !has(c.resources.limits.cpu))) ||
    (object.kind == 'Configuration' && has(object.spec.template.spec.containers) && object.spec.template.spec.containers.exists(c, !has(c.resources) || !has(c.resources.limits) || !has(c.resources.limits.cpu))) ||
    (object.kind in ['Deployment', 'StatefulSet', 'DaemonSet', 'Job'] && has(object.spec.template.spec.containers) && object.spec.template.spec.containers.exists(c, !has(c.resources) || !has(c.resources.limits) || !has(c.resources.limits.cpu)))
  remediation:
    manual: "Set CPU limits for all containers in the pod spec."
  references:
    - title: "Managing Resources for Containers"
      url: "https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/"