- Review key Dockerfile guidelines
- Understand Kubernetes’ default container user
- Install and configure Conftest
- Write and run Rego policies against your Dockerfile
- Integrate policy checks into a CI/CD pipeline
- Remediate common security violations
Table of Contents
- Dockerfile Security Best Practices
- Default Container User in Kubernetes
- Installing OPA Conftest
- Writing Rego Policies
- Scanning a Dockerfile with Conftest
- CI/CD Integration
- Fixing Policy Violations
- Verifying the Fixes
- References
Dockerfile Security Best Practices
Follow Docker’s official guidelines to reduce vulnerabilities:
Example: building a minimal BusyBox image

Default Container User in Kubernetes
By default, containers run as root in Kubernetes pods1. Verify with:Running containers as root increases risk of privilege escalation. Always switch to a non-root user in your Dockerfile.
Installing OPA Conftest
Conftest evaluates your Dockerfile against custom policies written in Rego. LinuxAlternatively, use the official Docker image:
docker pull openpolicyagent/conftestWriting Rego Policies
Create a fileopa-docker-security.rego containing rules like:
Scanning a Dockerfile with Conftest
GivenDockerfile:
CI/CD Integration
Add a Conftest scan to your Jenkins pipeline:Fixing Policy Violations
- Trusted base images – comment or adjust the rule if using a private registry.
- Replace
ADDwithCOPY. - Create and switch to a non-root user.
Adjusted Rego (disable trusted-base-image rule)
Revised Dockerfile
Verifying the Fixes
References
- Dockerfile Best Practices
- Kubernetes Security Context
- Open Policy Agent Conftest
- Rego Language Documentation
Watch Video
Footnotes
-
Kubernetes inherit root privileges unless overridden by
securityContext. ↩