Docker Security Basics đĄī¸ â
āĻāύā§āĻā§āĻāύāĻžāϰāĻžāĻāĻā§āĻļāύā§āϰ āϝā§āĻā§ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āϏāĻŋāĻāĻŋāĻāϰāĻŋāĻāĻŋ āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰāĻž āĻ āϤā§āϝāύā§āϤ āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖāĨ¤ āĻĄāĻāĻžāϰ āĻāύā§āĻā§āĻāύāĻžāϰ āĻĄāĻŋāĻĢāϞā§āĻāĻāĻžāĻŦā§ āĻāĻŋāĻā§āĻāĻž āĻāĻāϏā§āϞā§āĻā§āĻĄ āĻĨāĻžāĻāϞā§āĻ, āĻĒā§āϰā§āĻŖ āύāĻŋāϰāĻžāĻĒāϤā§āϤāĻž āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰāϤ⧠āĻāĻŋāĻā§ āĻŦā§āϏāĻŋāĻ āϏāĻŋāĻāĻŋāĻāϰāĻŋāĻāĻŋ āĻŽā§āĻāĻžāϰāϏ (Security Measures) āύā§āĻā§āĻž āĻĒā§āϰā§ā§āĻāύāĨ¤
ā§§. āϰā§āĻ āĻāĻāĻāĻžāϰ āĻā§āĻŋā§ā§ āĻāϞāĻž (Run as Non-Root) â
āĻĄāĻāĻžāϰ āĻāύā§āĻā§āĻāύāĻžāϰ āĻĄāĻŋāĻĢāϞā§āĻāĻāĻžāĻŦā§ āϰā§āĻ (Root) āĻāĻāĻāĻžāϰ āĻšāĻŋāϏā§āĻŦā§ āϰāĻžāύ āĻāϰā§āĨ¤ āϝāĻĻāĻŋ āĻā§āύ⧠āĻšā§āϝāĻžāĻāĻžāϰ āĻāύā§āĻā§āĻāύāĻžāϰā§āϰ āύāĻŋā§āύā§āϤā§āϰāĻŖ āĻĒāĻžā§, āϤāĻŦā§ āϏ⧠āĻĒā§āϰ⧠āĻšā§āϏā§āĻ āϏāĻŋāϏā§āĻā§āĻŽā§āϰ āĻāĻā§āϏā§āϏ āĻĒā§ā§ā§ āϝā§āϤ⧠āĻĒāĻžāϰā§āĨ¤
- āϏāĻŽāĻžāϧāĻžāύ: Dockerfile-āĻ āĻāĻāĻāĻŋ āύāύ-āϰā§āĻ āĻāĻāĻāĻžāϰ āϤā§āϰāĻŋ āĻāϰā§āύ āĻāĻŦāĻ āϏā§āĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύāĨ¤
RUN addgroup -S appgroup && adduser -S appuser -G appgroup
USER appuser⧍. āϰāĻŋāĻĄ-āĻ āύāϞāĻŋ āĻĢāĻžāĻāϞ āϏāĻŋāϏā§āĻā§āĻŽ (Read-Only File System) â
āĻāύā§āĻā§āĻāύāĻžāϰā§āϰ āϰāĻžāύāĻāĻžāĻāĻŽā§ āϝāĻĻāĻŋ āĻĢāĻžāĻāϞ āϏāĻŋāϏā§āĻā§āĻŽā§ āĻāĻŋāĻā§ āϞā§āĻāĻžāϰ āĻĒā§āϰā§ā§āĻāύ āύāĻž āĻĨāĻžāĻā§, āϤāĻŦā§ āϏā§āĻāĻŋāĻā§ āϰāĻŋāĻĄ-āĻ āύāϞāĻŋ āĻšāĻŋāϏā§āĻŦā§ āϏā§āĻ āĻāϰ⧠āĻĻā§āĻā§āĻž āϏāĻŦāĻā§ā§ā§ āύāĻŋāϰāĻžāĻĒāĻĻāĨ¤ āĻāϤ⧠āĻšā§āϝāĻžāĻāĻžāϰāϰāĻž āĻāύā§āĻā§āĻāύāĻžāϰā§āϰ āĻā§āϤāϰ⧠āĻā§āύ⧠āĻā§āώāϤāĻŋāĻāϰ āϏā§āĻā§āϰāĻŋāĻĒā§āĻ āϏā§āĻ āĻāϰāϤ⧠āĻĒāĻžāϰāĻŦā§ āύāĻžāĨ¤
docker run --read-only my-imageā§Š. āĻā§āϝāĻžāĻĒāĻžāĻŦāĻŋāϞāĻŋāĻāĻŋāĻ āĻāĻŽāĻžāύ⧠(Drop Capabilities) â
āĻĄāĻāĻžāϰ āĻāύā§āĻā§āĻāύāĻžāϰāĻā§ āĻĄāĻŋāĻĢāϞā§āĻāĻāĻžāĻŦā§ āĻāĻŋāĻā§ āϞāĻŋāύāĻžāĻā§āϏ āĻā§āϝāĻžāĻĒāĻžāĻŦāĻŋāϞāĻŋāĻāĻŋāĻ (Capabilities) āĻĻā§āĻā§āĻž āĻšā§ āϝāĻž āĻšā§āϤ⧠āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒā§āϰ āĻĒā§āϰā§ā§āĻāύ āύā§āĻāĨ¤ āύāĻŋāϰāĻžāĻĒāϤā§āϤāĻžāϰ āĻāύā§āϝ āĻ āĻĒā§āϰā§ā§āĻāύā§āϝāĻŧ āϏāĻŦ āĻā§āϝāĻžāĻĒāĻžāĻŦāĻŋāϞāĻŋāĻāĻŋāĻ āĻĄā§āϰāĻĒ āĻāϰ⧠āĻĻāĻŋāύāĨ¤
docker run --cap-drop=ALL --cap-add=NET_BIND_SERVICE my-imageā§Ē. āϏāĻŋāĻāĻŋāĻāϰāĻŋāĻāĻŋ āϏā§āĻā§āϝāĻžāύāĻŋāĻ (Security Scanning) â
āĻāĻŽā§āĻ āϤā§āϰāĻŋ āĻāϰāĻžāϰ āĻĒāϰ āϏā§āĻāĻŋāϤ⧠āĻā§āύ⧠āĻĒāϰāĻŋāĻāĻŋāϤ āϏāĻŋāĻāĻŋāĻāϰāĻŋāĻāĻŋ āĻšā§āϞ (Vulnerability) āĻāĻā§ āĻāĻŋāύāĻž āϤāĻž āύāĻŋā§āĻŽāĻŋāϤ āϏā§āĻā§āϝāĻžāύ āĻāϰā§āύāĨ¤
- Docker Scout: āĻĄāĻāĻžāϰā§āϰ āύāĻŋāĻāϏā§āĻŦ āϏā§āĻā§āϝāĻžāύāĻŋāĻ āĻā§āϞāĨ¤
- Trivy: āĻāĻāĻāĻŋ āĻāύāĻĒā§āϰāĻŋā§ āĻāĻĒā§āύ āϏā§āϰā§āϏ āĻāĻŽā§āĻ āϏā§āĻā§āϝāĻžāύāĻžāϰāĨ¤
docker scout cves my-image:latestā§Ģ. āĻĄāĻāĻžāϰ āĻāύā§āĻā§āύā§āĻ āĻā§āϰāĻžāϏā§āĻ (Docker Content Trust) â
āϏāĻŦāϏāĻŽā§ āĻā§āϰāĻŋāĻĢāĻžāĻāĻĄ āĻāĻŦāĻ āĻ
āĻĢāĻŋāϏāĻŋā§āĻžāϞ āĻāĻŽā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻžāϰ āĻā§āώā§āĻāĻž āĻāϰā§āύāĨ¤ DOCKER_CONTENT_TRUST=1 āϏā§āĻ āĻāϰāϞ⧠āĻĄāĻāĻžāϰ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻĄāĻŋāĻāĻŋāĻāĻžāϞāϞāĻŋ āϏāĻžāĻāύ āĻāϰāĻž āĻāĻŽā§āĻāĻā§āϞā§āĻ āϰāĻžāύ āĻāϰāĻŦā§āĨ¤
ā§Ŧ. āϏāĻŋāĻā§āϰā§āĻāϏ āĻŽā§āϝāĻžāύā§āĻāĻŽā§āύā§āĻ (Secrets Management) â
āĻĒāĻžāϏāĻā§āĻžāϰā§āĻĄ, āĻāĻĒāĻŋāĻāĻ āĻāĻŋ (API Key) āĻŦāĻž āϏā§āύāϏāĻŋāĻāĻŋāĻ āĻĄā§āĻāĻž āĻāĻāύ⧠Dockerfile-āĻāϰ ENV āĻŦāĻž āϏā§āϰā§āϏ āĻā§āĻĄā§ āϰāĻžāĻāĻŦā§āύ āύāĻžāĨ¤ āĻāϰ āĻĒāϰāĻŋāĻŦāϰā§āϤ⧠āĻĄāĻāĻžāϰ āϏāĻŋāĻā§āϰā§āĻāϏ (Docker Secrets) āĻŦāĻž āĻāύāĻāĻžāϝāĻŧāϰāύāĻŽā§āύā§āĻ āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ āĻĢāĻžāĻāϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ āϝāĻž āϰāĻžāύāĻāĻžāĻāĻŽā§ āĻāύāĻā§āĻā§āĻ āĻāϰāĻž āĻšā§āĨ¤
ā§. āύā§āĻāĻā§āĻžāϰā§āĻ āĻāĻāϏā§āϞā§āĻļāύ (Network Isolation) â
āĻāύā§āĻā§āĻāύāĻžāϰāĻā§āϞā§āĻā§ āĻĄāĻŋāĻĢāϞā§āĻ āĻŦā§āϰāĻŋāĻ āύā§āĻāĻā§āĻžāϰā§āĻā§ āύāĻž āϰā§āĻā§ āĻāĻžāϏā§āĻāĻŽ āύā§āĻāĻā§āĻžāϰā§āĻā§ āϰāĻžāĻā§āύāĨ¤ āĻāϤ⧠āĻ āĻĒā§āϰā§ā§āĻāύā§ā§ āĻāύā§āĻā§āĻāύāĻžāϰ āĻāĻā§ āĻ āĻĒāϰā§āϰ āϏāĻžāĻĨā§ āϝā§āĻāĻžāϝā§āĻ āĻāϰāϤ⧠āĻĒāĻžāϰāĻŦā§ āύāĻž, āϝāĻž āϏāĻŋāĻāĻŋāĻāϰāĻŋāĻāĻŋ āĻŦāĻžā§āĻžā§āĨ¤
ā§Ž. āϰāĻŋāϏā§āϰā§āϏ āϞāĻŋāĻŽāĻŋāĻ (Resource Limits) â
āĻāĻāĻāĻŋ āĻāύā§āĻā§āĻāύāĻžāϰ āϝāĻžāϤ⧠āĻĒā§āϰ⧠āϏāĻŋāϏā§āĻā§āĻŽā§āϰ āĻŽā§āĻŽāϰāĻŋ āĻŦāĻž āϏāĻŋāĻĒāĻŋāĻāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻšā§āϏā§āĻ āϏāĻŋāϏā§āĻā§āĻŽāĻā§ āĻĄāĻžāĻāύ (DoS attack) āύāĻž āĻāϰāϤ⧠āĻĒāĻžāϰā§, āϏā§āĻāύā§āϝ āϰāĻŋāϏā§āϰā§āϏ āϞāĻŋāĻŽāĻŋāĻ āϏā§āĻ āĻāϰā§āύāĨ¤
docker run --memory="512m" --cpus="1" my-imageāϏāĻžāϰāϏāĻāĻā§āώā§āĻĒ (Summary) â
āϏāĻŋāĻāĻŋāĻāϰāĻŋāĻāĻŋ āĻā§āύ⧠āĻāĻāĻāĻŋ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āϏā§āĻā§āĻĒ āύā§, āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻāύā§āĻāĻŋāύāĻŋāĻāϝāĻŧāĻžāϏ āĻĒā§āϰāϏā§āϏāĨ¤ āĻāĻĒāύāĻžāϰ Docker-āĻāĻŋāϤā§āϤāĻŋāĻ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύā§āϰ āύāĻŋāϰāĻžāĻĒāϤā§āϤāĻž āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰāϤ⧠āĻāĻĒāϰā§āϰ āϧāĻžāĻĒāĻā§āϞ⧠āĻĒā§āϰā§āĻĄāĻžāĻāĻļāύ⧠āĻ āĻŦāĻļā§āϝāĻ āĻŽā§āύ⧠āĻāϞā§āύāĨ¤
CAUTION
āϏāĻŋāĻāĻŋāĻāϰāĻŋāĻāĻŋ āĻ āĻŦāĻšā§āϞāĻž āĻāϰāϞ⧠āĻāĻĒāύāĻžāϰ āĻĒā§āϰ⧠āĻāύāĻĢā§āϰāĻžāϏā§āĻā§āϰāĻžāĻāĻāĻžāϰ āĻā§āĻāĻāĻŋāϰ āĻŽā§āĻā§ āĻĒā§āϤ⧠āĻĒāĻžāϰā§āĨ¤ āϏāĻŦāϏāĻŽā§ "Principle of Least Privilege" āĻŽā§āύ⧠āĻāϞā§āύāĨ¤