Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
wshobson avatar

K8s Security Policies

  • 12.2k installs
  • 38.3k repo stars
  • Updated July 22, 2026
  • wshobson/agents

k8s-security-policies is a skill providing comprehensive Kubernetes security implementation (network, RBAC, pod security).

About

k8s-security-policies provides comprehensive Kubernetes security implementation guide covering NetworkPolicy (network segmentation), PodSecurityPolicy/Pod Security Standards, RBAC (least-privilege access), Istio mTLS, and OPA Gatekeeper admission control. It includes CIS and NIST compliance mappings and troubleshooting. Developers use it to secure production Kubernetes clusters and enforce multi-tenant isolation.

  • NetworkPolicy, PodSecurityPolicy, RBAC, and Pod Security Standards implementation
  • Kubernetes-native security: mTLS, admission control (OPA Gatekeeper), audit logging
  • Compliance frameworks: CIS Kubernetes Benchmark, NIST Cybersecurity

K8s Security Policies by the numbers

  • 12,150 all-time installs (skills.sh)
  • +175 installs in the week ending Jul 28, 2026 (Skillselion tracking)
  • Ranked #37 of 2,209 Security skills by installs in the Skillselion catalog
  • Security screen: LOW risk (skills.sh audit)
  • Data as of Jul 28, 2026 (Skillselion catalog sync)
At a glance

k8s-security-policies capabilities & compatibility

Capabilities
security audit · policy enforcement
Works with
kubernetes
Use cases
security audit
Runs
Runs locally
From the docs

What k8s-security-policies says it does

Implement defense-in-depth security for Kubernetes clusters using network policies, pod security standards, and RBAC
SKILL.md
npx skills add https://github.com/wshobson/agents --skill k8s-security-policies

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs12.2k
repo stars38.3k
Security audit3 / 3 scanners passed
Last updatedJuly 22, 2026
Repositorywshobson/agents

What it does

k8s-security-policies provides comprehensive Kubernetes security implementation guide covering NetworkPolicy (network segmentation), PodSecurityPolicy/Pod Security Standards, RBAC (least-privilege ac

Who is it for?

DevOps and platform engineers securing production Kubernetes clusters and meeting compliance requirements

Skip if: Non-Kubernetes environments or development-only clusters

When should I use this skill?

Securing production Kubernetes clusters, implementing network isolation, enforcing pod security, or meeting compliance

What you get

Production-grade cluster security: network policies enforced, RBAC least-privilege configured, pod security standards applied

  • NetworkPolicy YAML files
  • Namespace baseline deny policy

By the numbers

  • Bundles at least three NetworkPolicy templates: default deny, allow DNS, and frontend-to-backend

Files

SKILL.mdMarkdownGitHub ↗

Kubernetes Security Policies

Comprehensive guide for implementing NetworkPolicy, PodSecurityPolicy, RBAC, and Pod Security Standards in Kubernetes.

Purpose

Implement defense-in-depth security for Kubernetes clusters using network policies, pod security standards, and RBAC.

When to Use This Skill

  • Implement network segmentation
  • Configure pod security standards
  • Set up RBAC for least-privilege access
  • Create security policies for compliance
  • Implement admission control
  • Secure multi-tenant clusters

Pod Security Standards

1. Privileged (Unrestricted)

apiVersion: v1
kind: Namespace
metadata:
  name: privileged-ns
  labels:
    pod-security.kubernetes.io/enforce: privileged
    pod-security.kubernetes.io/audit: privileged
    pod-security.kubernetes.io/warn: privileged

2. Baseline (Minimally restrictive)

apiVersion: v1
kind: Namespace
metadata:
  name: baseline-ns
  labels:
    pod-security.kubernetes.io/enforce: baseline
    pod-security.kubernetes.io/audit: baseline
    pod-security.kubernetes.io/warn: baseline

3. Restricted (Most restrictive)

apiVersion: v1
kind: Namespace
metadata:
  name: restricted-ns
  labels:
    pod-security.kubernetes.io/enforce: restricted
    pod-security.kubernetes.io/audit: restricted
    pod-security.kubernetes.io/warn: restricted

Network Policies

Default Deny All

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default-deny-all
  namespace: production
spec:
  podSelector: {}
  policyTypes:
    - Ingress
    - Egress

Allow Frontend to Backend

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-frontend-to-backend
  namespace: production
spec:
  podSelector:
    matchLabels:
      app: backend
  policyTypes:
    - Ingress
  ingress:
    - from:
        - podSelector:
            matchLabels:
              app: frontend
      ports:
        - protocol: TCP
          port: 8080

Allow DNS

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-dns
  namespace: production
spec:
  podSelector: {}
  policyTypes:
    - Egress
  egress:
    - to:
        - namespaceSelector:
            matchLabels:
              name: kube-system
      ports:
        - protocol: UDP
          port: 53

Reference: See assets/network-policy-template.yaml

RBAC Configuration

Role (Namespace-scoped)

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: pod-reader
  namespace: production
rules:
  - apiGroups: [""]
    resources: ["pods"]
    verbs: ["get", "watch", "list"]

ClusterRole (Cluster-wide)

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: secret-reader
rules:
  - apiGroups: [""]
    resources: ["secrets"]
    verbs: ["get", "watch", "list"]

RoleBinding

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: read-pods
  namespace: production
subjects:
  - kind: User
    name: jane
    apiGroup: rbac.authorization.k8s.io
  - kind: ServiceAccount
    name: default
    namespace: production
roleRef:
  kind: Role
  name: pod-reader
  apiGroup: rbac.authorization.k8s.io

Reference: See references/rbac-patterns.md

Pod Security Context

Restricted Pod

apiVersion: v1
kind: Pod
metadata:
  name: secure-pod
spec:
  securityContext:
    runAsNonRoot: true
    runAsUser: 1000
    fsGroup: 1000
    seccompProfile:
      type: RuntimeDefault
  containers:
    - name: app
      image: myapp:1.0
      securityContext:
        allowPrivilegeEscalation: false
        readOnlyRootFilesystem: true
        capabilities:
          drop:
            - ALL

Policy Enforcement with OPA Gatekeeper

ConstraintTemplate

apiVersion: templates.gatekeeper.sh/v1
kind: ConstraintTemplate
metadata:
  name: k8srequiredlabels
spec:
  crd:
    spec:
      names:
        kind: K8sRequiredLabels
      validation:
        openAPIV3Schema:
          type: object
          properties:
            labels:
              type: array
              items:
                type: string
  targets:
    - target: admission.k8s.gatekeeper.sh
      rego: |
        package k8srequiredlabels
        violation[{"msg": msg, "details": {"missing_labels": missing}}] {
          provided := {label | input.review.object.metadata.labels[label]}
          required := {label | label := input.parameters.labels[_]}
          missing := required - provided
          count(missing) > 0
          msg := sprintf("missing required labels: %v", [missing])
        }

Constraint

apiVersion: constraints.gatekeeper.sh/v1beta1
kind: K8sRequiredLabels
metadata:
  name: require-app-label
spec:
  match:
    kinds:
      - apiGroups: ["apps"]
        kinds: ["Deployment"]
  parameters:
    labels: ["app", "environment"]

Service Mesh Security (Istio)

PeerAuthentication (mTLS)

apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
  name: default
  namespace: production
spec:
  mtls:
    mode: STRICT

AuthorizationPolicy

apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
  name: allow-frontend
  namespace: production
spec:
  selector:
    matchLabels:
      app: backend
  action: ALLOW
  rules:
    - from:
        - source:
            principals: ["cluster.local/ns/production/sa/frontend"]

Best Practices

1. Implement Pod Security Standards at namespace level 2. Use Network Policies for network segmentation 3. Apply least-privilege RBAC for all service accounts 4. Enable admission control (OPA Gatekeeper/Kyverno) 5. Run containers as non-root 6. Use read-only root filesystem 7. Drop all capabilities unless needed 8. Implement resource quotas and limit ranges 9. Enable audit logging for security events 10. Regular security scanning of images

Compliance Frameworks

CIS Kubernetes Benchmark

  • Use RBAC authorization
  • Enable audit logging
  • Use Pod Security Standards
  • Configure network policies
  • Implement secrets encryption at rest
  • Enable node authentication

NIST Cybersecurity Framework

  • Implement defense in depth
  • Use network segmentation
  • Configure security monitoring
  • Implement access controls
  • Enable logging and monitoring

Troubleshooting

NetworkPolicy not working:

# Check if CNI supports NetworkPolicy
kubectl get nodes -o wide
kubectl describe networkpolicy <name>

RBAC permission denied:

# Check effective permissions
kubectl auth can-i list pods --as system:serviceaccount:default:my-sa
kubectl auth can-i '*' '*' --as system:serviceaccount:default:my-sa

Related Skills

  • k8s-manifest-generator - For creating secure manifests
  • gitops-workflow - For automated policy deployment

Related skills

Forks & variants (1)

K8s Security Policies has 1 known copy in the catalog totaling 145 installs. They canonicalize to this original listing.

How it compares

Use k8s-security-policies for L3/L4 pod network rules; pair with RBAC or admission-control skills for identity and workload policy layers.

FAQ

Which NetworkPolicy templates does k8s-security-policies include?

k8s-security-policies provides default-deny-all, allow-dns egress to kube-system on UDP 53, and frontend-to-backend ingress templates as networking.k8s.io/v1 YAML ready to namespace-customize.

When should you apply the default-deny NetworkPolicy?

k8s-security-policies recommends starting with the default-deny-all template in each namespace, then layering allow-dns and service-specific policies so only required pod traffic is permitted.

Is K8s Security Policies safe to install?

skills.sh reports 3 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.

Securityauditcompliance

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.