SlideShare a Scribd company logo
@estesp
Securing
Container
Applications:
A PrimerPhil Estes
Distinguished Engineer, Container Strategy
Office of the CTO, IBM Cloud
@estesp
Container Security Scope (hint: it’s big)
> Management/Control plane
> Networking
> Host OS
> Image security, provenance
> Runtime security/isolation
@estesp
What We Won’t Cover
Hardening your host OS
Hardening your cluster
Configuring container runtimes
Securing network traffic
@estesp
Your
Awesome
Application
- Secure coding practices
- Protect against exploits
- No embedded secrets/keys
$ docker build -t myawesomeapp .
Host OS container runtime
AppArmor
SECCOMP
Capabilities
Process isolation
Filesystem isolation
Network isolation
...
@estesp
Container Application Security
Tools, configuration, and runtime capabilities
provided via the container ecosystem used to
wrap an existing security-focused application to
provide more isolation, protection, and overall
security for your code running inside a container.
@estesp
Images: Contents
● NO secrets
○ passwords, API keys, tokens, private keys
● FROM what?
● Minimize content
● Use “FROM SCRATCH” if possible
@estesp
Images: Runtime
● Image Signing
○ Notary/TUF/DCT; RedHat PGP
● Image Scanning - CI/CD pipelines
● Don’t run as root!
@estesp
01 RESOURCES
02 ATTACK SURFACE
03 PRIVILEGES
As limited as is feasible.
As small as is possible.
The least amount necessary.
Runtime Security
@estesp
Runtime Security: Limiting Resources
> CPU controls
are in the OCI
runtime spec.
> Process limit
(how many can I
create) are part
of the OCI spec.
> Memory limits
are a part of the
OCI runtime spec.
> Kubernetes
exposes them in a
less complex way.
> Disk bandwidth
limits are in the OCI
runtime spec.
> Kubernetes does not
enable them, but has
ephemeral disk limits.
> Quota-enabled
filesystem is possible
(advanced topic).
@estesp
Runtime Security: Limiting Attack Surface
Linux capabilities:
> Collections of similar system
calls.
> Names like CAP_NET_RAW
and CAP_SYS_ADMIN.
> Some are fine grained and
some, like CAP_SYS_ADMIN,
might as well be “the new root”
Linux Security Modules
(LSMs) like AppArmor:
> provide a “language” to
describe a wide-ranging set
of permissions for processes
> container runtimes use a
custom profile written for
you to limit what containers
can do on the system.
SECCOMP stands for
“Secure Computing”:
> Allows a profile to be
associated with a process to
allow or deny specific Linux
system calls for that process.
> Container runtimes have a
default seccomp profile;
custom ones are allowed.
Capabilities AppArmor Seccomp
@estesp
Runtime Security: Reducing Privilege
Don’t run privileged containers.
Don’t run containers as root or elevate privileges.
> All security controls/limits are disabled when you run with privileged mode.
> Find the specific required privilege and only enable that feature/access.
> Rarely do your containerized applications truly need root privileges so don’t use it.
> User namespaces are a Linux feature in container runtimes but not yet in Kubernetes.
> Exposing the Docker socket or K8s API into your container may allow escalation to root!
@estesp
Kubernetes: Controlling Resource Limits
apiVersion: v1
kind: Pod
metadata:
name: frontend
spec:
containers:
- name: db
image: mysql
resources:
limits:
memory: "128Mi"
cpu: "500m"
- name: wp
image: wordpress
resources:
limits:
memory: "128Mi"
cpu: "500m"
● Resource Limits
○ Set per-container in the Pod yaml
○ Note that not all OCI spec memory/CPU options
are exposed in the K8s API specification
● Limit Processes
○ Still alpha as of Kubernetes 1.16
○ Cluster operator must enable feature gate
SupportPodPidsLimit=true, and then pass a
--pod-max-pids integer to kubelet
○ Limit is fixed per-pod; no customization possible
● I/O Bandwidth Limits
○ The cgroups i/o settings are not exposed here to
be set per container.
○ K8s does offer resource quotas, and QoS
features—related but not the same features
@estesp
Kubernetes: Limiting Attack Surface
apiVersion: v1
kind: Pod
metadata:
name: hello-apparmor
annotations:
container.apparmor.security.beta.kubernetes.io/hello: localhost/deny-write
spec:
containers:
- name: hello
● Capabilities
○ Set per-container via securityContext ; can add/drop caps by name
● AppArmor
○ Annotations are used to identify AppArmor profiles in Kubernetes
○ Operator must install them on worker nodes; developing new profiles? Tools TBD
● Seccomp
○ Also set via annotation, but on PodSecurityPolicy; see upcoming example; not default
@estesp
Kubernetes: Reducing Privilege
apiVersion: v1
kind: Pod
metadata:
name: security-context-demo
spec:
securityContext:
runAsUser: 1000
runAsGroup: 3000
fsGroup: 2000
containers:
- name: sec-ctx-demo
image: busybox
command: [ "sh", "-c", "sleep 1h" ]
securityContext:
allowPrivilegeEscalation: false
runAsUser: 2000
capabilities:
add: ["NET_ADMIN", "SYS_TIME"]
● Non-root user
○ Use securityContext for
containers and pod-level control
○ Use PodSecurityPolicy to enforce
restrictions cluster-wide
● Capabilities (privilege related)
○ Also in securityContext; see
example
@estesp
Kubernetes: Cluster Security Enforcement
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
name: restricted
annotations:
seccomp.security.alpha.kubernetes.io/allowedProfileNames: 'runtime/default'
apparmor.security.beta.kubernetes.io/allowedProfileNames: 'runtime/default'
seccomp.security.alpha.kubernetes.io/defaultProfileName: 'runtime/default'
apparmor.security.beta.kubernetes.io/defaultProfileName: 'runtime/default'
spec:
privileged: false
allowPrivilegeEscalation: false
# This is redundant with non-root + disallow privilege escalation:
requiredDropCapabilities:
- ALL
hostNetwork: false
hostIPC: false
hostPID: false
runAsUser:
# Require the container to run without root privileges.
rule: 'MustRunAsNonRoot'
@estesp
Kubernetes: Applying Container Security
● PodSecurityPolicy: enforce many good practices cluster-wide! OpenShift is a good
example of a Kubernetes distribution with strong defaults out of the box
● Use the Kubernetes secrets implementation to protect sensitive keys, tokens, materials.
Vendor tools available as well (Hashicorp Vault), and potentially from your cloud provider
● Don’t circumvent security to make your code “easy”: e.g. K8s API access with admin role;
mounting container runtime (e.g. Docker) API with full privilege
● Have a unique workload requirement (multi-tenancy, untrusted code)? Take a look at
RuntimeClass features in Kubernetes to allow custom isolators (gVisor, Kata,
Firecracker, Nabla, etc.)
● Remember that you need visibility and not simply fire-and-forget security! Logging,
audit, vendor tools/open source projects for runtime protection, anomaly detection, etc.
@estesp
BUT...Container Security is Hard!!
● Use a cloud provider
○ Managed Kubernetes services many times can be created with a set of default tools and
policies for strong controls pre-configured for you
○ Many managed services integrate with popular vendor tooling
■ e.g. Twistlock, Snyk, Aqua, Datadog, Sysdig, LogDNA and many others
● Use recommended guides and profiles publicly available (CIS, NIST,
DockerBench, etc.)
● Try out emerging tooling
○ Generate seccomp profiles by running your application with BPF tracing:
https://github.com/containers/oci-seccomp-bpf-hook
@estesp
Resources
PodSecurityPolicy: https://kubernetes.io/docs/concepts/policy/pod-security-policy/
Kubernetes Security Concepts: https://kubernetes.io/docs/concepts/security/overview/
AppArmor documentation: https://kubernetes.io/docs/tutorials/clusters/apparmor/
SELinux documentation:
https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#assign-selinux-labels-to-a-container
Resource controls: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
Complete list of Linux capabilities: http://man7.org/linux/man-pages/man7/capabilities.7.html
@estesp
Thank you!
Demos located at:
https://github.com/estesp/playground

More Related Content

PDF
Securing Containerized Applications: A Primer
PDF
Cloud Native TLV Meetup: Securing Containerized Applications Primer
PDF
Enabling Security via Container Runtimes
PDF
Docker London Meetup: Docker Engine Evolution
PDF
Extended and embedding: containerd update & project use cases
PDF
FOSDEM 2019: A containerd Project Update
PDF
Let's Try Every CRI Runtime Available for Kubernetes
PDF
CraftConf 2019: CRI Runtimes Deep Dive: Who Is Running My Pod?
Securing Containerized Applications: A Primer
Cloud Native TLV Meetup: Securing Containerized Applications Primer
Enabling Security via Container Runtimes
Docker London Meetup: Docker Engine Evolution
Extended and embedding: containerd update & project use cases
FOSDEM 2019: A containerd Project Update
Let's Try Every CRI Runtime Available for Kubernetes
CraftConf 2019: CRI Runtimes Deep Dive: Who Is Running My Pod?

What's hot (20)

PDF
What's Running My Containers? A review of runtimes and standards.
PDF
Kubernetes basics and hands on exercise
PDF
Whose Job Is It Anyway? Kubernetes, CRI, & Container Runtimes
PPTX
Introduction kubernetes 2017_12_24
PPTX
Kubernetes CRI containerd integration by Lantao Liu (Google)
PDF
Containerd Project Update: FOSDEM 2018
PPTX
CRI-containerd
PDF
Docker Engine Evolution: From Monolith to Discrete Components
PDF
containerd and CRI
PDF
Embedding Containerd For Fun and Profit
PDF
Introduction to kubernetes
PDF
Kubernetes: An Introduction to the Open Source Container Orchestration Platform
PDF
Kubernetes 架構與虛擬化之差異
PDF
Looking Under The Hood: containerD
PDF
Docker Athens: Docker Engine Evolution & Containerd Use Cases
PDF
Bucketbench: Benchmarking Container Runtime Performance
PPTX
Kubernetes @ Squarespace: Kubernetes in the Datacenter
PDF
Containerd Internals: Building a Core Container Runtime
PDF
DevOps Fest 2020. Сергій Калінець. Building Data Streaming Platform with Apac...
PPTX
Notary - container signing
What's Running My Containers? A review of runtimes and standards.
Kubernetes basics and hands on exercise
Whose Job Is It Anyway? Kubernetes, CRI, & Container Runtimes
Introduction kubernetes 2017_12_24
Kubernetes CRI containerd integration by Lantao Liu (Google)
Containerd Project Update: FOSDEM 2018
CRI-containerd
Docker Engine Evolution: From Monolith to Discrete Components
containerd and CRI
Embedding Containerd For Fun and Profit
Introduction to kubernetes
Kubernetes: An Introduction to the Open Source Container Orchestration Platform
Kubernetes 架構與虛擬化之差異
Looking Under The Hood: containerD
Docker Athens: Docker Engine Evolution & Containerd Use Cases
Bucketbench: Benchmarking Container Runtime Performance
Kubernetes @ Squarespace: Kubernetes in the Datacenter
Containerd Internals: Building a Core Container Runtime
DevOps Fest 2020. Сергій Калінець. Building Data Streaming Platform with Apac...
Notary - container signing
Ad

Similar to Securing Containerized Applications: A Primer (20)

PPTX
Unlocking DevOps Secuirty :Vault & Keylock
PDF
It's 2018. Are My Containers Secure Yet!?
PDF
Docker Container automatisiert nach AWS deployen - Continuous Lifecycle 2016
PDF
Deliver Docker Containers Continuously On AWS - DevOpsCon Munich 2016
PPTX
Secure container: Kata container and gVisor
PDF
Evolution of security strategies in K8s environments- All day devops
PDF
Deliver Docker Containers Continuously on AWS - QCon 2017
PDF
Who is afraid of privileged containers ?
PDF
Kubernetes for java developers - Tutorial at Oracle Code One 2018
PPTX
Container & kubernetes
PDF
Kubernetes 101 for_penetration_testers_-_null_mumbai
PDF
The Future of Security and Productivity in Our Newly Remote World
PDF
Dockers zero to hero
PPTX
Containers and workload security an overview
PDF
Lines of Defense - Securing your Kubernetes Clusters by Koray Oksay
PDF
Lions, Tigers and Deers: What building zoos can teach us about securing micro...
PDF
Docker London: Container Security
PPTX
Kubernetes talk at DDDSydney 2017
PPTX
The State of Kubernetes Security
PPTX
Kubernetes security with AWS
Unlocking DevOps Secuirty :Vault & Keylock
It's 2018. Are My Containers Secure Yet!?
Docker Container automatisiert nach AWS deployen - Continuous Lifecycle 2016
Deliver Docker Containers Continuously On AWS - DevOpsCon Munich 2016
Secure container: Kata container and gVisor
Evolution of security strategies in K8s environments- All day devops
Deliver Docker Containers Continuously on AWS - QCon 2017
Who is afraid of privileged containers ?
Kubernetes for java developers - Tutorial at Oracle Code One 2018
Container & kubernetes
Kubernetes 101 for_penetration_testers_-_null_mumbai
The Future of Security and Productivity in Our Newly Remote World
Dockers zero to hero
Containers and workload security an overview
Lines of Defense - Securing your Kubernetes Clusters by Koray Oksay
Lions, Tigers and Deers: What building zoos can teach us about securing micro...
Docker London: Container Security
Kubernetes talk at DDDSydney 2017
The State of Kubernetes Security
Kubernetes security with AWS
Ad

More from Phil Estes (13)

PDF
JAX Con 2019: Containers. Microservices. Cloud. Open Source. Fantasy or Reali...
PDF
Giving Back to Upstream | DockerCon 2019
PDF
CRI Runtimes Deep-Dive: Who's Running My Pod!?
PDF
An Open Source Story: Open Containers & Open Communities
PDF
Container Runtimes: Comparing and Contrasting Today's Engines
PDF
AtlanTEC 2017: Containers! Why Docker, Why NOW?
PDF
Quantifying Container Runtime Performance: OSCON 2017 Open Container Day
PDF
Empower Your Docker Containers with Watson - DockerCon 2017 Austin
PDF
Containerize, PaaS, or Go Serverless!?
PDF
Diving Through The Layers: Investigating runc, containerd, and the Docker eng...
PDF
Container Security: How We Got Here and Where We're Going
PDF
Devoxx 2016: A Developer's Guide to OCI and runC
PDF
Live Container Migration: OpenStack Summit Barcelona 2016
JAX Con 2019: Containers. Microservices. Cloud. Open Source. Fantasy or Reali...
Giving Back to Upstream | DockerCon 2019
CRI Runtimes Deep-Dive: Who's Running My Pod!?
An Open Source Story: Open Containers & Open Communities
Container Runtimes: Comparing and Contrasting Today's Engines
AtlanTEC 2017: Containers! Why Docker, Why NOW?
Quantifying Container Runtime Performance: OSCON 2017 Open Container Day
Empower Your Docker Containers with Watson - DockerCon 2017 Austin
Containerize, PaaS, or Go Serverless!?
Diving Through The Layers: Investigating runc, containerd, and the Docker eng...
Container Security: How We Got Here and Where We're Going
Devoxx 2016: A Developer's Guide to OCI and runC
Live Container Migration: OpenStack Summit Barcelona 2016

Recently uploaded (20)

PDF
Nekopoi APK 2025 free lastest update
PDF
2025 Textile ERP Trends: SAP, Odoo & Oracle
PDF
System and Network Administraation Chapter 3
PDF
medical staffing services at VALiNTRY
PDF
Upgrade and Innovation Strategies for SAP ERP Customers
PPTX
ai tools demonstartion for schools and inter college
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PDF
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
PPTX
ManageIQ - Sprint 268 Review - Slide Deck
PDF
PTS Company Brochure 2025 (1).pdf.......
PPTX
Odoo POS Development Services by CandidRoot Solutions
PDF
Design an Analysis of Algorithms II-SECS-1021-03
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PDF
Odoo Companies in India – Driving Business Transformation.pdf
PDF
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
PPTX
VVF-Customer-Presentation2025-Ver1.9.pptx
PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PPTX
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
PPT
Introduction Database Management System for Course Database
PPTX
Transform Your Business with a Software ERP System
Nekopoi APK 2025 free lastest update
2025 Textile ERP Trends: SAP, Odoo & Oracle
System and Network Administraation Chapter 3
medical staffing services at VALiNTRY
Upgrade and Innovation Strategies for SAP ERP Customers
ai tools demonstartion for schools and inter college
Internet Downloader Manager (IDM) Crack 6.42 Build 41
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
ManageIQ - Sprint 268 Review - Slide Deck
PTS Company Brochure 2025 (1).pdf.......
Odoo POS Development Services by CandidRoot Solutions
Design an Analysis of Algorithms II-SECS-1021-03
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
Odoo Companies in India – Driving Business Transformation.pdf
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
VVF-Customer-Presentation2025-Ver1.9.pptx
Adobe Illustrator 28.6 Crack My Vision of Vector Design
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
Introduction Database Management System for Course Database
Transform Your Business with a Software ERP System

Securing Containerized Applications: A Primer

  • 1. @estesp Securing Container Applications: A PrimerPhil Estes Distinguished Engineer, Container Strategy Office of the CTO, IBM Cloud
  • 2. @estesp Container Security Scope (hint: it’s big) > Management/Control plane > Networking > Host OS > Image security, provenance > Runtime security/isolation
  • 3. @estesp What We Won’t Cover Hardening your host OS Hardening your cluster Configuring container runtimes Securing network traffic
  • 4. @estesp Your Awesome Application - Secure coding practices - Protect against exploits - No embedded secrets/keys $ docker build -t myawesomeapp . Host OS container runtime AppArmor SECCOMP Capabilities Process isolation Filesystem isolation Network isolation ...
  • 5. @estesp Container Application Security Tools, configuration, and runtime capabilities provided via the container ecosystem used to wrap an existing security-focused application to provide more isolation, protection, and overall security for your code running inside a container.
  • 6. @estesp Images: Contents ● NO secrets ○ passwords, API keys, tokens, private keys ● FROM what? ● Minimize content ● Use “FROM SCRATCH” if possible
  • 7. @estesp Images: Runtime ● Image Signing ○ Notary/TUF/DCT; RedHat PGP ● Image Scanning - CI/CD pipelines ● Don’t run as root!
  • 8. @estesp 01 RESOURCES 02 ATTACK SURFACE 03 PRIVILEGES As limited as is feasible. As small as is possible. The least amount necessary. Runtime Security
  • 9. @estesp Runtime Security: Limiting Resources > CPU controls are in the OCI runtime spec. > Process limit (how many can I create) are part of the OCI spec. > Memory limits are a part of the OCI runtime spec. > Kubernetes exposes them in a less complex way. > Disk bandwidth limits are in the OCI runtime spec. > Kubernetes does not enable them, but has ephemeral disk limits. > Quota-enabled filesystem is possible (advanced topic).
  • 10. @estesp Runtime Security: Limiting Attack Surface Linux capabilities: > Collections of similar system calls. > Names like CAP_NET_RAW and CAP_SYS_ADMIN. > Some are fine grained and some, like CAP_SYS_ADMIN, might as well be “the new root” Linux Security Modules (LSMs) like AppArmor: > provide a “language” to describe a wide-ranging set of permissions for processes > container runtimes use a custom profile written for you to limit what containers can do on the system. SECCOMP stands for “Secure Computing”: > Allows a profile to be associated with a process to allow or deny specific Linux system calls for that process. > Container runtimes have a default seccomp profile; custom ones are allowed. Capabilities AppArmor Seccomp
  • 11. @estesp Runtime Security: Reducing Privilege Don’t run privileged containers. Don’t run containers as root or elevate privileges. > All security controls/limits are disabled when you run with privileged mode. > Find the specific required privilege and only enable that feature/access. > Rarely do your containerized applications truly need root privileges so don’t use it. > User namespaces are a Linux feature in container runtimes but not yet in Kubernetes. > Exposing the Docker socket or K8s API into your container may allow escalation to root!
  • 12. @estesp Kubernetes: Controlling Resource Limits apiVersion: v1 kind: Pod metadata: name: frontend spec: containers: - name: db image: mysql resources: limits: memory: "128Mi" cpu: "500m" - name: wp image: wordpress resources: limits: memory: "128Mi" cpu: "500m" ● Resource Limits ○ Set per-container in the Pod yaml ○ Note that not all OCI spec memory/CPU options are exposed in the K8s API specification ● Limit Processes ○ Still alpha as of Kubernetes 1.16 ○ Cluster operator must enable feature gate SupportPodPidsLimit=true, and then pass a --pod-max-pids integer to kubelet ○ Limit is fixed per-pod; no customization possible ● I/O Bandwidth Limits ○ The cgroups i/o settings are not exposed here to be set per container. ○ K8s does offer resource quotas, and QoS features—related but not the same features
  • 13. @estesp Kubernetes: Limiting Attack Surface apiVersion: v1 kind: Pod metadata: name: hello-apparmor annotations: container.apparmor.security.beta.kubernetes.io/hello: localhost/deny-write spec: containers: - name: hello ● Capabilities ○ Set per-container via securityContext ; can add/drop caps by name ● AppArmor ○ Annotations are used to identify AppArmor profiles in Kubernetes ○ Operator must install them on worker nodes; developing new profiles? Tools TBD ● Seccomp ○ Also set via annotation, but on PodSecurityPolicy; see upcoming example; not default
  • 14. @estesp Kubernetes: Reducing Privilege apiVersion: v1 kind: Pod metadata: name: security-context-demo spec: securityContext: runAsUser: 1000 runAsGroup: 3000 fsGroup: 2000 containers: - name: sec-ctx-demo image: busybox command: [ "sh", "-c", "sleep 1h" ] securityContext: allowPrivilegeEscalation: false runAsUser: 2000 capabilities: add: ["NET_ADMIN", "SYS_TIME"] ● Non-root user ○ Use securityContext for containers and pod-level control ○ Use PodSecurityPolicy to enforce restrictions cluster-wide ● Capabilities (privilege related) ○ Also in securityContext; see example
  • 15. @estesp Kubernetes: Cluster Security Enforcement apiVersion: policy/v1beta1 kind: PodSecurityPolicy metadata: name: restricted annotations: seccomp.security.alpha.kubernetes.io/allowedProfileNames: 'runtime/default' apparmor.security.beta.kubernetes.io/allowedProfileNames: 'runtime/default' seccomp.security.alpha.kubernetes.io/defaultProfileName: 'runtime/default' apparmor.security.beta.kubernetes.io/defaultProfileName: 'runtime/default' spec: privileged: false allowPrivilegeEscalation: false # This is redundant with non-root + disallow privilege escalation: requiredDropCapabilities: - ALL hostNetwork: false hostIPC: false hostPID: false runAsUser: # Require the container to run without root privileges. rule: 'MustRunAsNonRoot'
  • 16. @estesp Kubernetes: Applying Container Security ● PodSecurityPolicy: enforce many good practices cluster-wide! OpenShift is a good example of a Kubernetes distribution with strong defaults out of the box ● Use the Kubernetes secrets implementation to protect sensitive keys, tokens, materials. Vendor tools available as well (Hashicorp Vault), and potentially from your cloud provider ● Don’t circumvent security to make your code “easy”: e.g. K8s API access with admin role; mounting container runtime (e.g. Docker) API with full privilege ● Have a unique workload requirement (multi-tenancy, untrusted code)? Take a look at RuntimeClass features in Kubernetes to allow custom isolators (gVisor, Kata, Firecracker, Nabla, etc.) ● Remember that you need visibility and not simply fire-and-forget security! Logging, audit, vendor tools/open source projects for runtime protection, anomaly detection, etc.
  • 17. @estesp BUT...Container Security is Hard!! ● Use a cloud provider ○ Managed Kubernetes services many times can be created with a set of default tools and policies for strong controls pre-configured for you ○ Many managed services integrate with popular vendor tooling ■ e.g. Twistlock, Snyk, Aqua, Datadog, Sysdig, LogDNA and many others ● Use recommended guides and profiles publicly available (CIS, NIST, DockerBench, etc.) ● Try out emerging tooling ○ Generate seccomp profiles by running your application with BPF tracing: https://github.com/containers/oci-seccomp-bpf-hook
  • 18. @estesp Resources PodSecurityPolicy: https://kubernetes.io/docs/concepts/policy/pod-security-policy/ Kubernetes Security Concepts: https://kubernetes.io/docs/concepts/security/overview/ AppArmor documentation: https://kubernetes.io/docs/tutorials/clusters/apparmor/ SELinux documentation: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#assign-selinux-labels-to-a-container Resource controls: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ Complete list of Linux capabilities: http://man7.org/linux/man-pages/man7/capabilities.7.html
  • 19. @estesp Thank you! Demos located at: https://github.com/estesp/playground