From 7327b1fbbc7aa557b21a9f358f224bb6b1231d2d Mon Sep 17 00:00:00 2001 From: Emmanuel Garette Date: Thu, 23 Apr 2020 07:37:43 +0200 Subject: [PATCH] first version --- specification.txt | 301 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 301 insertions(+) create mode 100644 specification.txt diff --git a/specification.txt b/specification.txt new file mode 100644 index 0000000..e1e40fd --- /dev/null +++ b/specification.txt @@ -0,0 +1,301 @@ +---------------------------- +| L'usine d'infrastructure | +---------------------------- + +Définitions +=================== + +Machine physique +------------------ + +Le système est installé sans système de virtualisation. + +Machine virtuelle +-------------------- + +Le système est installé avec système de virtualisation (virtualisation matérielle ou conteneur). + +Machine +---------------- + +Le système est installé avec ou sans système de virtualisation. + +Infrastructure immutable +--------------------------- + +Les données de la machine ne devront pas avoir de comportement unique. +Par exemple, un système avec de multiple mise à jour doit arriver strictement dans le même état qu'une machine fraîchement installé. + +L'immutabilité permet de résoudre la problématique de la testabilité de l'infrastructure. +Cela va également éviter des comportements erratiques d’un système qui devient de plus en plus complexe avec le temps. + +Les données immutables sont strictement reproductible. + +Infrastructure programmable +----------------------------- + +Permet d’automatiser la gestion et l’approvisionnement de l’infrastructure informatique grâce a des lignes de commande ou des fichiers textes. + +Recette +----------- + +Ensemble des instructions permettant d'arriver à un état. + +Principes généraux +====================== + +- les services sont répartis sur différentes machines +- les machines sont immutables +- l'infrastructure est mise en place par une usine d'infrastructure + +Types d'usagers +=============================== + +Développeur +----------------- + +Personne qui travail sur le générateur de plate forme + +Contributeur +------------------- + +Personne qui réalise les recettes et les mets à disposition. + +Administrateur +------------------- + +Personnes qui ont accès à l'ensemble ou une partie des éléments de l'infrastructure + +Une gestion des droits permettra de définir ce que l'utilisateur à le droit d'administrer. + +Utilisateur +-------------- + +Usager de l'infrastructure. + +Types de données +=============================== + +Différents type de données +------------------------------- + +Voici les différents types de données : + +- données système : le système d'exploitation mais également les différentes applications et la configuration par défaut. Généralement installés depuis une distribution. +- données de configuration : les personnalisations (issue des recettes fait par les contributeurs en suivant les configurations utilisateurs) +- données temporaire : + - illimité : conservées jusqu'au redémarrage de la machine. Par exemple cache squid, cache base de donnée, ... + - limité dans le temps : données temporaires qui seront supprimés au démarrage ou si elles sont perimées. Par exemple : session, copie de fichier avant traitement, ... + - la SWAP +- données utilisateurs : données produits par l'utilisateur. + +Les disques +------------- + +Il existe trois types de disques : + +- le disque système qui contiendra les données systèmes +- le disque de configuration qui comprendra les données de configuration +- le disque "data" qui comprendra les données temporaires et les données utilisateurs + +Dans ces disques, il peut y avoir des partitions séparées. + +La mutabilité des données +------------------------------- + +Les données système sont immutables. +Les données de configuration sont immutables. +Les données temporaires sont mutables. +Les données utilisateurs sont mutables. + +Approvisionnement +----------------------- + +Toutes les données immutables sont approvisionnées, reproductible et non modifiable. +Les données mutables peuvent être approvisionnées pour les initialiser. +Les répertoires temporaires mutables n'ont pas vocation a être provisionnés. + +Les données mutables peuvent être facilement réinitialisé par l'administrateur et re approvisionnées. + +Mise à jour +-------------- + +- des données systèmes d'une machine physique : + - la machine doit passer dans un état mutable pour les données systèmes + - la mise à jour système (notamment de la distribution) est effectuée + - la machine est redémarré +- des données systèmes d'une machine virtuelle : + - l'image est regénéré (pas de mise à jour) + - mise à disposition + - la machine est redémarré +- des données immutables de configuration : + - regénéré + - mise à disposition + - la machine est redémarré +- des données mutables utilisateurs : peuvent être mise à jour si nécessaire +- des données mutables temporaires : ne sont pas mise à jour, elles sont réinitialisés par un redémarrage. + +Les recettes +---------------- + +Il existe deux grandes familles de recette : + +- les recettes pour construire les données systèmes : + - pour mettre à disposition un système de base par système d'exploitation et par version + - pour installer les paquets spécifiques au service, les fichiers, script a exécuter, ... +- les recettes pour construire les données de configuration et approvisionnées les données mutables : + - les fichiers de configuration + - activation de service, ... + - le nécessaire pour faire les différents approvisionnement et mises à jour + +Sauvegardes +---------------- + +Seules les données mutables sont sauvegardées. + +Elles peuvent être sauvegardées : + +- directement +- après extraction + +Taille +---------- + +La taille des disques de données est définit par le contributeur dans une recette et n'est pas modifiable par l'administrateur. + +Seule les partitions mutables sont redimensionnable (il est possible de les augmenter). C'est le contributeur qui décide de les augmenter. + +La taille des données système ne doivent pas dépasser idéalement les 500 Mo. + +Différents composants +============================= + +Description de l'infrastructure +--------------------------------------- + +La description de l'infrastructure se fait par les administrateurs suivant les droits. +L'infrastructure est décrit via la ligne de commande. + +L'infrastructure se défini avec les objets suivant : + +- le cluster de virtualisation +- des noeuds de calculs +- des sites +- des zones +- des services + +Génération des données de configuration +---------------------------------------------- + +FIXME description de la partie Rougail + +Installation du système +--------------------------- + +Les données du système sont installés de façon automatique. +L'installation se fait en suivant les recettes mis à diposition par les contributeurs. + +Les recettes sont spécifiques à la distribution. + +Le système installé est ensuite mis à disposition dans le disque prévu à cette effet. Ce disque est générique et peut servir pour plusieurs service de même type. + +Personnalisation des fichiers de configuration +---------------------------------------------------- + +Les fichiers de configuration sont générés à partir des recettes fournis par les contributeurs et la configuration défini par l'administrateur. + +L'administrateur prépare la configuration via la ligne de commande. + +L'administrateur peut faire des modèles de serveurs contenant les valeurs par défaut des différents serveurs hérité de ce serveur modèles. Le multi-héritage et l'héritage multiple est possible. + +L'administrateur commence par faire un "brouillon" de configuration qu'il devra valider lorsqu'il sera satisfait. +C'est cette configuration qui sera utilisée pour générer les fichiers de configuration. + +Ces fichiers de configuration sont ensuite mis à disposition dans le disque prévu à cette effet. + +Approvisionnement et mise à jour des données mutables +----------------------------------------------------- + +L'approvisionnement et la mise à jour se fait via des procédures prévus dans la recette et dans les fichiers de configuration suivant les besoins du service. + +Fournisseur +-------------- + +FIXME décrire le fonctionnement de factory + +Fournisseur d'identité +-------------------------- + +PKI +----- + +- SSL + +L'ensemble des certificats doivent être signé par une autorité de certification centralisée. + +Il est nécessaire de gérer 2 types d'autorités : + + - une autorité extérieur pour que les services soient valide avec des acteurs hors de la plateforme + - une autorité interne + +Aucun certificat généré sur la machine ne doit être utilisé. + +- SSH + +Les clé SSH sont signés par une autorité géré par l'usine d'infrastructure. + +Cette signature : + +- n'a une validité que d'une journée +- autorise la connexion au serveur via un compte nominatif + +Les secrets +-------------- + +Différents mots de passe : + +- pour se connecter aux différents machines via root (mode secours) +- un mot de passe par administrateur pour se connecté sur une machine +- pour se connecter en lecture ou en écriture sur les différents services + +Outil de l'administrateur +------------------------------ + +L'administrateur peut piloter l'infrastructure via une ligne de commande unique. + +L'utilisateur doit avoir une ouvrir une session d'administration pour avoir accès aux différentes fonctionnalités de la plateforme. + +Les droits d'accès sont validé par la plateforme. + +Sécurisation de l'infrastructure +======================================= + +Réseau d'administration +---------------------------------------------- + +Un réseau d'administration est mis en place. + +Les administrateurs doivent être physiquement sur ce réseau pour faire des tâches d'administration sur les machines. + +Ce réseau n'est pas routable. +Seul les tâches d'adminitration y sont autorisés. + +Tout le traffic sur ce réseau doit être considéré comme illégitime et doit générer une alerte. + +Connexion sur un interpreteur de commande +----------------------------------------------- + +Il y a deux type de connexion sur un interpréteur de commande : + +- automatisée : les connexions se font via SSH avec un compte générique autorisé sur l'ensemble des machines. Ce compte peut devenir root sans mot de passe +- manuelle : + - il faut que l'utilisateur ait les droits + - les droits utilisateurs sont définit dans les données de configuration + - la connexion est autorisé via SSH + - la connexion est autorisé via TTY + - le compte nécessite un mot de passe pour devenir root + - les connexions SSH sont valide sans passer par le mécanisme TOFU + - le répertoire de connexion est temporaire et créé à la connexion, aucune donnée utilisateur dans ce répertoire ne sera conservé +- mode secours : il existe un mode secours où l'utilisateur peut se connecter en root via TTY. Ce mode n'est a utilisé qu'en dernier recours et doit être justifié. Une alerte doit être remontée. + +L'ensemble des connexions se font via le réseau administratif.