publik-infra/architecture-6.md

9.8 KiB
Raw Blame History

Autres infrastructures possibles

Infrastructure PoC / test

Dans le cadre dune installation de test ou PoC (preuve de concept) il est habituel dinstaller Publik sur une seule machine. Dans ce cas, toutes les briques partagent :

  • un seul frontal ngnix
  • un seul serveur de base de donnée
  • des espaces disques locaux (/var/lib/brique)
  • un système de log (en général le syslog système)

Dans ce cadre, Publik peut être installé sur une machine aujourdhui habituelle :

  • processeur x86-64 double cœur
  • mémoire vive 2Go
  • espace disque 10Go, voire moins

Cependant et pour rappel, Publik nécessitant un fonctionnement HTTPS, il reste nécessaire de disposer :

  • dun enregistrement DNS par brique instanciée ;
  • dun certificat x509 valable pour chaque brique, généralement un wildcard sur le domaine choisi.

Infrastructure légère et « élastique »

Entre une infrastructure SaaS telle que celle gérée par Entrouvert capable de répondre à des dizaines dinstallations, et une infrastructure minimale telle que celle décrite pour un PoC, toutes les combinaisons sont possibles.

La partie la plus délicate à gérer est souvent la partie x509, et parfois la partie DNS quand il est question de pouvoir créer de nouvelles instances automatiquement dans le cadre dun ensemble de communes (syndicat, organisme, métropole ou agglomération désirant diffuser la solution Publik à ses « membres »).

Pour rendre linstallation « élastique », cest-à-dire capable de sadapter au futur, il est conseillé :

  • de virtualiser toutes les machines ;
  • dutiliser une technique de virtualisation permettant des modifications CPU, RAM et disque faciles, idéalement à chaud ;
  • de disposer dun serveur PostgreSQL central ;
  • davoir accès à un SAN pour le stockage des données ;
  • davoir toute liberté sur la partie DNS, éventuellement via des CNAME ou une délégation de zone ;
  • de disposer dun certificat x509 wildcard pour chaque domaine à gérer.

Une fois linstallation effectuée, il est souvent assez simple de permettre le déplacement dune brique vers une autre machine : copie des configurations et des données, modification DNS, lopération correctement préparée est sans risque et ne provoque pas de coupure de plus de 10 minutes.

Infrastructure pour hébergement sur site

Un hébergement sur site est de type « élastique » (cf supra), voici les recommandations dusage pour linitialisation :

  • machine « IdP » pour authentic (utilisable par d'autres systèmes que Publik)
  • machine « applications » : hobo + combo + w.c.s. + fargo + passerelle
  • machine PostgreSQL
  • autres briques sur une autre machine ou sur la machine « applications »
  • backups et redondance (fail-over) assurés par ailleurs

Pour une collectivité avec plusieurs déploiements prévus à linitialisation, la machine « applications » peut être scindée :

  • machine hobo + combo + passerelle
  • machine w.c.s. + fargo (porte-documents)
  • autres briques sur une machine tierce

Toutes les machines sont virtuelles et modifiables rapidement (CPU et RAM) avec une marge importante. Les répertoires de données proviennent d'un SAN et sont extensibles, principalement pour w.c.s. et fargo (porte-documents).

Caractéristiques dune machine virtuelle à linitialisation :

  • processeur x86-64 4 cœurs
  • mémoire vive 4Go
  • espace disque 16Go ; et plus (via SAN) sur les applications stockant des documents w.c.s. et fargo.

Le serveur PostgreSQL est sécurisé, cest-à-dire quil dispose au moins d'un slave pour fail-over. Si besoin il peut être installé par Entrouvert.

Accès à un S.I. tiers

Lorsque Publik doit accéder à un système dinformation tiers, il doit y avoir ouverture des flux nécessaires :

  • accès webservices : passerelle consomme ou fourni des webservices au S.I. tiers ;
  • accès LDAP pour les annuaires : accès par lIdP pour authentification et synchonisation.

Pour les webservices, la connexion sera effectuée par Passerelle, via un connecteur.

Si le connecteur nexiste pas encore et doit donc être programmé, les webservices tiers doivent utiliser des protocoles ouverts et reconnus, tels que REST/JSON ou SOAP. Ils doivent être documentés et validés.

Protection des accès webservices

Logo Publik

Les webservices, en entrée comme en sortie, doivent utiliser HTTPS. Lauthentification peut être :

  • en login/mot de passe (HTTP Basic authentication)
  • par certificat X509 client et serveur
  • … tout autre mode dauthentification peut être étudié par Entrouvert.

Note : les API internes à Publik utilisent un système dauthentification spécifique similaire à JWT, décrit dans http://doc.entrouvert.org/wcs/dev/#api

Note 2 : En cas de proxy sur la chaîne, il faut vérifier labsence de cache.

Protection de laccès LDAP : X509

La connexion LDAP doit se faire en TLS, avec des certificats X509 clients et serveurs validés de chaque côté. Entrouvert peut fournir des certificats depuis son AC privée.

Sil sagit dun accès LDAP à un système Active Directory, voici deux documentation concernant la mise en place de TLS sur ce système :

Ajout de protections sur webservices existants

Au cas où les logiciels tiers ne mettent pas en place de protection suffisante sur leurs webservices, plusieurs solutions de sécurisation peuvent être envisagées, dont les plus classiques sont : ajout dun reverse-proxy, ajout dune instance « locale » de Passerelle, mise en place dun VPN.

Ajout dun reverse-proxy

Un reverse-proxy est placé en frontal devant les webservices, ajoutant la couche HTTPS et/ou une authentification (par HTTP Basic ou X509). Cest généralement la solution la plus efficace, simple à mettre en place et ne nécessitant quune maintenance classique, qui peut être intégrée à la maintenance générale du SI. Cest donc la solution conseillée.

Logo Publik

Le reverse-proxy est une solution de type Apache ou Nginx. Il est connecté dune part au webservice à diffuser, et dautre part à un réseau accessible par Publik. Il ajoute :

  • le chiffrage du flux (HTTPS) ;
  • une authentification : soit basique, soit basée sur un certificat X509 client ;
  • un filtrage des URLs accessibles ou non depuis telle ou telle IP (typiquement pour lIP de la passerelle Publik).

Un filtrage IP général peut également être ajouté au niveau dun firewall placé en amont du reverse-proxy, par exemple le firewall darrivée générale du site client. Ce filtrage nautorisera que lIP de Passerelle à accéder aux webservices.

Ajout dune instance Passerelle « locale »

Dans cette configuration, une instance de Passerelle est ajoutée, au même niveau quun reverse-proxy (cf supra). Les connecteurs de Passerelle assurent alors localement la traduction des webservices tiers en webservices Publik, ces derniers ajoutant la sécurisation de laccès entre le SI et Publik.

Cette solution présente lavantage dassurer un contrôle de sécurité fort des webservices diffusés à destination de Publik, contrôle assuré par Publik. Cependant, la maintenance est plus complexe que linstallation dun reverse-proxy. Aussi ne doit-elle être mise en place que si les webservices de lapplication sont très difficiles à sécuriser.

Logo Publik

MCO par Entr'ouvert

Pour qu'ils puissent assurer le maintien en conditions opérationnelles (MCO) de la partie logicielle Publik, les travailleurs d'Entr'ouvert doivent :

  • avoir un accès SSH aux machines le plus direct possible (sans nécessité de passer par un VPN, qui plus est s'il est propriétaire ou exotique). Entrouvert peut indiquer une liste dadresses IPv4 source ;
  • disposer d'un accès administrateur (root) sur les machines, via su ou sudo.

Cet accès nest pas demandé sur les machines dinfrastructure « non logicielle » telle que le serveur de base de données PostgreSQL, le serveur de log, les backups, etc. La maintenance de ces systèmes est laissée aux opérateurs habituels du site ; sauf contrat spécifique avec Entrouvert.

Si l'accès web à la solution est fermé, par exemple dans le cas d'un PoC ou d'une utilisation interne, alors cet accès doit être possible pour Entr'ouvert (là encore, accès direct sans VPN si possible).

Si les permissions root sont impossibles, il est au moins nécessaire, pour des raisons de support, qu'Entr'ouvert accéde facilement aux logs des machines voire à son système de supervision, et ce en temps réel. Il doit par ailleurs exister une procédure de passage root en cas d'urgence. Enfin, si Entr'ouvert n'a pas d'accès root à la machine, cela signifie que la supervision et les mises à jour régulières (au moins quotidiennes) sont opérées par l'hébergeur ; condition sans laquelle Entr'ouvert ne peut pas garantir une sécurité maximale du système.

Enfin, Entrouvert ne peut assurer un MCO efficace que sur des machines Debian GNU/Linux maintenues à jour cette maintenance peut même être assurée par Entrouvert. Pour tout autre système dexploitation, un contrat spécifique doit être prévu.