Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révisionLes deux révisions suivantes |
technique:resume [2021/01/27 23:07] – qduchemi | technique:resume [2024/06/06 13:09] – qduchemi |
---|
| ## Résumé technique |
| |
| Cette page a pour but de faire une rapide présentation de l'infrastructure et des pratiques de Picasoft, principalement en redirigeant vers des pages du wiki. Comme ce dernier est un peu dense, cette page est un bon point d'entrée ! |
| |
| <bootnote>Idéalement, tout changement important est reflété dans cette page, qui est référencée sur le [site de Picasoft](https://picasoft.net) et a notamment pour but de centraliser les éléments de [conformité à la charte CHATONS](https://framagit.org/chatons/CHATONS/-/blob/master/docs/Liste_de_conformit%C3%A9_%C3%A0_la_Charte_CHATONS.md) sur la partie **Transparence**. Quelqu'un qui a des doutes sur les sauvegardes, les accès, les technos utilisées, etc, doit trouver des pointeurs ici!</bootnote> |
| |
| ### Infrastructure physique |
| |
| Picasoft possède [[technique:infrastructure:config|trois machines physiques]], Alice, Bob et Caribou. |
| |
| Alice et Bob sont historiquement hébergées par le FAI associatif [Tetaneutral](http://tetaneutral.net/). |
| Ces machines ont été achetées pour Picasoft par UTeam, une filiale de l'Université de Technologie de Compiègne, sur un budget recherche. |
| |
| Caribou est hébergée dans la salle serveur de la DSI de l'UTC, par l'association [Rhizome](https://rhizome-fai.net/). Elle a été achetée grâce à une subvention du FSDIE (Fonds de solidarité et de développement des initiatives étudiantes). Alice a récemment été rapatriée dans la même salle serveur. |
| |
| <bootnote>Tetaneutral et Rhizome sont membres de la [fédération FDN](https://www.ffdn.org/).</bootnote> |
| |
| <bootnote learn> |
| Tetaneutral a une salle associative (TLS00) hébergées dans le datacenter Fullsave. Cette salle est notamment équipées d’onduleurs (environ 5), qui permet d’éviter des coupures temporaires sur le réseau électrique et donc d’éviter la plupart des interruptions de services dues au réseau électrique. |
| </bootnote> |
| |
| Alice et Bob sont équipées de la technologie [Intel AMT](https://en.wikipedia.org/wiki/Intel_Active_Management_Technology) ; Caribou de [iDRAC9](https://www.dell.com/support/kbdoc/fr-fr/000178016/prise-en-charge-du-controleur-idrac9-integrated-dell-remote-access-controller-9), qui permet de les administrer à distance, même en cas de plantage de la machine. |
| |
| Les données des services sont stockées simultanément sur deux disques (on dit « RAID 1 ») pour éviter qu'une défaillance matérielle ne provoque une perte des données ou une interruption de service trop importante. |
| |
| <bootnote learn>Le RAID 1 consiste en l'utilisation de n disques redondants (avec n ≥ 2), chaque disque de la grappe contenant à tout moment exactement les mêmes données, d'où l'utilisation du mot « miroir ». *[Source](https://fr.wikipedia.org/wiki/RAID_(informatique)*</bootnote> |
| |
| <bootnote>L'ensemble de l'infrastructure est donc sous le contrôle total de l'association Picasoft. Des bénévoles de Tetaneutral peuvent être amenés à intervenir sur les machines lors d'intervention de maintenance, mais n'accèdent jamais aux données.</bootnote> |
| |
| ### Infrastructure logicielle |
| |
| #### Machines |
| |
| Les machines physiques sont des **hyperviseurs**, c'est-à-dire que leur système d'exploitation est conçu pour créer et gérer des machines virtuelles. |
| |
| Ce système d'exploitation est [[technique:infrastructure:install_proxmox|Proxmox]], version 7. Son interface graphique permet de facilement [[technique:infrastructure:vm|créer des machines virtuelles]]. |
| |
| <bootnote>Proxmox 6 est basé sur Debian 10.</bootnote> |
| |
| Les services tournent sur des machines virtuelles (Debian 11). Nous en hébergeons 8. |
| |
| Sur Alice : |
| |
| * `pica01-test`, machine utilisée pour tester les services avant mise en production et tests de toutes sortes. |
| * `stph01`, machine utilisée par Stéphane Crozat notamment dans le cadre de ses activités de recherche. |
| |
| Sur Bob : |
| |
| * `pica02`, généraliste, sur laquelle tournent notamment l'instance principale d'Etherpad et Mattermost. |
| * `monitoring`, machine utilisée pour les services internes (LDAP, serveur mail...) et la métrologie. |
| |
| Sur Caribou : |
| |
| * `pica01`, généraliste, sur laquelle tournent des services peu critiques, comme les sites web statiques. |
| * `pica03`, généraliste, sur laquelle tournent les services moyennement critiques, comme Hedgedoc et l'instance hebdomadaire d'Etherpad. |
| * `42l`, une machine virtuelle que nous mettons à disposition de nos ami·es du CHATONS [La Contre-Voie](https://42l.fr/) pour le monitoring de leur infrastructure. |
| * `media`, machine utilisée pour les services consommateurs d'espace disque (comme Peertube). |
| * `scenari`, machine utilisée pour stocker les backups de l'association Scenari. |
| |
| #### Services |
| |
| Tous les services (internes ou publics) sont lancés en utilisant [[technique:tech_team:pres_docker|Docker et Docker Compose]]. Les fichiers nécessaires pour déployer l'ensemble de nos services sont sur leurs [dépôts Git](https://gitlab.utc.fr/picasoft/services). |
| |
| L'ensemble des services actuellement en production est visible sur les [[technique:graph_services|graphes des services]], générés automatiquement chaque jour. La liste des services publics est visible sur le [site de l'association](https://picasoft.net/). |
| |
| <bootnote warning> |
| Liste des services non-mentionnés sur le site de l'association : |
| |
| - Un [proxy Snowflake](https://gitlab.utc.fr/picasoft/projets/services/snowflake-proxy) |
| </bootnote> |
| |
| Les procédures pour lancer, administrer et mettre à jour et créer des services sont répertoriées sur [[technique:docker:picasoft:start|une partie dédiée du Wiki]]. |
| |
| <bootnote>Picasoft utilise ponctuellement des machines virtuelles hébergées gracieusement par [Gandi](https://www.gandi.net/fr), un hébergeur et registrar de nom de domaine français reconnu pour son engagement en faveur d'un internet libre, décentralisé, éthique et solidaire.</bootnote> |
| |
| ### Nom de domaine |
| |
| Picasoft a loué deux noms de domaine au registar [Gandi](https://gandi.net/) : |
| |
| * `picasoft.net`, pour la majorité des utilisations |
| * `picagraine.net`, pour les activités de formation |
| |
| Nous n'utilisons pas les serveurs DNS de Gandi pour gérer notre zone, mais [[technique:adminsys:dns:start|nos propres serveurs]], principalement pour des raisons de décentralisation et d'apprentissage. Un des serveurs secondaires est hébergé hors de l'infrastructure, afin de pouvoir prendre le relais en cas de panne très critique. |
| |
| Picasoft utilise également son [[technique:adminsys:mail:start|propre serveur mail]] pour envoyer des mails (notifications, lien d'inscription, etc). |
| |
| ### Gestion des accès |
| |
| #### Accès aux machines |
| |
| Les accès à l'**infrastructure** sont centralisés grâce à un [[technique:adminsys:ldap:start|annuaire LDAP]]. Chaque membre sur l'annuaire a : |
| |
| * Un groupe d'accès (simple visiteur, administrateur Docker ou administrateur système) |
| * Une liste des machines autorisées (machine de test, machine de services, hyperviseurs, etc) |
| |
| #### Accès aux identifiants |
| |
| Les accès aux **mots de passe** de l'association (administration d'un service, mot de passe `root` des machines...) sont gérés par [[asso:tuto:vaultwarden|vaultwarden]]. Chaque mot de passe est chiffré individuellement pour toutes les personnes qui y ont accès, ce qui évite un mot de passe ou une clé partagée, moins sûre. |
| |
| <bootnote critical>Tous les membres autorisés à accéder à l'infrastructure sont membres de l'association et ont reçu une formation de l'équipe technique. Les accès sont donnés suite à un vote à la majorité absolue de tous les membres.</bootnote> |
| |
| <bootnote>Les accès sont régulièrement vérifiés et mis à jour. Les mots de passe critiques sont renouvelés chaque semestre, conformément au [[asso:administratif:registre|règlement intérieur]].</bootnote> |
| |
| ### Sécurité |
| |
| #### Machines |
| |
| Toutes les machines ont un [[technique:adminsys:secu:firewall|pare-feu]] qui refuse les connexions entrantes, sauf sur les ports autorisés. |
| |
| [[technique:adminsys:secu:fail2ban|fail2ban]] est également installé sur toutes les machines, pour bannir les IP tentant de forcer une connexion SSH. |
| |
| Les [mises à jour de sécurité Debian](https://www.debian.org/security/) sont [[technique:adminsys:secu:automatic_updates|appliquées automatiquement]], une fois par jour. |
| |
| Les commandes privilégiées exécutées sur les machines sont enregistrées et centralisées sur la machine `monitoring`, grâce à [[technique:old:auditd:start|auditd et rsyslog]]. |
| |
| #### Services |
| |
| Picasoft utilise TLS sur l'ensemble de ses services. |
| |
| Dans le cas des services web, l'activation de HTTPS est systématique et automatique, grâce à [[technique:tech_team:traefik|Traefik, un reverse-proxy pour Docker]]. |
| |
| <bootnote learn>Un *reverse proxy* est un serveur vers lequel sont redirigées toutes les requêtes qui entrent vers un ordinateur. Nous utilisons Traefik comme un reverse-proxy **web**, c'est-à-dire que toutes les requêtes HTTP qui arrivent sur nos machines passent par Traefik. Ce dernier se charge de forcer HTTPS et d'ajouter des *headers* de sécurité.</bootnote> |
| |
| <bootnote>Les services Picasoft sont notés B ou plus par le [Mozilla Observatory](https://observatory.mozilla.org). La politique CSP est systématiquement absente, ce qui est améliorable.</bootnote> |
| |
| Dans le cas des services non-web (Mumble, LDAP, serveur mail...), les certificats TLS sont gérés automatiquement par un outil maison, [[technique:docker:good_practices:tls|TLS Certs Monitor]]. |
| |
| #### Vérification automatique des mises à jour |
| |
| Il existe [[technique:adminsys:secu:services_updates|un service]] qui s'occupe de vérifier automatiquement l'existence de mises à jour sur les services de Picasoft. Pour cela il récupère les versions des logiciels qu'on lui indique par les API des forges logicielles ou par un flux RSS (Atom 2005 pour être tout à fait exact et éviter les abus de langage). Ensuite il notifie les membres de l'équipe technique de la mise à jour disponible. |
| |
| Les étapes de mise à jour restent manuelles, ce bot ne fait que signaler les possibilités. |
| |
| ### Sauvegardes |
| |
| #### Services |
| |
| Les services (volumes, bases de donnée, configurations, secrets...) sont [[technique:adminsys:backup:start|sauvegardés plusieurs fois par jour]] à l'aide de [restic](https://restic.net). La configuration peut être amenée à évoluer, mais Picasoft garde en général un backup par heure sur la dernière journée, puis un backup par jour sur la dernière semaine, un backup par semaine sur le dernier mois, et un backup par mois sur la dernière année. |
| |
| <bootnote critical>En particulier, cela signifie que les messages et pads supprimés par les utilisateurices sont conservés dans les backups jusqu'à leur rotation automatique.</bootnote> |
| |
| #### Machines virtuelles |
| |
| Les machines virtuelles sont à présent trop volumineuses pour être sauvegardées en intégralité. Si une machine virtuelle venait à tomber, elle devrait être reconstituée à la main à partir des sauvegardes des services et des informations présentes sur ce wiki. |
| |
| ### Métrologie |
| |
| <bootnote learn>La métrologie, dans laquelle on retrouve la notion de mètre/métrique, est le fait d’obtenir, de garder et de tracer la valeur numérique d'une charge. Par exemple le pourcentage de CPU utilisé sur un serveur, le nombre de personnes connectées sur une site web, le trafic sortant et entrant sur un switch. *[Source](https://www.it-connect.fr/monitoring-supervision-et-metrologie/)*</bootnote> |
| |
| Pour collecter des métriques, Picasoft a mis en place une [[technique:adminsys:monitoring:metrologie:stack-picasoft|pile de métrologie]], qui collecte : |
| |
| * Des métriques *système* (CPU, RAM, stockage...) |
| * Des métriques *service* (nombre d'utilisateurs sur Mattermost, nombre de pads sur Etherpad...) |
| * Des métriques *réseau* (volume échangé, erreurs...) |
| |
| Ces métriques sont consultées sous forme de graphiques dans [[technique:adminsys:monitoring:metrologie:grafana|Grafana]]. |
| |
| Un système d'alertes permet de prévenir l'équipe technique lorsqu'une métrique remplit une certaine condition (//e.g.// un disque est rempli à plus de 95%). [[technique:adminsys:monitoring:alerting:vmalert|permet de déclencher des alertes]] et [[technique:adminsys:monitoring:alerting:alertmanager|alertmanager]] traite ces alertes et les transmet sur Mattermost. |
| |
| ### Partenariats |
| |
| Picasoft a une activité annexe d'aide à des structures amies. De temps à autre, on leur rend service. Par exemple : |
| |
| * Hébergement d'une machine virtuelle de monitoring pour [la Contre-Voie](https://lacontrevoie.fr/) ; |
| * Hébergement des vidéos de [l'association Scenari](https://scenari.org/) ; |
| * Hébergement d'un NextCloud pour le syndicat Solidaires étudiant-e-s Compiègne ; |
| * Hébergement des backups de l'association [Scenari]. |