kubernetes-sigs/security-profiles-operator

The Kubernetes Security Profiles Operator

C

875

3,767 commits

updated Oct 16, 2026

See the code

README

Kubernetes Security Profiles Operator

build test coverage CII Best Practices OCI security profiles

The Security Profiles Operator (SPO) is an out-of-tree Kubernetes enhancement which aims to make it easier to create and use SELinux, seccomp and AppArmor security profiles in Kubernetes clusters.

The documentation covers the installation, the profiles, the spoc command line interface, troubleshooting and the development of SPO. The released container images are available below registry.k8s.io/security-profiles-operator, see verifying the released artifacts.

Quick start

Install cert-manager, which is not needed on OpenShift:

kubectl apply -f https://github.com/cert-manager/cert-manager/releases/latest/download/cert-manager.yaml
kubectl --namespace cert-manager wait --for condition=available deployment --all

Install the operator from the manifest of the latest release, where VERSION is its version without the v prefix:

VERSION=x.y.z
kubectl apply -f "https://raw.githubusercontent.com/kubernetes-sigs/security-profiles-operator/v${VERSION}/deploy/operator.yaml"

Once kubectl -n security-profiles-operator get spod spod reports the state Running, create the example seccomp profiles and check that they got installed on the nodes:

$ kubectl apply -f "https://raw.githubusercontent.com/kubernetes-sigs/security-profiles-operator/v${VERSION}/examples/seccompprofile.yaml"
$ kubectl get sp
NAME                               STATUS      AGE
profile-allow-unsafe               Installed   20s
profile-block-all                  Installed   20s
profile-complain-block-high-risk   Installed   20s
profile-complain-unsafe            Installed   20s

Use Seccomp profile shows how a pod uses them.

Installation methods

Features

This is the parity of features across various security profiles supported by the SPO:

SeccompSELinuxAppArmor
Profile CRDYesYesYes
Install profiles in clusterYesYesYes
Remove unused profiles from clusterYesYesYes
Profile Recording (audit logs)YesYesNo
Profile Recording (eBPF)YesNoYes
Profile Binding to container imagesYesYesYes
Audit log enrichmentYesYesYes
Audit In-Pod Activity JSON log enrichmentYesNoNo

For information about the security model and what permissions each feature requires, refer to SPO's security model.

Resources

The motivation behind the project can be found in the corresponding RFC.

The operator runs as a deployment in the cluster and manages daemon pods on each node. These daemon pods handle profile installation, recording, and enforcement for seccomp, SELinux, and AppArmor. The documentation describes the architecture and links the user stories, personas and guides.

Related Kubernetes Enhancement Proposals (KEPs) which have direct influence on this project:

Next to those KEPs, here are existing approaches for security profiles in the Kubernetes world:

Community, discussions, contributions, and support

If you're interested in contributing to SPO, please see the developer focused document.

We schedule a monthly meeting every last Thursday of a month.

Learn how to engage with the Kubernetes community on the community page.

You can reach the maintainers of this project at:

Code of conduct

Participation in the Kubernetes community is governed by the Kubernetes Code of Conduct.

apparmor
k8s-sig-node
kubernetes
kubernetes-operator
seccomp
seccomp-operator
seccomp-profiles
security-profiles
selinux

kubernetes-sigs/security-profiles-operator

The Kubernetes Security Profiles Operator

C

875

3,767 commits

updated Oct 16, 2026

See the code

README

Kubernetes Security Profiles Operator

build test coverage CII Best Practices OCI security profiles

The Security Profiles Operator (SPO) is an out-of-tree Kubernetes enhancement which aims to make it easier to create and use SELinux, seccomp and AppArmor security profiles in Kubernetes clusters.

The documentation covers the installation, the profiles, the spoc command line interface, troubleshooting and the development of SPO. The released container images are available below registry.k8s.io/security-profiles-operator, see verifying the released artifacts.

Quick start

Install cert-manager, which is not needed on OpenShift:

kubectl apply -f https://github.com/cert-manager/cert-manager/releases/latest/download/cert-manager.yaml
kubectl --namespace cert-manager wait --for condition=available deployment --all

Install the operator from the manifest of the latest release, where VERSION is its version without the v prefix:

VERSION=x.y.z
kubectl apply -f "https://raw.githubusercontent.com/kubernetes-sigs/security-profiles-operator/v${VERSION}/deploy/operator.yaml"

Once kubectl -n security-profiles-operator get spod spod reports the state Running, create the example seccomp profiles and check that they got installed on the nodes:

$ kubectl apply -f "https://raw.githubusercontent.com/kubernetes-sigs/security-profiles-operator/v${VERSION}/examples/seccompprofile.yaml"
$ kubectl get sp
NAME                               STATUS      AGE
profile-allow-unsafe               Installed   20s
profile-block-all                  Installed   20s
profile-complain-block-high-risk   Installed   20s
profile-complain-unsafe            Installed   20s

Use Seccomp profile shows how a pod uses them.

Installation methods

Features

This is the parity of features across various security profiles supported by the SPO:

SeccompSELinuxAppArmor
Profile CRDYesYesYes
Install profiles in clusterYesYesYes
Remove unused profiles from clusterYesYesYes
Profile Recording (audit logs)YesYesNo
Profile Recording (eBPF)YesNoYes
Profile Binding to container imagesYesYesYes
Audit log enrichmentYesYesYes
Audit In-Pod Activity JSON log enrichmentYesNoNo

For information about the security model and what permissions each feature requires, refer to SPO's security model.

Resources

The motivation behind the project can be found in the corresponding RFC.

The operator runs as a deployment in the cluster and manages daemon pods on each node. These daemon pods handle profile installation, recording, and enforcement for seccomp, SELinux, and AppArmor. The documentation describes the architecture and links the user stories, personas and guides.

Related Kubernetes Enhancement Proposals (KEPs) which have direct influence on this project:

Next to those KEPs, here are existing approaches for security profiles in the Kubernetes world:

Community, discussions, contributions, and support

If you're interested in contributing to SPO, please see the developer focused document.

We schedule a monthly meeting every last Thursday of a month.

Learn how to engage with the Kubernetes community on the community page.

You can reach the maintainers of this project at:

Code of conduct

Participation in the Kubernetes community is governed by the Kubernetes Code of Conduct.

apparmor
k8s-sig-node
kubernetes
kubernetes-operator
seccomp
seccomp-operator
seccomp-profiles
security-profiles
selinux

Project health

Overall

8.5/10

Maintained

10/10

Code review

10/10

Contributors

10/10
OpenSSF Scorecard

Significant stargazers

(top 24 of 26)

Antonio Ojea

602 followers · starred Apr 2020

Stefan Prodan

8,275 followers · starred May 2023

Christophe Tafani-Dereeper

728 followers · starred Mar 2022

Puerco

176 followers · starred Aug 2020