Kubernetes Security Policies
Comprehensive guidance for implementing security policies in Kubernetes clusters, covering Pod Security Standards, Network Policies, RBAC, Security Contexts, admission control, secrets management, and runtime security for production-grade hardened deployments.
When to Use This Skill
- Implementing Pod Security Standards (PSS/PSA) across namespaces
- Designing and enforcing Network Policies for micro-segmentation
- Configuring RBAC with least-privilege access control
- Setting Security Contexts for container hardening
- Deploying admission controllers (OPA/Gatekeeper, Kyverno)
- Managing secrets and sensitive data securely
- Implementing image security and vulnerability scanning
- Enforcing runtime security policies and threat detection
- Meeting compliance requirements (CIS, NIST, PCI-DSS, SOC2)
- Conducting security audits and hardening assessments
Core Security Concepts
Pod Security Standards (PSS):
Three progressive security levels enforced via Pod Security Admission (PSA):
- Privileged: Unrestricted (default)
- Baseline: Prevents known privilege escalations
- Restricted: Pod hardening best practices (production recommended)
Network Policies:
Zero-trust micro-segmentation controlling pod-to-pod and pod-to-external traffic using label selectors and namespace isolation.
RBAC (Role-Based Access Control):
Least-privilege access control using ServiceAccounts, Roles, RoleBindings for namespace-scoped permissions, and ClusterRoles for cluster-wide access.
Security Contexts:
Container and pod-level security settings including user/group IDs, capabilities, seccomp profiles, and filesystem restrictions.
Admission Control:
Policy enforcement at API admission time using OPA Gatekeeper (Rego) or Kyverno (YAML) to validate, mutate, or reject resources.
Secrets Management:
External secret storage integration (Vault, AWS Secrets Manager, Sealed Secrets) instead of native Kubernetes secrets.
Image Security:
Vulnerability scanning, signature verification, digest-based immutability, and private registry authentication.
Quick Reference
| Task |
Load reference |
| Pod Security Standards (PSS/PSA) |
skills/kubernetes-security-policies/references/pod-security-standards.md |
| Network Policies |
skills/kubernetes-security-policies/references/network-policies.md |
| RBAC (Roles, ServiceAccounts) |
skills/kubernetes-security-policies/references/rbac.md |
| Security Contexts (capabilities, seccomp) |
skills/kubernetes-security-policies/references/security-contexts.md |
| Admission Control (OPA, Kyverno) |
skills/kubernetes-security-policies/references/admission-control.md |
| Secrets Management (Vault, ESO) |
skills/kubernetes-security-policies/references/secrets-management.md |
| Image Security (scanning, signing) |
skills/kubernetes-security-policies/references/image-security.md |
| Best Practices & Compliance |
skills/kubernetes-security-policies/references/best-practices.md |
Security Implementation Workflow
Phase 1: Baseline Assessment
- Audit current security posture with kube-bench or kubescape
- Identify gaps against CIS Kubernetes Benchmark
- Document compliance requirements (PCI-DSS, NIST, SOC2)
Phase 2: Pod Security Standards
- Enable PSA audit mode on all namespaces
- Identify violations using
kubectl get pods -A --show-labels
- Remediate workloads to meet baseline/restricted standards
- Progressively enforce: dev (warn) → staging (baseline) → prod (restricted)
Phase 3: Network Segmentation
- Deploy default-deny NetworkPolicy to all namespaces
- Create explicit allow rules for required traffic flows
- Implement database isolation policies
- Add monitoring/observability exceptions
Phase 4: Access Control (RBAC)
- Audit existing RBAC with
kubectl auth can-i --list
- Create dedicated ServiceAccounts per application
- Define least-privilege Roles with specific resource/verb restrictions
- Disable
automountServiceAccountToken by default
- Minimize ClusterRole usage
Phase 5: Admission Control
- Choose policy engine: OPA Gatekeeper (Rego) or Kyverno (YAML)
- Implement validation policies: require labels, resource limits, non-root
- Add mutation policies: inject security contexts, sidecar containers
- Enforce image policies: disallow latest tag, require signatures
Phase 6: Secrets Management
- Deploy External Secrets Operator or Vault integration
- Migrate native Secrets to external secret stores
- Enable encryption at rest for etcd
- Implement secret rotation policies
Phase 7: Image Security
- Integrate vulnerability scanning in CI/CD (Trivy, Snyk)
- Implement image signing with Sigstore/Cosign
- Enforce signature verification via admission control
- Use immutable image digests instead of tags
Phase 8: Runtime Security
- Deploy Falco for runtime threat detection
- Enable Kubernetes audit logging
- Configure alerts for security events
- Implement intrusion detection policies
Common Mistakes
Pod Security:
- Running containers as root (always set
runAsNonRoot: true)
- Using privileged containers (avoid unless absolutely necessary)
- Writable root filesystem (set
readOnlyRootFilesystem: true)
- Missing resource limits (required for restricted PSS)
Network Policies:
- No default-deny policy (unrestricted pod-to-pod traffic)
- Overly permissive egress rules (allow all external traffic)
- Forgetting DNS egress (pods can't resolve names)
- Missing monitoring/observability exceptions
RBAC:
- Overly broad ClusterRole permissions (violates least privilege)
- Sharing ServiceAccounts across applications
- Using
* verbs or resources in Roles
- Not auditing RBAC permissions regularly
Secrets:
- Committing secrets to Git repositories
- Using environment variables instead of mounted files
- Relying on base64 encoding as encryption
- No secret rotation policy
Admission Control:
- Enforcing policies without audit phase first
- Blocking kube-system namespace accidentally
- No policy testing in staging environment
- Missing exemptions for system components
Images:
- Using
latest tag (not immutable, breaks reproducibility)
- No vulnerability scanning in CI/CD
- Unsigned images in production
- Large base images (use distroless or Alpine)
Resources
1---2name: kubernetes-security-policies3description: Kubernetes security policies, RBAC, and Pod Security Standards for hardened cluster deployments. Use when implementing cluster security, defining network policies, or enforcing security compliance in Kubernetes environments.4license: Unspecified5---6# Kubernetes Security Policies78Comprehensive guidance for implementing security policies in Kubernetes clusters, covering Pod Security Standards, Network Policies, RBAC, Security Contexts, admission control, secrets management, and runtime security for production-grade hardened deployments.910## When to Use This Skill1112- Implementing Pod Security Standards (PSS/PSA) across namespaces13- Designing and enforcing Network Policies for micro-segmentation14- Configuring RBAC with least-privilege access control15- Setting Security Contexts for container hardening16- Deploying admission controllers (OPA/Gatekeeper, Kyverno)17- Managing secrets and sensitive data securely18- Implementing image security and vulnerability scanning19- Enforcing runtime security policies and threat detection20- Meeting compliance requirements (CIS, NIST, PCI-DSS, SOC2)21- Conducting security audits and hardening assessments2223## Core Security Concepts2425**Pod Security Standards (PSS):**26Three progressive security levels enforced via Pod Security Admission (PSA):27- **Privileged:** Unrestricted (default)28- **Baseline:** Prevents known privilege escalations29- **Restricted:** Pod hardening best practices (production recommended)3031**Network Policies:**32Zero-trust micro-segmentation controlling pod-to-pod and pod-to-external traffic using label selectors and namespace isolation.3334**RBAC (Role-Based Access Control):**35Least-privilege access control using ServiceAccounts, Roles, RoleBindings for namespace-scoped permissions, and ClusterRoles for cluster-wide access.3637**Security Contexts:**38Container and pod-level security settings including user/group IDs, capabilities, seccomp profiles, and filesystem restrictions.3940**Admission Control:**41Policy enforcement at API admission time using OPA Gatekeeper (Rego) or Kyverno (YAML) to validate, mutate, or reject resources.4243**Secrets Management:**44External secret storage integration (Vault, AWS Secrets Manager, Sealed Secrets) instead of native Kubernetes secrets.4546**Image Security:**47Vulnerability scanning, signature verification, digest-based immutability, and private registry authentication.4849## Quick Reference5051| Task | Load reference |52| --- | --- |53| Pod Security Standards (PSS/PSA) | `skills/kubernetes-security-policies/references/pod-security-standards.md` |54| Network Policies | `skills/kubernetes-security-policies/references/network-policies.md` |55| RBAC (Roles, ServiceAccounts) | `skills/kubernetes-security-policies/references/rbac.md` |56| Security Contexts (capabilities, seccomp) | `skills/kubernetes-security-policies/references/security-contexts.md` |57| Admission Control (OPA, Kyverno) | `skills/kubernetes-security-policies/references/admission-control.md` |58| Secrets Management (Vault, ESO) | `skills/kubernetes-security-policies/references/secrets-management.md` |59| Image Security (scanning, signing) | `skills/kubernetes-security-policies/references/image-security.md` |60| Best Practices & Compliance | `skills/kubernetes-security-policies/references/best-practices.md` |6162## Security Implementation Workflow6364### Phase 1: Baseline Assessment651. Audit current security posture with kube-bench or kubescape662. Identify gaps against CIS Kubernetes Benchmark673. Document compliance requirements (PCI-DSS, NIST, SOC2)6869### Phase 2: Pod Security Standards701. Enable PSA audit mode on all namespaces712. Identify violations using `kubectl get pods -A --show-labels`723. Remediate workloads to meet baseline/restricted standards734. Progressively enforce: dev (warn) → staging (baseline) → prod (restricted)7475### Phase 3: Network Segmentation761. Deploy default-deny NetworkPolicy to all namespaces772. Create explicit allow rules for required traffic flows783. Implement database isolation policies794. Add monitoring/observability exceptions8081### Phase 4: Access Control (RBAC)821. Audit existing RBAC with `kubectl auth can-i --list`832. Create dedicated ServiceAccounts per application843. Define least-privilege Roles with specific resource/verb restrictions854. Disable `automountServiceAccountToken` by default865. Minimize ClusterRole usage8788### Phase 5: Admission Control891. Choose policy engine: OPA Gatekeeper (Rego) or Kyverno (YAML)902. Implement validation policies: require labels, resource limits, non-root913. Add mutation policies: inject security contexts, sidecar containers924. Enforce image policies: disallow latest tag, require signatures9394### Phase 6: Secrets Management951. Deploy External Secrets Operator or Vault integration962. Migrate native Secrets to external secret stores973. Enable encryption at rest for etcd984. Implement secret rotation policies99100### Phase 7: Image Security1011. Integrate vulnerability scanning in CI/CD (Trivy, Snyk)1022. Implement image signing with Sigstore/Cosign1033. Enforce signature verification via admission control1044. Use immutable image digests instead of tags105106### Phase 8: Runtime Security1071. Deploy Falco for runtime threat detection1082. Enable Kubernetes audit logging1093. Configure alerts for security events1104. Implement intrusion detection policies111112## Common Mistakes113114**Pod Security:**115- Running containers as root (always set `runAsNonRoot: true`)116- Using privileged containers (avoid unless absolutely necessary)117- Writable root filesystem (set `readOnlyRootFilesystem: true`)118- Missing resource limits (required for restricted PSS)119120**Network Policies:**121- No default-deny policy (unrestricted pod-to-pod traffic)122- Overly permissive egress rules (allow all external traffic)123- Forgetting DNS egress (pods can't resolve names)124- Missing monitoring/observability exceptions125126**RBAC:**127- Overly broad ClusterRole permissions (violates least privilege)128- Sharing ServiceAccounts across applications129- Using `*` verbs or resources in Roles130- Not auditing RBAC permissions regularly131132**Secrets:**133- Committing secrets to Git repositories134- Using environment variables instead of mounted files135- Relying on base64 encoding as encryption136- No secret rotation policy137138**Admission Control:**139- Enforcing policies without audit phase first140- Blocking kube-system namespace accidentally141- No policy testing in staging environment142- Missing exemptions for system components143144**Images:**145- Using `latest` tag (not immutable, breaks reproducibility)146- No vulnerability scanning in CI/CD147- Unsigned images in production148- Large base images (use distroless or Alpine)149150## Resources151152- **Pod Security Standards:** https://kubernetes.io/docs/concepts/security/pod-security-standards/153- **Network Policies:** https://kubernetes.io/docs/concepts/services-networking/network-policies/154- **RBAC:** https://kubernetes.io/docs/reference/access-authn-authz/rbac/155- **OPA Gatekeeper:** https://open-policy-agent.github.io/gatekeeper/156- **Kyverno:** https://kyverno.io/docs/157- **External Secrets Operator:** https://external-secrets.io/158- **Falco Runtime Security:** https://falco.org/docs/159- **CIS Benchmarks:** https://www.cisecurity.org/benchmark/kubernetes160- **NSA/CISA Hardening Guide:** https://media.defense.gov/2022/Aug/29/2003066362/-1/-1/0/CTR_KUBERNETES_HARDENING_GUIDANCE_1.2_20220829.PDF