SlideShare a Scribd company logo
@estesp
Securing
Container
Applications:
A PrimerPhil Estes
Distinguished Engineer, Linux OS & 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
Images: Contents
● FROM what? Choosing your base
○ Minimize content
○ Use “FROM SCRATCH” if possible
● Never store secrets in your image
○ passwords, API keys, tokens, private keys
@estesp
Images: Runtime
● Image Scanning
○ Integrate with CI/CD pipelines
● Don’t run containers as root!
● Image Signing
○ Notary/TUF/DCT; RedHat PGP
○ See: Notary v2 work in 2020 in OCI/CNCF
@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
Securing Containerized Applications: A Primer
PDF
Enabling Security via Container Runtimes
PDF
Extended and embedding: containerd update & project use cases
PDF
FOSDEM 2019: A containerd Project Update
PDF
Docker London Meetup: Docker Engine Evolution
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
Securing Containerized Applications: A Primer
Enabling Security via Container Runtimes
Extended and embedding: containerd update & project use cases
FOSDEM 2019: A containerd Project Update
Docker London Meetup: Docker Engine Evolution
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.
PPTX
Kubernetes CRI containerd integration by Lantao Liu (Google)
PPTX
Introduction kubernetes 2017_12_24
PDF
Whose Job Is It Anyway? Kubernetes, CRI, & Container Runtimes
PDF
Docker Engine Evolution: From Monolith to Discrete Components
PDF
Containerd Project Update: FOSDEM 2018
PPTX
CRI-containerd
PDF
Kubernetes: An Introduction to the Open Source Container Orchestration Platform
PDF
Embedding Containerd For Fun and Profit
PDF
Docker Athens: Docker Engine Evolution & Containerd Use Cases
PDF
Bucketbench: Benchmarking Container Runtime Performance
PDF
Secure your K8s cluster from multi-layers
PDF
containerd and CRI
PDF
Kubernetes 架構與虛擬化之差異
PDF
Containerd Internals: Building a Core Container Runtime
PDF
Kubernetes上で動作する機械学習モジュールの配信&管理基盤Rekcurd について
PPTX
Kubernetes 101
PDF
Leveraging the Power of containerd Events - Evan Hazlett
PPTX
Secure container: Kata container and gVisor
PPTX
A deep dive into container technology - Vietnam Web Summit 2020 (18/12/2020)
What's Running My Containers? A review of runtimes and standards.
Kubernetes CRI containerd integration by Lantao Liu (Google)
Introduction kubernetes 2017_12_24
Whose Job Is It Anyway? Kubernetes, CRI, & Container Runtimes
Docker Engine Evolution: From Monolith to Discrete Components
Containerd Project Update: FOSDEM 2018
CRI-containerd
Kubernetes: An Introduction to the Open Source Container Orchestration Platform
Embedding Containerd For Fun and Profit
Docker Athens: Docker Engine Evolution & Containerd Use Cases
Bucketbench: Benchmarking Container Runtime Performance
Secure your K8s cluster from multi-layers
containerd and CRI
Kubernetes 架構與虛擬化之差異
Containerd Internals: Building a Core Container Runtime
Kubernetes上で動作する機械学習モジュールの配信&管理基盤Rekcurd について
Kubernetes 101
Leveraging the Power of containerd Events - Evan Hazlett
Secure container: Kata container and gVisor
A deep dive into container technology - Vietnam Web Summit 2020 (18/12/2020)
Ad

Similar to Cloud Native TLV Meetup: Securing Containerized Applications Primer (20)

PPTX
Kubernetes and container security
PPTX
Secure development on Kubernetes by Andreas Falk
PPTX
12 Ways Not to get 'Hacked' your Kubernetes Cluster
PDF
Securing Applications and Pipelines on a Container Platform
PDF
Container Security
PDF
Docker London: Container Security
PDF
Who is afraid of privileged containers ?
PDF
Securing Applications and Pipelines on a Container Platform
PDF
GDG SLK - Why should devs care about container security.pdf
PDF
How Secure Is Your Container? ContainerCon Berlin 2016
PPTX
Kubernetes Security Act Now Before It’s Too Late
PPTX
Container security Familiar problems in new technology
PDF
Who is afraid of privileged containers ?
PDF
SCaLE 19x - Eric Smalling - Hardening against Kubernetes Hacks
PDF
Security on a Container Platform
PPTX
Security best practices for kubernetes deployment
PPTX
Security best practices for kubernetes deployment
PDF
Who is afraid of privileged containers ?
PDF
KubeHuddle NA 2023 - Why should devs care about container security - Eric Sma...
PDF
Hacking into your containers, and how to stop it!
Kubernetes and container security
Secure development on Kubernetes by Andreas Falk
12 Ways Not to get 'Hacked' your Kubernetes Cluster
Securing Applications and Pipelines on a Container Platform
Container Security
Docker London: Container Security
Who is afraid of privileged containers ?
Securing Applications and Pipelines on a Container Platform
GDG SLK - Why should devs care about container security.pdf
How Secure Is Your Container? ContainerCon Berlin 2016
Kubernetes Security Act Now Before It’s Too Late
Container security Familiar problems in new technology
Who is afraid of privileged containers ?
SCaLE 19x - Eric Smalling - Hardening against Kubernetes Hacks
Security on a Container Platform
Security best practices for kubernetes deployment
Security best practices for kubernetes deployment
Who is afraid of privileged containers ?
KubeHuddle NA 2023 - Why should devs care about container security - Eric Sma...
Hacking into your containers, and how to stop it!
Ad

More from Phil Estes (14)

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
It's 2018. Are My Containers Secure Yet!?
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!?
It's 2018. Are My Containers Secure Yet!?
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
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
PPTX
ManageIQ - Sprint 268 Review - Slide Deck
PDF
PTS Company Brochure 2025 (1).pdf.......
PPTX
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
PDF
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
PDF
Navsoft: AI-Powered Business Solutions & Custom Software Development
PPTX
CHAPTER 12 - CYBER SECURITY AND FUTURE SKILLS (1) (1).pptx
PDF
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
PPTX
Transform Your Business with a Software ERP System
PPTX
history of c programming in notes for students .pptx
PDF
How to Choose the Right IT Partner for Your Business in Malaysia
PDF
System and Network Administration Chapter 2
PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
PDF
AI in Product Development-omnex systems
PDF
Design an Analysis of Algorithms II-SECS-1021-03
PDF
Understanding Forklifts - TECH EHS Solution
PDF
Softaken Excel to vCard Converter Software.pdf
PPTX
L1 - Introduction to python Backend.pptx
PPTX
CHAPTER 2 - PM Management and IT Context
PDF
How to Migrate SBCGlobal Email to Yahoo Easily
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
ManageIQ - Sprint 268 Review - Slide Deck
PTS Company Brochure 2025 (1).pdf.......
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
Navsoft: AI-Powered Business Solutions & Custom Software Development
CHAPTER 12 - CYBER SECURITY AND FUTURE SKILLS (1) (1).pptx
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
Transform Your Business with a Software ERP System
history of c programming in notes for students .pptx
How to Choose the Right IT Partner for Your Business in Malaysia
System and Network Administration Chapter 2
Which alternative to Crystal Reports is best for small or large businesses.pdf
AI in Product Development-omnex systems
Design an Analysis of Algorithms II-SECS-1021-03
Understanding Forklifts - TECH EHS Solution
Softaken Excel to vCard Converter Software.pdf
L1 - Introduction to python Backend.pptx
CHAPTER 2 - PM Management and IT Context
How to Migrate SBCGlobal Email to Yahoo Easily

Cloud Native TLV Meetup: Securing Containerized Applications Primer

  • 1. @estesp Securing Container Applications: A PrimerPhil Estes Distinguished Engineer, Linux OS & 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 Images: Contents ● FROM what? Choosing your base ○ Minimize content ○ Use “FROM SCRATCH” if possible ● Never store secrets in your image ○ passwords, API keys, tokens, private keys
  • 6. @estesp Images: Runtime ● Image Scanning ○ Integrate with CI/CD pipelines ● Don’t run containers as root! ● Image Signing ○ Notary/TUF/DCT; RedHat PGP ○ See: Notary v2 work in 2020 in OCI/CNCF
  • 7. @estesp 01 RESOURCES 02 ATTACK SURFACE 03 PRIVILEGES As limited as is feasible. As small as is possible. The least amount necessary. Runtime Security
  • 8. @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).
  • 9. @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
  • 10. @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!
  • 11. @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
  • 12. @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
  • 13. @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
  • 14. @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'
  • 15. @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.
  • 16. @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
  • 17. @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
  • 18. @estesp Thank you! Demos located at: https://github.com/estesp/playground