Architecture Kubernetes légère (K3s) et pattern réseau associé
Contexte
SecurewebScan nécessite un orchestrateur de conteneurs pour exécuter des Jobs de scan éphémères et héberger progressivement plusieurs services applicatifs. AWS EKS est exclu pour les premiers sprints car trop coûteux.
Décision — Orchestrateur
K3s est retenu : distribution Kubernetes légère, empreinte mémoire réduite, API compatible avec l'écosystème standard (Helm, kubectl, ArgoCD).
Décision — Réseau (version Sprint 3, appliquée)
Le nœud K3s est déployé directement en sous-réseau public avec une Elastic IP (EIP).
Mesures de sécurité
| Risque | Mitigation |
|---|---|
| IP publique exposée | ✅ Security Group restrictif : ports 80/443 seulement depuis 0.0.0.0/0 |
| Accès SSH | ✅ Pas de key pair SSH. Administration uniquement via SSM Session Manager |
| API Kubernetes (6443) | ✅ Port fermé dans le SG — aucune exposition |
| Exploitation applicative | Couche OS + conteneur + réseau (défense en profondeur identique à une architecture privée) |
| Chiffrement au repos | ✅ EBS chiffré |
L'absence pour l'instant de bastion ne réduit pas la sécurité réelle car :
- Le SG est la barrière principale, identique dans les deux cas
- L'administration SSM est directe sur le K3s (pas de jump host nécessaire)
Migration ultérieure prévue en sous-réseau privé
Lors de la bascule haute disponibilité (Sprint 19), les 3 nœuds K3s seront déployés en sous-réseau privé avec un Network Load Balancer (NLB) pour l'exposition publique.
Décision — Administration
Aucune clé SSH statique n'est utilisée. L'administration des instances se fait exclusivement via AWS Systems Manager Session Manager, cohérent avec le principe déjà appliqué à l'authentification CI/CD (fédération OIDC, zéro credential statique).
Décision — Exposition applicative
Le trafic HTTP/HTTPS est reçu directement par ingress-nginx sur les ports hôte 80/443 (hostPort), sans intermédiaire. Le certificat TLS est émis et renouvelé automatiquement par cert-manager (Let's Encrypt, ACME HTTP-01).
Dette technique assumée
- Le rôle IAM du nœud K3s est accessible à l'ensemble des processus de l'instance hôte, y compris les Pods. Réévaluation prévue ultérieurement.
- Haute disponibilité prévue ultérieurement pour des raisons de coût.
- Toute perte du nœud unique entraîne pour l'instant une interruption de service.