Sécuriser les déploiements de Lioran S3 avec Caddy et Docker
Un nouveau guide détaille comment déployer le serveur de stockage Lioran S3 en pré-alpha à l'aide de Docker et Caddy, en mettant l'accent sur des modes de durabilité stricts et des montages de données persistants.
Traduit automatiquement depuis l’original en anglais.
Swaraj Puppalwar a publié un guide de déploiement détaillé pour Lioran S3 V1 Pre-Alpha le 1er octobre, décrivant une architecture prête pour la production qui associe le moteur de stockage basé sur Rust à Caddy comme proxy inverse. Cet article constitue une référence cruciale pour les ingénieurs évaluant ce magasin d'objets auto-hébergé compatible S3, soulignant les pièges spécifiques de configuration et les étapes de renforcement de la sécurité nécessaires avant de traiter des données réelles.
Ce qui s'est passé
Le guide décrit un modèle d'infrastructure spécifique où Caddy gère la terminaison HTTPS publique et l'automatisation des certificats, tandis que le processus Lioran S3, appelé Bastion, fonctionne sur un réseau privé via HTTP. Cette séparation permet au moteur de stockage de se concentrer exclusivement sur l'intégrité et la récupération des données sans gérer la complexité TLS. La configuration recommandée utilise Docker Compose pour orchestrer les conteneurs, garantissant que le service de stockage reste isolé de toute exposition directe à Internet tout en servant des requêtes sécurisées via le proxy.
Puppalwar souligne que ce logiciel est actuellement dans un état pré-alpha, destiné principalement à l'évaluation et aux tests plutôt qu'aux charges de travail critiques en production. L'article avertit les opérateurs de valider rigoureusement les comportements en cas de panne et de durcir l'environnement hôte avant de stocker des données significatives. Il fournit une procédure pas à pas pour cloner le dépôt, configurer les variables d'environnement et lancer les services, mais insiste sur le fait que le démarrage réussi du conteneur n'est que le début d'un déploiement fiable.
Détails clés
- Architecture : Caddy termine le HTTPS sur le port 443 et transfère le trafic vers Lioran S3 sur un port HTTP privé, généralement 27118.
- Modes de durabilité : Les utilisateurs doivent choisir entre le mode
strict, qui garantit des limites de synchronisation explicites pour la cohérence en cas de crash, et le modebalanced, qui repose davantage sur le comportement d'écriture différée (writeback) de l'OS pour un débit plus élevé. - Persistance des données : Les données d'objets et les métadonnées doivent être montées sur des volumes de stockage persistants ; l'utilisation d'un stockage de conteneur jetable entraînera une perte de données.
- Configuration de sécurité : Les identifiants administrateur par défaut doivent être remplacés, les origines CORS doivent être restreintes à des domaines spécifiques, et un secret de signature aléatoire long doit être défini pour assurer la stabilité des URL lors des redémarrages.
- Gestion du disque : Le serveur inclut une protection contre les seuils bas (low-watermark), mais les administrateurs doivent configurer une marge d'espace libre suffisante pour éviter que le système de fichiers hôte ne se remplisse et ne fasse planter les services voisins.
- Observabilité : Des vérifications d'état (health checks) et des métriques sont disponibles via des points de terminaison HTTP et un outil CLI dédié pour surveiller l'état et les performances du système.
Contexte
Lioran S3 est un serveur de stockage d'objets open source compatible S3, développé en Rust par Lioran Developer Solutions. Il utilise RocksDB pour la gestion des métadonnées et est conçu pour être léger et efficace. Dans les environnements auto-hébergés modernes, le stockage d'objets est souvent utilisé pour sauvegarder les données des applications, stocker les téléchargements des utilisateurs ou servir des ressources statiques. Contrairement aux systèmes de fichiers traditionnels, les magasins d'objets gèrent les données comme des unités discrètes avec des identifiants uniques, ce qui les rend évolutifs et plus faciles à distribuer.
L'utilisation d'un proxy inverse comme Caddy devant de tels services est une pratique standard en DevOps. Caddy automatise l'acquisition et le renouvellement des certificats TLS auprès de Let's Encrypt, éliminant la charge manuelle de la gestion des certificats. En déléguant la terminaison HTTPS au proxy, l'application backend peut fonctionner plus simplement et plus sécuritairement au sein d'un réseau privé, réduisant ainsi sa surface d'attaque et simplifiant sa base de code.
Pourquoi c'est important
Pour les équipes gérant leur propre infrastructure, la distinction entre les modes de durabilité strict et balanced est cruciale. Dans un environnement cloud, la durabilité est souvent supposée acquise, mais dans les configurations auto-hébergées, les coupures de courant ou les paniques du noyau peuvent entraîner une corruption des données si les écritures ne sont pas correctement synchronisées. Choisir le mode strict sacrifie une partie de la vitesse d'écriture pour garantir que les données sont physiquement sur le disque avant d'accuser réception du téléversement, ce qui est vital pour les archives de sauvegarde ou les documents légaux.
L'accent mis sur les montages de stockage persistants répond à une erreur courante dans les déploiements Docker. Les conteneurs sont éphémères par conception, ce qui signifie que toutes les données écrites à l'intérieur disparaissent lorsque le conteneur est supprimé ou recréé. Les ingénieurs doivent mapper explicitement les répertoires hôtes ou les pilotes de volume vers le chemin de données du conteneur. Ne pas le faire transforme un serveur de stockage en cache temporaire, entraînant une perte de données catastrophique lors de la maintenance ou des mises à jour de routine.
De plus, le guide souligne l'importance de la marge d'espace disque. Les serveurs de stockage peuvent consommer agressivement l'espace disponible, risquant de priver le système d'exploitation des ressources nécessaires aux fonctions de base comme la journalisation ou le swap. En configurant des protections contre les seuils bas et en surveillant l'utilisation du disque, les administrateurs peuvent empêcher qu'un seul service ne fasse tomber l'hôte entier, assurant ainsi une meilleure résilience globale du système.
Ce que vous pouvez faire
- Examinez attentivement le fichier
.env.production.exampleet remplacez toutes les valeurs par défaut, en particulier les mots de passe administrateur et les secrets de signature, avant de lancer la stack. - Définissez
BASTION_DURABILITY=strictsi l'intégrité des données est plus importante que le débit brut d'écriture, notamment pour les cas d'usage d'archivage. - Vérifiez que votre fichier Docker Compose mappe
BASTION_DATA_DIRvers un volume persistant ou un répertoire hôte qui survit aux redémarrages du conteneur. - Configurez Caddy pour gérer les tailles de requêtes importantes et les délais d'attente appropriés afin de prendre en charge le streaming de gros objets sans les mettre entièrement en mémoire tampon.
- Restreignez
BASTION_CORS_ORIGINSà vos domaines d'application spécifiques au lieu d'utiliser des caractères génériques pour empêcher les accès non autorisés via le navigateur. - Mettez en œuvre des vérifications d'état régulières en utilisant les points de terminaison fournis ou les outils CLI pour surveiller les tendances de latence et d'utilisation du disque au fil du temps.



