3 derniers cours
This commit is contained in:
210
08_docker-security.md
Normal file
210
08_docker-security.md
Normal file
@@ -0,0 +1,210 @@
|
||||
---
|
||||
marp: true
|
||||
theme: default
|
||||
paginate: true
|
||||
header: "Sécurisation avancée des images Docker"
|
||||
footer: "BUT2"
|
||||
style: |
|
||||
section {
|
||||
font-size: 28px;
|
||||
}
|
||||
h1 {
|
||||
color: #0066cc;
|
||||
}
|
||||
h2 {
|
||||
color: #0099cc;
|
||||
}
|
||||
---
|
||||
|
||||
# Sécurisation avancée des images Docker
|
||||
## Stratégies et outils pour une conteneurisation robuste
|
||||
|
||||
---
|
||||
|
||||
# Introduction
|
||||
|
||||
- **Approche holistique** nécessaire pour une protection efficace
|
||||
- Combinaison de **bonnes pratiques** validées par l'industrie
|
||||
- **Cycle de vie complet** : de l'image de base à l'exécution
|
||||
|
||||
---
|
||||
|
||||
# 1. Sélection et validation des images de base
|
||||
|
||||
## Types d'images et niveaux de confiance
|
||||
- **Images officielles** : 68% de vulnérabilités en moins
|
||||
- **Images minimalistes** : Alpine Linux (5MB), Distroless (sans shell)
|
||||
- **Images certifiées** : Audits indépendants et signature numérique
|
||||
|
||||
```bash
|
||||
docker scout recommendations my-image:latest
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# 1. Sélection et validation des images de base (suite)
|
||||
|
||||
## Gestion des dépendances
|
||||
- **SBOM** (Software Bill of Materials) pour tracer l'origine des composants
|
||||
- Détection des licences non conformes et dépendances obsolètes
|
||||
|
||||
```bash
|
||||
syft my-image:latest -o json > sbom.json
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# 2. Hardening des Dockerfiles
|
||||
|
||||
## Architecture des builds sécurisés
|
||||
- **Mode non-privilégié** :
|
||||
```
|
||||
USER 1001:2001 # UID/GID non-root
|
||||
```
|
||||
|
||||
- **Builds multi-étapes** :
|
||||
```dockerfile
|
||||
FROM golang:1.21 AS builder
|
||||
# Compilation
|
||||
FROM gcr.io/distroless/base
|
||||
# Runtime
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# 2. Hardening des Dockerfiles (suite)
|
||||
|
||||
## Bonnes pratiques
|
||||
- **Nettoyage des couches intermédiaires** :
|
||||
```dockerfile
|
||||
RUN apt-get update && apt-get install -y \
|
||||
package1 \
|
||||
package2 \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# 3. Analyse des vulnérabilités
|
||||
|
||||
## Outils d'analyse continue
|
||||
|
||||
| Outil | Type | Avantages |
|
||||
|-------|------|-----------|
|
||||
| Trivy | SAST/DAST | Analyse OS packages et langages |
|
||||
| Snyk | SCA | Correction automatisée des CVE |
|
||||
| Clair | Dynamique | Surveillance en temps réel |
|
||||
| Anchore | Politiques | Vérification CIS Benchmarks |
|
||||
|
||||
---
|
||||
|
||||
# 3. Analyse des vulnérabilités (suite)
|
||||
|
||||
## Intégration CI/CD
|
||||
```yaml
|
||||
# .github/workflows/security.yml
|
||||
name: Security Scan
|
||||
on: [push]
|
||||
jobs:
|
||||
trivy-scan:
|
||||
steps:
|
||||
- name: Scan image
|
||||
uses: aquasecurity/trivy-action@master
|
||||
with:
|
||||
severity: HIGH,CRITICAL
|
||||
exit-code: 1
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# 3. Analyse des vulnérabilités (suite)
|
||||
|
||||
## Gestion des correctifs
|
||||
- Rebuilds hebdomadaires pour appliquer les correctifs OS
|
||||
- Patchs critiques en 24h via des processus d'urgence
|
||||
- Analyse différentielle des SBOM pour identifier les changements
|
||||
|
||||
```json
|
||||
{
|
||||
"docker": {
|
||||
"enabled": true,
|
||||
"schedule": ["every weekend"]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# 4. Sécurité runtime
|
||||
|
||||
## Isolation au niveau du noyau
|
||||
- Mécanismes SELinux/AppArmor pour renforcer l'isolation
|
||||
- Profils personnalisés bloquant 89% des tentatives d'évasion
|
||||
|
||||
```bash
|
||||
docker run --security-opt "apparmor=docker-custom" my-image
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# 4. Sécurité runtime (suite)
|
||||
|
||||
## Gestion des secrets
|
||||
- Intégration avec HashiCorp Vault pour éviter le stockage en clair
|
||||
|
||||
```dockerfile
|
||||
RUN --mount=type=secret,id=db_pass \
|
||||
export DB_PASSWORD=$(cat /run/secrets/db_pass) \
|
||||
&& ./init-db.sh
|
||||
```
|
||||
|
||||
- Politiques de rotation automatique des secrets
|
||||
|
||||
---
|
||||
|
||||
# 5. Gouvernance et conformité
|
||||
|
||||
## Adhésion aux standards OWASP Docker Top 10
|
||||
|
||||
| ID | Risque | Contrôle |
|
||||
|----|--------|----------|
|
||||
| D01 | Images vulnérables | Analyse SBOM + CVE |
|
||||
| D02 | Runtime non durci | Profils AppArmor/SELinux |
|
||||
| D03 | Secrets exposés | Intégration Vault |
|
||||
|
||||
- L'implémentation complète réduit les incidents de 76%
|
||||
|
||||
---
|
||||
|
||||
# 5. Gouvernance et conformité (suite)
|
||||
|
||||
## Automatisation IaC
|
||||
- Templates Terraform pour appliquer des configurations sécurisées
|
||||
- Intégration des politiques de gestion des secrets
|
||||
|
||||
```terraform
|
||||
resource "docker_image" "secure" {
|
||||
name = "my-image:${var.version}"
|
||||
build {
|
||||
context = "."
|
||||
args = { USER_ID = 1001 }
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# 6. Perspectives futures
|
||||
|
||||
- **Confidential Computing** : Exécution dans des enclaves SGX/SEV
|
||||
- **SBOM dynamiques** : Tracking en temps réel des composants
|
||||
- **MLOps Security** : Détection automatique des dérives de comportement
|
||||
|
||||
---
|
||||
|
||||
# Conclusion
|
||||
|
||||
- Sécurité Docker = **pratiques techniques + processus organisationnels**
|
||||
- Adoption d'**outils modernes** (Trivy, Snyk, Vault)
|
||||
- **Automatisation CI/CD** pour maintenir la productivité
|
||||
- Innovations futures: **confidential computing** et **vérification cryptographique**
|
||||
Reference in New Issue
Block a user