Que fait renforcement-sécurité-conteneurs ?
Renforcez les images Docker/conteneurs et les déploiements runtime avec des images de base sécurisées, des utilisateurs non-root, l'analyse CVE, SBOM/signature, seccomp/AppArmor et les contrôles de sécurité des pods Kubernetes. Utilisez-le pour les revues de sécurité Dockerfile, les CVE de conteneurs, l'analyse d'images, les images distroless ou le durcissement en production.
Commandes et directives
- Utilisez toujours une image de base officielle et minimale (ex.
alpine:latest,debian:stable-slim,golang:alpine). Évitezubuntu:latestsauf nécessité. Privilégiez les images distroless (ex.gcr.io/distroless/base) pour réduire la surface d'attaque. - Exécutez en tant qu'utilisateur non-root : ajoutez
USER 10001dans votre Dockerfile après avoir installé les dépendances. Créez un utilisateur dédié :RUN addgroup -S app && adduser -S app -G app USER app - Analysez les vulnérabilités avec
trivy image --severity HIGH,CRITICAL mon-image:tag. Corrigez les CVEs critiques avant le déploiement. Utiliseztrivy image --ignore-unfixed --severity HIGH,CRITICALpour les CVEs non corrigées. - Générez un SBOM :
trivy image --format cyclonedx -o sbom.json mon-image:tag. Signez-le aveccosign sign-blob --key cosign.key sbom.json. - Signez votre image : générez une paire de clés (
cosign generate-key-pair) et signez aveccosign sign --key cosign.key mon-image:tag. - Appliquez seccomp : créez un profil par défaut (
seccomp-default.json) et montez-le :securityContext: seccompProfile: type: Localhost localhostProfile: seccomp-default.json - Appliquez AppArmor : chargez un profil (
apparmor-deny-write) et spécifiez-le :securityContext: appArmorProfile: type: Localhost localhostProfile: apparmor-deny-write - Contrôles de sécurité Kubernetes : appliquez le
PodSecurityStandardrestricted:apiVersion: v1 kind: Pod metadata: labels: pod-security.kubernetes.io/enforce: restricted spec: securityContext: runAsNonRoot: true runAsUser: 10001
Exemple de Dockerfile durci
FROM golang:alpine AS build
RUN addgroup -S app && adduser -S app -G app
COPY . /app
RUN go build -o /app/server /app/main.go
FROM gcr.io/distroless/static:latest
COPY --from=build /app/server /server
USER 10001
EXPOSE 8080
CMD ["/server"]
Notes importantes
- Le SBOM et la signature sont essentiels pour la conformité (ex. SLSA, SSDF).
- Les profils seccomp/AppArmor doivent être adaptés à l'application.
- L'analyse CVE doit être intégrée dans le pipeline CI/CD.
- Testez les images avec
docker run --security-opt seccomp=seccomp-default.json --security-opt apparmor=apparmor-deny-write mon-image.
Ressources
- Trivy - Analyseur de vulnérabilités
- Cosign - Signature de conteneurs
- Docker Security Best Practices
- Kubernetes Pod Security Standards