惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

雷峰网
雷峰网
MongoDB | Blog
MongoDB | Blog
D
Docker
Martin Fowler
Martin Fowler
人人都是产品经理
人人都是产品经理
GbyAI
GbyAI
Jina AI
Jina AI
酷 壳 – CoolShell
酷 壳 – CoolShell
M
MIT News - Artificial intelligence
腾讯CDC
阮一峰的网络日志
阮一峰的网络日志
H
Hackread – Cybersecurity News, Data Breaches, AI and More
N
Netflix TechBlog - Medium
B
Blog RSS Feed
云风的 BLOG
云风的 BLOG
Blog — PlanetScale
Blog — PlanetScale
Vercel News
Vercel News
The Cloudflare Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
有赞技术团队
有赞技术团队
G
Google Developers Blog
Stack Overflow Blog
Stack Overflow Blog
I
InfoQ
U
Unit 42

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
Security Profiles Operator hits v1 with stable APIs and a...
Leo · 2026-06-27 · via DEV Community

Leo

After several years carrying a beta tag, the Kubernetes Security Profiles Operator went 1.0.0 on June 26, freezing eight CRD APIs and clearing a third-party security audit with no criticals. For cluster admins, the practical effect is small but consequential: the syscall and LSM profile a workload runs under is now declared on APIs that will not move under your feet.

The release was announced by Sascha Grunert of Red Hat on the CNCF blog. SPO is the Kubernetes operator that manages seccomp, SELinux and AppArmor profiles as cluster-scoped objects, then attaches them to pods. Until now the value proposition was good and the API was provisional. v1.0.0 nails the second half down.

What's actually stable

All eight CRDs graduated to v1, including SeccompProfile, ProfileRecording, SelinuxProfile, RawSelinuxProfile, and the AppArmor profile type. Conversion webhooks ship with the release, so a cluster running earlier API versions can roll forward without scheduling downtime. The older versions remain available and are slated for removal in a future release. The migration is on the clock, not on fire.

The audit pass came with some shape changes that are worth reading before you upgrade. SelinuxProfile swapped its boolean permissive field for a mode enum with Enforcing and Permissive values, which means any GitOps templates that hard-coded permissive: true need a rewrite. RawSelinuxProfile is now gated by an enableRawSelinuxProfiles configuration flag and a validating admission webhook, so the most privileged path through the operator is off by default. AppArmor inputs run through strict regex validation, raw policy payloads are capped at 500 KB, and the eBPF profile recorder picked up explicit resource limits.

Why a cluster team should care

The point of an operator like this is to take the profile out of the host's filesystem and into the API. That changes the blast radius of "we shipped a container with no profile at all." With SPO and a workload-attached profile, the runtime gets the rules from the cluster, the cluster gets the rules from Git, and a rollback is a kubectl apply away. Without it, a profile change usually means a node image bake, which is slower and harder to undo at 3am.

The v1.0.0 line means platform teams can adopt SPO without writing "subject to API churn" in the runbook. In most platform-engineering shops that was the gating concern, not the technology.

The bet still on the table

KEP 6061, OCI Artifact-Based Security Profile Distribution, is proposed for an upcoming Kubernetes release as alpha. The idea is that kubelet itself learns to fetch profiles from an OCI registry, the same way it already pulls images. If that lands, the cluster no longer needs SPO to deliver the profile to the node; the operator stays useful for authoring and lifecycle, but the distribution path moves into core.

This is the right direction for reliability. It collapses two control planes into one. It also means SPO's own value proposition will sit closer to "compiler and CI for profiles" than "runtime mover of files." Worth tracking before you commit to a long-term operator deployment plan.

Watch list for the upgrade

A few rough edges. The permissive to mode rename is a silent break for any template that does not run through the conversion webhook before write. The default-off posture on RawSelinuxProfile is correct, but teams that relied on it must explicitly opt back in. The upstream KEP is alpha, not GA, so SPO's role in production stays where it is for at least two Kubernetes release cycles.

How other projects approach the same surface is fragmented. Falco watches behavior at runtime and alerts. SPO writes the rule that would block the behavior in the first place. Kyverno and Gatekeeper can enforce that a pod has a profile, but they neither author nor distribute one. The combination most platform teams end up running is SPO for the rules, an admission policy engine for the "must have a profile" guard, and a runtime detector for what slips through.

v1.0.0 makes the SPO half of that stack stable enough to depend on. The KEP decides whether its role grows or shrinks from there.