Secure Helm chart deployments by validating chart integrity, scanning templates for misconfigurations, and enforcing security contexts in Kubernetes releases.
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Um comando direto ignora o prompt de revisão. Verifique a origem antes de executá-lo.
Instruções da origem · Visualização somente leitura
name
securing-helm-chart-deployments
description
Secure Helm chart deployments by validating chart integrity, scanning templates for misconfigurations, and enforcing security contexts in Kubernetes releases.
Helm is the Kubernetes package manager. Securing Helm deployments requires validating chart provenance, scanning templates for security misconfigurations, enforcing pod security contexts, managing secrets securely, and controlling RBAC for Helm operations.
When to Use
When deploying or configuring securing helm chart deployments capabilities in your environment
When establishing security controls aligned to compliance requirements
When building or improving security architecture for this domain
When conducting security assessments that require this implementation
Common Misconfigurations & Verification
The trap with Helm is that hardened values.yaml defaults are silently dropped before they reach the cluster:
Values that never render: a securityContext block in values.yaml does nothing unless the template actually references it ({{- toYaml .Values.securityContext | nindent 12 }}). Many third-party charts ignore your values or nest them under a different key, so runAsNonRoot/readOnlyRootFilesystem/drop: [ALL] quietly vanish.
Overrides win last: a later -f values-prod.yaml or --set can re-enable privileged, hostNetwork, or automountServiceAccountToken: true; the effective manifest is what matters, not the chart default.
Scanning the chart, not the release: running kubesec/trivy on the chart source misses values-driven config - always scan the rendered output.
Unverified provenance / mutable images:helm install without --verify, or image.tag instead of a digest, breaks supply-chain assumptions.
Verify: render with the exact prod values (helm template <rel> ./chart -f values-prod.yaml > rendered.yaml) and scan that file (kubesec scan rendered.yaml, trivy config rendered.yaml, kube-linter lint rendered.yaml); then confirm on the live release with helm get manifest <rel> and kubectl get pod <p> -o jsonpath='{.spec.containers[*].securityContext}' that the context survived. Confirm helm verify/ passes against a known-good keyring.
# values.yaml - Security hardened defaultssecurityContext:runAsNonRoot:truerunAsUser:1000runAsGroup:3000fsGroup:2000readOnlyRootFilesystem:trueallowPrivilegeEscalation:falsecapabilities:drop:-ALLpodSecurityContext:seccompProfile:type:RuntimeDefaultresources:limits:cpu:500mmemory:512Mirequests:cpu:100mmemory:128MinetworkPolicy:enabled:trueserviceAccount:create:trueautomountServiceAccountToken:falseimage:pullPolicy:Always# Use digest instead of tag for immutability# tag: "1.0.0"# digest: "sha256:abc123..."