From 5ec726349d94fdc5727bce06de26b6796aa894db Mon Sep 17 00:00:00 2001 From: TTalex Date: Mon, 7 Nov 2022 15:34:06 +0100 Subject: [PATCH] MCM v1.10.0 - Evolutions/correctifs --- CHANGELOG.md | 32 +++ CONTRIBUTING.md | 7 + Gouvernance.md | 37 +++ LICENSE.txt | 519 ++++++++++++++++++++++++++++++++++++++ README.md | 50 ++++ bus/README.md | 76 ++++++ commons/README.md | 165 ++++++++++++ helm-chart/README.md | 9 + idp/README.md | 134 ++++++++++ mailhog/README.md | 54 ++++ s3/README.md | 83 ++++++ simulation-maas/README.md | 54 ++++ test/README.md | 33 +++ vault/README.md | 90 +++++++ 14 files changed, 1343 insertions(+) create mode 100644 CHANGELOG.md create mode 100644 CONTRIBUTING.md create mode 100644 Gouvernance.md create mode 100644 LICENSE.txt create mode 100644 README.md create mode 100644 bus/README.md create mode 100644 commons/README.md create mode 100644 helm-chart/README.md create mode 100644 idp/README.md create mode 100644 mailhog/README.md create mode 100644 s3/README.md create mode 100644 simulation-maas/README.md create mode 100644 test/README.md create mode 100644 vault/README.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..49fdee2 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,32 @@ +# Changelog + +Ce fichier liste tous les changements notables sur le projet [moB | Mon Compte Mobilité](https://moncomptemobilite.fr/). +Le versionning des releases suit le [semantic versioning](http://semver.org). + +### 1.10.0 + +- [X] Version production octobre 2022 + #### Identification / Authentification +- [X] Création de compte Citoyen +- [X] Authentification sur le site +- [X] Gestion du consentement (partage des données, demande de portabilité) +- [X] Affiliations salariés / employeurs financeurs +- [X] Gestion des communautés financeur +- [X] Création de compte Financeur (gestionnaire / superviseur) +- [X] ... + #### Dispositifs d'incitation (i.e. Aides) +- [X] Creation / Edition des aides +- [X] Visualiser les aides disponibles (nationales / territoriales / employeur) +- [X] ... + #### Souscriptions +- [X] Réceptionner les données de souscription à une aide du citoyen +- [X] Traitement de pièces justificatives attachés à une souscription +- [X] Reconstitution de justificatifs à partir de données de facture de fournisseur de service de mobilités +- [X] ... + #### Reportings +- [X] Tableau de bord financeur sur le nombre de souscriptions +- [X] Tableau de bord citoyen + #### Autres fonctionnalités +- [X] Publication Opensource +- [X] Audit du code et de l'infrastructure +- [X] Environnements techniques diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..f5ea2f1 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,7 @@ +# Introduction +Ce projet permet de rendre public le processus de développement de l’application moB du programme Mon Compte Mobilité (MCM). Il est par ailleurs ouvert à toute contribution pertinente visant à l’améliorer (débug, ajout de fonctionnalités, …). Dans ce contexte une partie du code est mise à disposition sous licence open source et le dépôt de code est rendu public et ouvert à contribution. + +Des audits de code pour les différentes contributions, notamment pour les aspects sécurité, sont prévus de façon itérative de manière à fluidifier au maximum l’intégration de ces contributions. + +# Documentation +La documentation publique se trouve dans le répertoire docs/. diff --git a/Gouvernance.md b/Gouvernance.md new file mode 100644 index 0000000..736ab79 --- /dev/null +++ b/Gouvernance.md @@ -0,0 +1,37 @@ +# Préambule +Le dispositif des CEE (Certificats d’Economies d’Energies), créé en 2006 repose sur une obligation de réalisation d’économies d’énergie imposée par les pouvoirs publics aux vendeurs d’énergie. + +Ceux-ci doivent ainsi promouvoir activement l’efficacité énergétique auprès des consommateurs d’énergie : ménages, collectivités territoriales ou professionnels. + +Le 1er janvier 2018, le dispositif est entré dans sa 4ème période d’obligation pour une durée de 3 ans et impose aux obligés d’acquérir pour 11,3 Milliards d’euros de CEE sur la 4ème période soit du 1er janvier 2018 au 31 décembre 2021. + +# Mon Compte Mobilité, un passeport numérique dans l’univers des mobilités douces +Mon Compte Mobilité est un compte unique pour chaque utilisateur qui permet : +- A chaque citoyen de visualiser les dispositifs d’incitation nationaux, de sa collectivité ou son employeur pour en bénéficier comme il le souhaite auprès des différentes offres de mobilité et de gérer son consentement à la portabilité de ses données personnelles +- A chaque entreprise de paramétrer et mettre en œuvre la politique de mobilité qu’elle souhaite pour ses collaborateurs +- A chaque Autorité Organisatrice de la Mobilité de créer et piloter ses politiques d’incitation pour encourager l’utilisation de modes de mobilité plus durables sur son territoire +- A chaque opérateur de mobilité de mettre en visibilité ses offres et de faciliter l’utilisation des incitatifs sur celles-ci, et de contribuer à la politique incitative de mobilité durable des territoires +A noter que Mon Compte Mobilité n’est pas un Maas au sens où il ne permet pas d’opérer le paiement d’un service et n’a pas de vocation commerciale, mais il s’interface avec ceux-ci ou avec les opérateurs de mobilité des territoires. + +# Un projet lauréat de l’appel à programme CEE, co-porté par Capgemini Invent et la Fabrique des Mobilités +Dans le cadre de l’Appel à Programme de 2019, Capgemini Invent, en partenariat avec la Fabrique des Mobilités, a présenté à l’Etat et l’ADEME, le programme « Mon Compte Mobilité ». + +TOTAL MARKETING France et CARFUEL, en tant qu’obligés de l’Etat dans le cadre du dispositif des CEE, se sont déclarés intéressés pour financer le Programme. + +Par un arrêté du 27 février 2020 publié le 8 mars 2020, l’Etat a confirmé la sélection du Programme au dispositif des CEE et a déclaré Capgemini Invent porteur du Programme. + +Une convention de mise en œuvre du Programme (disponible sur le site France mobilités) signée par l’ADEME et l’Etat d’une part, par Capgemini, porteur pilote et la Fabrique des Mobilités, porteur associé, ainsi que par les Obligés financeurs, d’autre part a été signée le 01 juillet 2020. + +Par cette convention, les parties préalablement citées se sont engagées à fournir sur près de 3 ans (jusqu’au 31/03/2023) des livrables fonctionnels et techniques afin de réaliser et déployer, sur trois territoires, une plateforme de service dédiée à la mobilité et ce, sous le pilotage de Capgemini, porteur pilote du Programme échelonné en 6 tranches : + +- Tranche 1 : Phase de cadrage technico-fonctionnel de la future plateforme +- Tranche 2 : Construction et développement d’un produit minimum viable de la plateforme MCM +- Tranches 3 et 4 : Développement produit et déploiement expérimental de la plateforme MCM sur les territoires +- Tranche 5 : Suivi de l’expérimentation de la plateforme MCM sur les territoires pilotes +- Tranche 6 : Poursuite et bilan de l’expérimentation de la plateforme MCM sur les territoires pilotes +Par décision du COPIL du Programme Mon Compte Mobilité du 20/06/2022, il a été décidé d’étendre la durée du programme de 3 mois supplémentaires, jusqu’au 31/03/2023 (vs 31/12/2022 prévu initialement dans la convention de Programme). + +# Mon Compte Mobilité, un projet au fonctionnement agile +Sur la durée d’expérimentation du programme précitée, le développement du service sera incrémental, et expérimenté sur 3 territoires pilotes en 2022 et jusqu’à fin mars 2023, en partenariat avec plusieurs Autorités Organisatrices de la Mobilité, employeurs et acteurs de la mobilité. + +Au terme de la période d’expérimentation, le programme sera repris par un opérateur neutre de l’état qui définira alors ses propres principes de gouvernance et de gestion de projet. diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..594abea --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,519 @@ + +CONTRAT DE LICENCE DE LOGICIEL LIBRE CeCILL-B + + + Avertissement + +Ce contrat est une licence de logiciel libre issue d'une concertation +entre ses auteurs afin que le respect de deux grands principes préside à +sa rédaction: + + * d'une part, le respect des principes de diffusion des logiciels + libres: accès au code source, droits étendus conférés aux + utilisateurs, + * d'autre part, la désignation d'un droit applicable, le droit + français, auquel elle est conforme, tant au regard du droit de la + responsabilité civile que du droit de la propriété intellectuelle + et de la protection qu'il offre aux auteurs et titulaires des + droits patrimoniaux sur un logiciel. + +Les auteurs de la licence CeCILL-B (pour Ce[a] C[nrs] I[nria] L[ogiciel] +L[ibre]) sont: + +Commissariat à l'Energie Atomique - CEA, établissement public de +recherche à caractère scientifique, technique et industriel, dont le +siège est situé 25 rue Leblanc, immeuble Le Ponant D, 75015 Paris. + +Centre National de la Recherche Scientifique - CNRS, établissement +public à caractère scientifique et technologique, dont le siège est +situé 3 rue Michel-Ange, 75794 Paris cedex 16. + +Institut National de Recherche en Informatique et en Automatique - +INRIA, établissement public à caractère scientifique et technologique, +dont le siège est situé Domaine de Voluceau, Rocquencourt, BP 105, 78153 +Le Chesnay cedex. + + + Préambule + +Ce contrat est une licence de logiciel libre dont l'objectif est de +conférer aux utilisateurs une très large liberté de modification et de +redistribution du logiciel régi par cette licence. + +L'exercice de cette liberté est assorti d'une obligation forte de +citation à la charge de ceux qui distribueraient un logiciel incorporant +un logiciel régi par la présente licence afin d'assurer que les +contributions de tous soient correctement identifiées et reconnues. + +L'accessibilité au code source et les droits de copie, de modification +et de redistribution qui découlent de ce contrat ont pour contrepartie +de n'offrir aux utilisateurs qu'une garantie limitée et de ne faire +peser sur l'auteur du logiciel, le titulaire des droits patrimoniaux et +les concédants successifs qu'une responsabilité restreinte. + +A cet égard l'attention de l'utilisateur est attirée sur les risques +associés au chargement, à l'utilisation, à la modification et/ou au +développement et à la reproduction du logiciel par l'utilisateur étant +donné sa spécificité de logiciel libre, qui peut le rendre complexe à +manipuler et qui le réserve donc à des développeurs ou des +professionnels avertis possédant des connaissances informatiques +approfondies. Les utilisateurs sont donc invités à charger et tester +l'adéquation du logiciel à leurs besoins dans des conditions permettant +d'assurer la sécurité de leurs systèmes et/ou de leurs données et, plus +généralement, à l'utiliser et l'exploiter dans les mêmes conditions de +sécurité. Ce contrat peut être reproduit et diffusé librement, sous +réserve de le conserver en l'état, sans ajout ni suppression de clauses. + +Ce contrat est susceptible de s'appliquer à tout logiciel dont le +titulaire des droits patrimoniaux décide de soumettre l'exploitation aux +dispositions qu'il contient. + + + Article 1 - DEFINITIONS + +Dans ce contrat, les termes suivants, lorsqu'ils seront écrits avec une +lettre capitale, auront la signification suivante: + +Contrat: désigne le présent contrat de licence, ses éventuelles versions +postérieures et annexes. + +Logiciel: désigne le logiciel sous sa forme de Code Objet et/ou de Code +Source et le cas échéant sa documentation, dans leur état au moment de +l'acceptation du Contrat par le Licencié. + +Logiciel Initial: désigne le Logiciel sous sa forme de Code Source et +éventuellement de Code Objet et le cas échéant sa documentation, dans +leur état au moment de leur première diffusion sous les termes du Contrat. + +Logiciel Modifié: désigne le Logiciel modifié par au moins une +Contribution. + +Code Source: désigne l'ensemble des instructions et des lignes de +programme du Logiciel et auquel l'accès est nécessaire en vue de +modifier le Logiciel. + +Code Objet: désigne les fichiers binaires issus de la compilation du +Code Source. + +Titulaire: désigne le ou les détenteurs des droits patrimoniaux d'auteur +sur le Logiciel Initial. + +Licencié: désigne le ou les utilisateurs du Logiciel ayant accepté le +Contrat. + +Contributeur: désigne le Licencié auteur d'au moins une Contribution. + +Concédant: désigne le Titulaire ou toute personne physique ou morale +distribuant le Logiciel sous le Contrat. + +Contribution: désigne l'ensemble des modifications, corrections, +traductions, adaptations et/ou nouvelles fonctionnalités intégrées dans +le Logiciel par tout Contributeur, ainsi que tout Module Interne. + +Module: désigne un ensemble de fichiers sources y compris leur +documentation qui permet de réaliser des fonctionnalités ou services +supplémentaires à ceux fournis par le Logiciel. + +Module Externe: désigne tout Module, non dérivé du Logiciel, tel que ce +Module et le Logiciel s'exécutent dans des espaces d'adressage +différents, l'un appelant l'autre au moment de leur exécution. + +Module Interne: désigne tout Module lié au Logiciel de telle sorte +qu'ils s'exécutent dans le même espace d'adressage. + +Parties: désigne collectivement le Licencié et le Concédant. + +Ces termes s'entendent au singulier comme au pluriel. + + + Article 2 - OBJET + +Le Contrat a pour objet la concession par le Concédant au Licencié d'une +licence non exclusive, cessible et mondiale du Logiciel telle que +définie ci-après à l'article 5 pour toute la durée de protection des droits +portant sur ce Logiciel. + + + Article 3 - ACCEPTATION + +3.1 L'acceptation par le Licencié des termes du Contrat est réputée +acquise du fait du premier des faits suivants: + + * (i) le chargement du Logiciel par tout moyen notamment par + téléchargement à partir d'un serveur distant ou par chargement à + partir d'un support physique; + * (ii) le premier exercice par le Licencié de l'un quelconque des + droits concédés par le Contrat. + +3.2 Un exemplaire du Contrat, contenant notamment un avertissement +relatif aux spécificités du Logiciel, à la restriction de garantie et à +la limitation à un usage par des utilisateurs expérimentés a été mis à +disposition du Licencié préalablement à son acceptation telle que +définie à l'article 3.1 ci dessus et le Licencié reconnaît en avoir pris +connaissance. + + + Article 4 - ENTREE EN VIGUEUR ET DUREE + + + 4.1 ENTREE EN VIGUEUR + +Le Contrat entre en vigueur à la date de son acceptation par le Licencié +telle que définie en 3.1. + + + 4.2 DUREE + +Le Contrat produira ses effets pendant toute la durée légale de +protection des droits patrimoniaux portant sur le Logiciel. + + + Article 5 - ETENDUE DES DROITS CONCEDES + +Le Concédant concède au Licencié, qui accepte, les droits suivants sur +le Logiciel pour toutes destinations et pour la durée du Contrat dans +les conditions ci-après détaillées. + +Par ailleurs, si le Concédant détient ou venait à détenir un ou +plusieurs brevets d'invention protégeant tout ou partie des +fonctionnalités du Logiciel ou de ses composants, il s'engage à ne pas +opposer les éventuels droits conférés par ces brevets aux Licenciés +successifs qui utiliseraient, exploiteraient ou modifieraient le +Logiciel. En cas de cession de ces brevets, le Concédant s'engage à +faire reprendre les obligations du présent alinéa aux cessionnaires. + + + 5.1 DROIT D'UTILISATION + +Le Licencié est autorisé à utiliser le Logiciel, sans restriction quant +aux domaines d'application, étant ci-après précisé que cela comporte: + + 1. la reproduction permanente ou provisoire du Logiciel en tout ou + partie par tout moyen et sous toute forme. + + 2. le chargement, l'affichage, l'exécution, ou le stockage du + Logiciel sur tout support. + + 3. la possibilité d'en observer, d'en étudier, ou d'en tester le + fonctionnement afin de déterminer les idées et principes qui sont + à la base de n'importe quel élément de ce Logiciel; et ceci, + lorsque le Licencié effectue toute opération de chargement, + d'affichage, d'exécution, de transmission ou de stockage du + Logiciel qu'il est en droit d'effectuer en vertu du Contrat. + + + 5.2 DROIT D'APPORTER DES CONTRIBUTIONS + +Le droit d'apporter des Contributions comporte le droit de traduire, +d'adapter, d'arranger ou d'apporter toute autre modification au Logiciel +et le droit de reproduire le logiciel en résultant. + +Le Licencié est autorisé à apporter toute Contribution au Logiciel sous +réserve de mentionner, de façon explicite, son nom en tant qu'auteur de +cette Contribution et la date de création de celle-ci. + + + 5.3 DROIT DE DISTRIBUTION + +Le droit de distribution comporte notamment le droit de diffuser, de +transmettre et de communiquer le Logiciel au public sur tout support et +par tout moyen ainsi que le droit de mettre sur le marché à titre +onéreux ou gratuit, un ou des exemplaires du Logiciel par tout procédé. + +Le Licencié est autorisé à distribuer des copies du Logiciel, modifié ou +non, à des tiers dans les conditions ci-après détaillées. + + + 5.3.1 DISTRIBUTION DU LOGICIEL SANS MODIFICATION + +Le Licencié est autorisé à distribuer des copies conformes du Logiciel, +sous forme de Code Source ou de Code Objet, à condition que cette +distribution respecte les dispositions du Contrat dans leur totalité et +soit accompagnée: + + 1. d'un exemplaire du Contrat, + + 2. d'un avertissement relatif à la restriction de garantie et de + responsabilité du Concédant telle que prévue aux articles 8 + et 9, + +et que, dans le cas où seul le Code Objet du Logiciel est redistribué, +le Licencié permette un accès effectif au Code Source complet du +Logiciel pendant au moins toute la durée de sa distribution du Logiciel, +étant entendu que le coût additionnel d'acquisition du Code Source ne +devra pas excéder le simple coût de transfert des données. + + + 5.3.2 DISTRIBUTION DU LOGICIEL MODIFIE + +Lorsque le Licencié apporte une Contribution au Logiciel, le Logiciel +Modifié peut être distribué sous un contrat de licence autre que le +présent Contrat sous réserve du respect des dispositions de l'article +5.3.4. + + + 5.3.3 DISTRIBUTION DES MODULES EXTERNES + +Lorsque le Licencié a développé un Module Externe les conditions du +Contrat ne s'appliquent pas à ce Module Externe, qui peut être distribué +sous un contrat de licence différent. + + + 5.3.4 CITATIONS + +Le Licencié qui distribue un Logiciel Modifié s'engage expressément: + + 1. à indiquer dans sa documentation qu'il a été réalisé à partir du + Logiciel régi par le Contrat, en reproduisant les mentions de + propriété intellectuelle du Logiciel, + + 2. à faire en sorte que l'utilisation du Logiciel, ses mentions de + propriété intellectuelle et le fait qu'il est régi par le Contrat + soient indiqués dans un texte facilement accessible depuis + l'interface du Logiciel Modifié, + + 3. à mentionner, sur un site Web librement accessible décrivant le + Logiciel Modifié, et pendant au moins toute la durée de sa + distribution, qu'il a été réalisé à partir du Logiciel régi par le + Contrat, en reproduisant les mentions de propriété intellectuelle + du Logiciel, + + 4. lorsqu'il le distribue à un tiers susceptible de distribuer + lui-même un Logiciel Modifié, sans avoir à en distribuer le code + source, à faire ses meilleurs efforts pour que les obligations du + présent article 5.3.4 soient reprises par le dit tiers. + +Lorsque le Logiciel modifié ou non est distribué avec un Module Externe +qui a été conçu pour l'utiliser, le Licencié doit soumettre le dit +Module Externe aux obligations précédentes. + + + 5.3.5 COMPATIBILITE AVEC LES LICENCES CeCILL et CeCILL-C + +Lorsqu'un Logiciel Modifié contient une Contribution soumise au contrat +de licence CeCILL, les stipulations prévues à l'article 5.3.4 sont +facultatives. + +Un Logiciel Modifié peut être distribué sous le contrat de licence +CeCILL-C. Les stipulations prévues à l'article 5.3.4 sont alors +facultatives. + + + Article 6 - PROPRIETE INTELLECTUELLE + + + 6.1 SUR LE LOGICIEL INITIAL + +Le Titulaire est détenteur des droits patrimoniaux sur le Logiciel +Initial. Toute utilisation du Logiciel Initial est soumise au respect +des conditions dans lesquelles le Titulaire a choisi de diffuser son +oeuvre et nul autre n'a la faculté de modifier les conditions de +diffusion de ce Logiciel Initial. + +Le Titulaire s'engage à ce que le Logiciel Initial reste au moins régi +par le Contrat et ce, pour la durée visée à l'article 4.2. + + + 6.2 SUR LES CONTRIBUTIONS + +Le Licencié qui a développé une Contribution est titulaire sur celle-ci +des droits de propriété intellectuelle dans les conditions définies par +la législation applicable. + + + 6.3 SUR LES MODULES EXTERNES + +Le Licencié qui a développé un Module Externe est titulaire sur celui-ci +des droits de propriété intellectuelle dans les conditions définies par +la législation applicable et reste libre du choix du contrat régissant +sa diffusion. + + + 6.4 DISPOSITIONS COMMUNES + +Le Licencié s'engage expressément: + + 1. à ne pas supprimer ou modifier de quelque manière que ce soit les + mentions de propriété intellectuelle apposées sur le Logiciel; + + 2. à reproduire à l'identique lesdites mentions de propriété + intellectuelle sur les copies du Logiciel modifié ou non. + +Le Licencié s'engage à ne pas porter atteinte, directement ou +indirectement, aux droits de propriété intellectuelle du Titulaire et/ou +des Contributeurs sur le Logiciel et à prendre, le cas échéant, à +l'égard de son personnel toutes les mesures nécessaires pour assurer le +respect des dits droits de propriété intellectuelle du Titulaire et/ou +des Contributeurs. + + + Article 7 - SERVICES ASSOCIES + +7.1 Le Contrat n'oblige en aucun cas le Concédant à la réalisation de +prestations d'assistance technique ou de maintenance du Logiciel. + +Cependant le Concédant reste libre de proposer ce type de services. Les +termes et conditions d'une telle assistance technique et/ou d'une telle +maintenance seront alors déterminés dans un acte séparé. Ces actes de +maintenance et/ou assistance technique n'engageront que la seule +responsabilité du Concédant qui les propose. + +7.2 De même, tout Concédant est libre de proposer, sous sa seule +responsabilité, à ses licenciés une garantie, qui n'engagera que lui, +lors de la redistribution du Logiciel et/ou du Logiciel Modifié et ce, +dans les conditions qu'il souhaite. Cette garantie et les modalités +financières de son application feront l'objet d'un acte séparé entre le +Concédant et le Licencié. + + + Article 8 - RESPONSABILITE + +8.1 Sous réserve des dispositions de l'article 8.2, le Licencié a la +faculté, sous réserve de prouver la faute du Concédant concerné, de +solliciter la réparation du préjudice direct qu'il subirait du fait du +Logiciel et dont il apportera la preuve. + +8.2 La responsabilité du Concédant est limitée aux engagements pris en +application du Contrat et ne saurait être engagée en raison notamment: +(i) des dommages dus à l'inexécution, totale ou partielle, de ses +obligations par le Licencié, (ii) des dommages directs ou indirects +découlant de l'utilisation ou des performances du Logiciel subis par le +Licencié et (iii) plus généralement d'un quelconque dommage indirect. En +particulier, les Parties conviennent expressément que tout préjudice +financier ou commercial (par exemple perte de données, perte de +bénéfices, perte d'exploitation, perte de clientèle ou de commandes, +manque à gagner, trouble commercial quelconque) ou toute action dirigée +contre le Licencié par un tiers, constitue un dommage indirect et +n'ouvre pas droit à réparation par le Concédant. + + + Article 9 - GARANTIE + +9.1 Le Licencié reconnaît que l'état actuel des connaissances +scientifiques et techniques au moment de la mise en circulation du +Logiciel ne permet pas d'en tester et d'en vérifier toutes les +utilisations ni de détecter l'existence d'éventuels défauts. L'attention +du Licencié a été attirée sur ce point sur les risques associés au +chargement, à l'utilisation, la modification et/ou au développement et à +la reproduction du Logiciel qui sont réservés à des utilisateurs avertis. + +Il relève de la responsabilité du Licencié de contrôler, par tous +moyens, l'adéquation du produit à ses besoins, son bon fonctionnement et +de s'assurer qu'il ne causera pas de dommages aux personnes et aux biens. + +9.2 Le Concédant déclare de bonne foi être en droit de concéder +l'ensemble des droits attachés au Logiciel (comprenant notamment les +droits visés à l'article 5). + +9.3 Le Licencié reconnaît que le Logiciel est fourni "en l'état" par le +Concédant sans autre garantie, expresse ou tacite, que celle prévue à +l'article 9.2 et notamment sans aucune garantie sur sa valeur commerciale, +son caractère sécurisé, innovant ou pertinent. + +En particulier, le Concédant ne garantit pas que le Logiciel est exempt +d'erreur, qu'il fonctionnera sans interruption, qu'il sera compatible +avec l'équipement du Licencié et sa configuration logicielle ni qu'il +remplira les besoins du Licencié. + +9.4 Le Concédant ne garantit pas, de manière expresse ou tacite, que le +Logiciel ne porte pas atteinte à un quelconque droit de propriété +intellectuelle d'un tiers portant sur un brevet, un logiciel ou sur tout +autre droit de propriété. Ainsi, le Concédant exclut toute garantie au +profit du Licencié contre les actions en contrefaçon qui pourraient être +diligentées au titre de l'utilisation, de la modification, et de la +redistribution du Logiciel. Néanmoins, si de telles actions sont +exercées contre le Licencié, le Concédant lui apportera son aide +technique et juridique pour sa défense. Cette aide technique et +juridique est déterminée au cas par cas entre le Concédant concerné et +le Licencié dans le cadre d'un protocole d'accord. Le Concédant dégage +toute responsabilité quant à l'utilisation de la dénomination du +Logiciel par le Licencié. Aucune garantie n'est apportée quant à +l'existence de droits antérieurs sur le nom du Logiciel et sur +l'existence d'une marque. + + + Article 10 - RESILIATION + +10.1 En cas de manquement par le Licencié aux obligations mises à sa +charge par le Contrat, le Concédant pourra résilier de plein droit le +Contrat trente (30) jours après notification adressée au Licencié et +restée sans effet. + +10.2 Le Licencié dont le Contrat est résilié n'est plus autorisé à +utiliser, modifier ou distribuer le Logiciel. Cependant, toutes les +licences qu'il aura concédées antérieurement à la résiliation du Contrat +resteront valides sous réserve qu'elles aient été effectuées en +conformité avec le Contrat. + + + Article 11 - DISPOSITIONS DIVERSES + + + 11.1 CAUSE EXTERIEURE + +Aucune des Parties ne sera responsable d'un retard ou d'une défaillance +d'exécution du Contrat qui serait dû à un cas de force majeure, un cas +fortuit ou une cause extérieure, telle que, notamment, le mauvais +fonctionnement ou les interruptions du réseau électrique ou de +télécommunication, la paralysie du réseau liée à une attaque +informatique, l'intervention des autorités gouvernementales, les +catastrophes naturelles, les dégâts des eaux, les tremblements de terre, +le feu, les explosions, les grèves et les conflits sociaux, l'état de +guerre... + +11.2 Le fait, par l'une ou l'autre des Parties, d'omettre en une ou +plusieurs occasions de se prévaloir d'une ou plusieurs dispositions du +Contrat, ne pourra en aucun cas impliquer renonciation par la Partie +intéressée à s'en prévaloir ultérieurement. + +11.3 Le Contrat annule et remplace toute convention antérieure, écrite +ou orale, entre les Parties sur le même objet et constitue l'accord +entier entre les Parties sur cet objet. Aucune addition ou modification +aux termes du Contrat n'aura d'effet à l'égard des Parties à moins +d'être faite par écrit et signée par leurs représentants dûment habilités. + +11.4 Dans l'hypothèse où une ou plusieurs des dispositions du Contrat +s'avèrerait contraire à une loi ou à un texte applicable, existants ou +futurs, cette loi ou ce texte prévaudrait, et les Parties feraient les +amendements nécessaires pour se conformer à cette loi ou à ce texte. +Toutes les autres dispositions resteront en vigueur. De même, la +nullité, pour quelque raison que ce soit, d'une des dispositions du +Contrat ne saurait entraîner la nullité de l'ensemble du Contrat. + + + 11.5 LANGUE + +Le Contrat est rédigé en langue française et en langue anglaise, ces +deux versions faisant également foi. + + + Article 12 - NOUVELLES VERSIONS DU CONTRAT + +12.1 Toute personne est autorisée à copier et distribuer des copies de +ce Contrat. + +12.2 Afin d'en préserver la cohérence, le texte du Contrat est protégé +et ne peut être modifié que par les auteurs de la licence, lesquels se +réservent le droit de publier périodiquement des mises à jour ou de +nouvelles versions du Contrat, qui posséderont chacune un numéro +distinct. Ces versions ultérieures seront susceptibles de prendre en +compte de nouvelles problématiques rencontrées par les logiciels libres. + +12.3 Tout Logiciel diffusé sous une version donnée du Contrat ne pourra +faire l'objet d'une diffusion ultérieure que sous la même version du +Contrat ou une version postérieure. + + + Article 13 - LOI APPLICABLE ET COMPETENCE TERRITORIALE + +13.1 Le Contrat est régi par la loi française. Les Parties conviennent +de tenter de régler à l'amiable les différends ou litiges qui +viendraient à se produire par suite ou à l'occasion du Contrat. + +13.2 A défaut d'accord amiable dans un délai de deux (2) mois à compter +de leur survenance et sauf situation relevant d'une procédure d'urgence, +les différends ou litiges seront portés par la Partie la plus diligente +devant les Tribunaux compétents de Paris. + + +Version 1.0 du 2006-09-05. diff --git a/README.md b/README.md new file mode 100644 index 0000000..93d835c --- /dev/null +++ b/README.md @@ -0,0 +1,50 @@ +# Description + +Le service antivirus se base sur la brique logicielle **[Clamav](https://www.clamav.net/)** + +Elle nous permet de scanner les fichiers que nous pouvons recevoir et ainsi de ne pas autoriser l'upload de fichiers vérolés dans notre service de stockage. + +Nous utilisons la fonctionnalité INSTREAM de Clamav pour scanner les fichiers. + +(Voir relation avec les autres services) + +# Installation en local + +`docker run -d --name clamav -p 3310:3310 clamav/clamav:stable` + +## URL / Port +- URL : localhost +- Port : 3310 + + +# Précisions pipelines + +## Preview + +Pas de précisions nécéssaires pour ce service + + +## Testing + +Pas de précisions nécéssaires pour ce service + + +# Relation avec les autres services + +Comme présenté dans le schéma global de l'architecture ci-dessus (# TODO) + +L'api effectue une requête TCP vers l'antivirus pour chaque fichier uploadé pour les souscriptions. + +L'api effectue une requête TCP via une fonction de scanStream permettant d'analyser le stream binaire des fichiers envoyés. Ainsi, ils ne sont pas stockés (vérolé ou non) dans l'antivirus. + +L'antivirus renvoie alors une réponse à l'api en précisant si le fichier est vérolé ou non. + +**Bilan des relations:** + +- Requête TCP de l'api vers l'antivirus + + +# Tests Unitaires + +Pas de tests unitaires nécéssaires pour ce service + diff --git a/bus/README.md b/bus/README.md new file mode 100644 index 0000000..4482c05 --- /dev/null +++ b/bus/README.md @@ -0,0 +1,76 @@ +# Description + +Le service bus se base sur la brique logicielle **[RabbitMQ](https://www.rabbitmq.com/)** + +Cette brique de message broker nous permet de communiquer avec les SIRH sur le sujet des demandes d'aides effectuées par un citoyen. + +Nous utilisons le protocol amqp pour échanger des messages. + +L'authentification via oAuth2 a été activée pour les environnements distants permettant ainsi d'utiliser un jeton d'authentification émis par notre IDP pour pouvoir publier ou consommer des messages. + +L'utilisation du fichier 'definition.json' présent dans le dossier overlays permet de définir les configurations nécessaires au bon fonctionnement de l'échange des messages. + +(Voir relation avec les autres services) + +# Installation en local + +`docker run -d --name rabbitmq -p 15672:15672 -p 5672:5672 -e RABBITMQ_USERNAME=${BUS_ADMIN_USER} -e RABBITMQ_PASSWORD=${BUS_ADMIN_PASSWORD} bitnami/rabbitmq:latest` + +Récupérer le fichier overlays/definition.json + +## Variables + +| Variables | Description | Obligatoire | +| ----------- | ----------- | ----------- | +| BUS_ADMIN_USER | Username pour la connexion au portail | Oui | +| BUS_ADMIN_PASSWORD | Password pour la connexion au portail | Oui | +| BUS_MCM_CONSUME_USER | Username pour la réception des messages | Oui | +| BUS_MCM_CONSUME_PASSWORD | Password pour la réception des messages | Oui | +| IDP_API_CLIENT_SECRET | Client secret du client confidentiel IDP pour l'API | Oui | +| CAPGEMINI_SECRET_KEY | Client secret du client confidentiel CAPGEMINI pour l'API | Non | + +Importer, via l'interface RabbitMQ, le fichier definition.json modifié avec les valeurs de variables mentionnées ci-dessus. + +![interfaceAdmin](docs/assets/interfaceRabbitMQ.png) + +## URL / Port + +Portail d'admin : +- URL : localhost +- Port : 15672 + +Node port : +- URL : localhost +- Port : 5672 + +# Précisions pipelines + +## Preview + +Pas de précisions nécéssaires pour ce service + +## Testing + +Le fichier definition.json n'est pas importé au déploiement. Il faudra l'importer manuellement comme précisé pour l'installation locale. + +Le deploiement du bus est de type statefulSet. + + +# Relation avec les autres services + +Comme présenté dans le schéma global de l'architecture ci-dessus (# TODO) + +L'api possède un child process qui au démarrage de l'application permet d'écouter les messages provenant de rabbitmq sur la queue de consommation. + +L'api effectue une requête amqp pour envoyer les données de souscriptions sur la queue de publication. + +**Bilan des relations:** + +- Consommation des messages +- Publication de messages + + +# Tests Unitaires + +Pas de tests unitaires nécéssaires pour ce service + diff --git a/commons/README.md b/commons/README.md new file mode 100644 index 0000000..1057c7d --- /dev/null +++ b/commons/README.md @@ -0,0 +1,165 @@ +# Description + +Dans ce dossier, plusieurs fichiers CI sont présents. Il regroupe les parties communes à tous les déploiements. + +Le .gitlab-ci.yml à la racine décrit les étapes communes à la pipeline des environnements ainsi que les rules pour les déclencher. + +Chaque service contient un fichier .gitlab-ci.yml à leur racine ainsi qu'un dossier .gitlab-ci pour décrire les jobs spécifiques associés aux environnements. + +Les configurations des services selon les environnements peuvent différer. + +Dans le dossier overlays/config se trouvent des fichiers de configuration nécessaires au deploiement du service pour les environnements distants. + +## Preview + +La pipeline de preview est déclenchée pour chaque branche de notre projet. + +Les déploiements de la pipeline de preview sont fait grâce à kubectl via le fichier kompose.yml et des overlays qui accompagnent chaque service. + +Dans le dossier overlays se trouvent des configurations d'objets kubernetes à appliquer dans le déploiement et non descriptibles dans le kompose.yml. + +Certains services ne sont configurés que sur la branche master et les autres branches de déploiement s'appuient dessus (s3/antivirus/vault/analytics) + +## Testing + +La pipeline de testing est déclenchée à la création d'un branche de Release Candidate (rc-vX-X-X). + +Elle se rapproche au maximum du déploiement fait pour les environnements de PPRD et PROD. + +Les déploiements de la pipeline de testing sont fait grâce à helm via des fichiers Chart.yaml & ${MODULE_NAME}-testing-values.yaml qui accompagnent chaque service. + +# Helm + +La pipeline "helm" est déclenchée à la création d'une Release sur le tag assiocié à la release candidate. + +Celle-ci permet de livrer le code à l'équipe Cloud en charge des déploiements PPRD et PROD. + +Ainsi, nous leur fournissons la pipeline de déploiement, un package helm par environnement, les images buildées de la dernière version du code de certaines images. + +# Variables + +Certaines variables comme les FQDN ou les images docker sont spécifiées dans les fichiers *gilab-ci.yml de ce dossier. + + +## Variables CI Communes preview & testing + +| Variables | Description | Service ou Utilisation | +| --------------------------------------------- | ----------- | ---------------------- | +| ADMIN_FONCTIONNEL_PASSWORD | Password de l'admin fonctionnel | JDD (test) +| ANALYTICS_MCM_WEBSITE_ID | Id analytics de website | WEBSITE +| BASE_DOMAIN | Base domaine url | CICD +| BUS_CONSUMER_QUEUE | Nom de la queue pour le consumer | BUS & API +| BUS_MCM_HEADERS | Header d'échange de publication | BUS & API +| BUS_MCM_MESSAGE_TYPE | Message type d'échange de la publication | BUS & API +| CITOYEN_PASSWORD | Password citoyen | CYPRESS +| DEFAULT_CITIZEN_PASSWORD | Password citoyen | JDD (test) +| DEFAULT_FUNDER_PASSWORD | Password financeur | JDD (test) +| FORTIFY_API_ACCESS_KEY | Access key analyse SAST | SAST (commons) +| FORTIFY_API_KEY | Api key analyse SAST | SAST (commons) +| FORTIFY_API_URL | URL analyse SAST | SAST (commons) +| FORTIFY_APPLICATION_NAME | Application name SAST | SAST (commons) +| FORTIFY_PORTAL_URL | Url du portail SAST | SAST (commons) +| FORTIFY_TENANT_CODE | Tenant code SAST | SAST (commons) +| FORTIFY_TENANT_ID | Tenant id SAST | SAST (commons) +| FRANCE_CONNECT_IDP_PROVIDER_CLIENT_SECRET | Client ID de l’identity provider de France Connect | IDP +| FRANCE_CONNECT_IDP_PROVIDER_CLIENT_ID | Client ID de l’identity provider de France Connect | IDP +| IDP_MCM_IDENTITY_PROVIDER_CLIENT_ID | Client id identity provider Azure AD | IDP +| IDP_MCM_IDENTITY_PROVIDER_CLIENT_SECRET | Client secret identity provider Azure AD | IDP +| MAILHOG_EMAIL_FROM | Email from | API +| MAILHOG_EMAIL_FROM_KC | Email from | IDP +| NEXUS_DOCKER_REPOSITORY_URL | Url nexus docker repository | CICD +| NEXUS_ROOT_PASSWORD | Password root nexus | CICD +| NEXUS_ROOT_USER | User root nexus | CICD +| PACKAGE_VERSION | Release version | CICD +| PACKAGE_VERSION_SAVE | Release version pour rollback | CICD +| PUBLICATION_EMAIL | +| PUBLICATION_URL | +| SONAR_TOKEN | Token sonar | CICD +| SONAR_URL | Url sonar | CICD + +## Preview + +Des variables peuvent être spécifiées lors du lancement d'une pipeline + +| Variables | Value | Description | +| ----------- | ----------- | ----------- | +| SKIP_TEST | yes | Permet de skipper les TU de la pipeline pour API & Website | +| MIGRATION_STRATEGY | yes | Permet de reimporter le realm mcm pour l'IDP | +| CLEAN_DATA | yes | Permet de rendre disponible seulement les jobs de JDD et clean data pour l'api et l'IDP | + +| Variables | Description | Service ou Utilisation | +| --------------------------------------------- | ----------- | ---------------------- | +| AFFILIATION_JWS_KEY | Clé jws utilisée pour signer le token d'affiliation citoyen à une entreprise | API +| ANALYTICS_DB_DEV_PASSWORD | Password de la bdd | ANALYTICS +| ANALYTICS_DB_DEV_USER | User bdd | ANALYTICS +| ANALYTICS_DB_ROOT_PASSWORD | Password root de la bdd | ANALYTICS +| ANALYTICS_SUPER_EMAIL | Adresse mail de connexion portail | ANALYTICS +| ANALYTICS_SUPER_PASSWORD | Password de connexion portail | ANALYTICS +| ANALYTICS_SUPER_USER | Username de connexion portail | ANALYTICS +| API_KEY | Api Key en header des requêtes pour l'api | API & WEBSITE +| BUS_ADMIN_PASSWORD | Password pour la connexion au portail | BUS +| BUS_ADMIN_USER | Username pour la connexion au portail | BUS +| BUS_MCM_CONSUME_PASSWORD | Password pour la réception des messages | BUS & API +| BUS_MCM_CONSUME_USER | Username pour la réception des messages | BUS & API +| IDP_ADMIN_PASSWORD | Password pour la connexion au portail | IDP +| IDP_ADMIN_USER | Username pour la connexion au portail | IDP +| IDP_API_CLIENT_SECRET | Secret key du client API | IDP & API +| IDP_SIMULATION_MAAS_CLIENT_SECRET | Secret key du client SIMULATION-MAAS-BACKEND | IDP +| MONGO_DB_NAME | Nom de la bdd mongo | API +| MONGO_ROOT_PASSWORD | Password root de la bdd mongo | API +| MONGO_ROOT_USER | User root de la bdd mongo | API +| MONGO_SERVICE_PASSWORD | Password service bdd mongo | API +| MONGO_SERVICE_USER | User service bdd mongo | API +| NETLIFYCMS_APP_ID | ID netlify gitlab | WEBSITE +| PGSQL_FLEX_SSL_CERT | Certificat ssl flex pour pgsql | API +| PGSQL_NAME | Nom de la bdd | API & IDP +| PGSQL_SERVICE_PASSWORD | Password de service pgsql (readaccess) | API +| PGSQL_SERVICE_USER | Username de service pgsql (readaccess) | API +| S3_ROOT_PASSWORD | Password root | S3 +| S3_ROOT_USER | User root | S3 +| S3_SERVICE_PASSWORD | Password compte de service | S3 +| S3_SERVICE_USER | User compte de service | S3 +| S3_SUPPORT_PASSWORD | Password compte de support | S3 +| S3_SUPPORT_USER | User compte de support | S3 +| VAULT_FUNDER_TOKEN | Token financeur vault | VAULT + +## Testing + +| Variables | Description | Service ou Utilisation | +| --------------------------------------------- | ----------- | ---------------------- | +| TESTING_AFFILIATION_JWS_KEY | Clé jws utilisée pour signer le token d'affiliation citoyen à une entreprise | API +| TESTING_ANALYTICS_DB_DEV_PASSWORD | Password de la bdd | ANALYTICS +| TESTING_ANALYTICS_DB_DEV_USER | User bdd | ANALYTICS +| TESTING_ANALYTICS_SUPER_EMAIL | Adresse mail de connexion portail | ANALYTICS +| TESTING_ANALYTICS_SUPER_PASSWORD | Password de connexion portail | ANALYTICS +| TESTING_ANALYTICS_SUPER_USER | Username de connexion portail | ANALYTICS +| TESTING_API_KEY | Api Key en header des requêtes pour l'api | API & WEBSITE +| TESTING_BUS_ADMIN_PASSWORD | Password pour la connexion au portail | BUS +| TESTING_BUS_ADMIN_USER | Username pour la connexion au portail | BUS +| TESTING_BUS_MCM_CONSUME_PASSWORD | Password pour la réception des messages | BUS & API +| TESTING_BUS_MCM_CONSUME_USER | Username pour la réception des messages | BUS & API +| TESTING_IDP_API_CLIENT_SECRET | Secret key du client API | IDP & API +| TESTING_IDP_SIMULATION_MAAS_CLIENT_SECRET | Secret key du client SIMULATION-MAAS-BACKEND | IDP +| TESTING_MARIADB_SERVICE_NAME | Host de la bdd maria | ANALYTICS +| TESTING_MONGO_DB_NAME | Nom de la bdd mongo | API +| TESTING_MONGO_HOST | Host mongo | API +| TESTING_MONGO_SERVICE_PASSWORD | Password service bdd mongo | API +| TESTING_MONGO_SERVICE_PORT | Port host mongo | API +| TESTING_MONGO_SERVICE_USER | User service bdd mongo | API +| TESTING_MONGO_URL | Url srv complète de connexion mongo | API +| TESTING_PGSQL_ADMIN_PASSWORD | Password de connexion portail | IDP +| TESTING_PGSQL_ADMIN_USER | Username de connexion portail | IDP +| TESTING_PGSQL_DEV_PASSWORD | Password dev user bdd pgsql | IDP +| TESTING_PGSQL_DEV_USER | Username dev user bdd pgsql | IDP +| TESTING_PGSQL_FLEX_ADDRESS | Adresse bdd pgsql flex serveur | IDP +| TESTING_PGSQL_NAME | Nom de la bdd pgsql | API & IDP +| TESTING_PGSQL_PORT | Port de la bdd pgsql | API +| TESTING_PGSQL_SERVICE_PASSWORD | Password de service bdd pgsql (readaccess) | API +| TESTING_PGSQL_SERVICE_USER | Username de service bdd pgsql (readaccess) | API +| TESTING_PGSQL_VENDOR | Type de la bdd | IDP +| TESTING_S3_ROOT_PASSWORD | Password root | S3 +| TESTING_S3_ROOT_USER | User root | S3 +| TESTING_S3_SERVICE_PASSWORD | Password compte de service | S3 +| TESTING_S3_SERVICE_USER | User compte de service | S3 +| TESTING_S3_SUPPORT_PASSWORD | Password compte de support | S3 +| TESTING_S3_SUPPORT_USER | User compte de support | S3 diff --git a/helm-chart/README.md b/helm-chart/README.md new file mode 100644 index 0000000..10fedf8 --- /dev/null +++ b/helm-chart/README.md @@ -0,0 +1,9 @@ +# Description + +Dans ce dossier, correspond à la partie "helm" des pipelines et constitue donc la livraison à l'équipe Cloud de notre code afin de le déployer en PPRD & PROD. + +Ainsi, nous leur fournissons la pipeline de déploiement, un package helm par environnement, les images buildées de la dernière version du code de certaines images. + +On peut donc retrouver les templates et les fichiers values servant au deploiement Helm. + +Ils sont variabalisés pour correspondondre soit à l'environnement PPRD soit à celui PROD. \ No newline at end of file diff --git a/idp/README.md b/idp/README.md new file mode 100644 index 0000000..076d3a2 --- /dev/null +++ b/idp/README.md @@ -0,0 +1,134 @@ +# Description + +Le service idp se base sur la brique logicielle **[Keycloak](https://www.keycloak.org/docs/16.1/)** + +Elle nous permet de gérer l'identité ainsi que de procéder au management des accès aux différentes ressources des utilisateurs. + +Nous avons ainsi plusieurs types d'utilisateurs + +- Citoyens +- Administrateur fonctionnel +- Utilisateurs Financeurs +- Comptes de services des clients confidentiels + +(Voir relation avec les autres services) + +# Installation en local + +## Postgresql + +`docker run -d --name postgres-mcm -p 5432:5432 -e POSTGRES_ROOT_PASSWORD=${ROOT_PASSWORD} -e POSTGRES_DB=idp_db -e POSTGRES_USER=${DB_USER} -e POSTGRES_PASSWORD=${DB_PASSWORD} -d postgres:13.6` + +Exectuer une commande pour modifier le schema public + +`docker exec -it postgres-mcm psql -U admin -a idp_db -c 'ALTER SCHEMA public RENAME TO idp_db;'` + +## Keycloak + +`docker run -d --link postgres-mcm --name keycloak -p 9000:8080 -e KEYCLOAK_USER=${USER} -e KEYCLOAK_PASSWORD=${PASSWORD} -e DB_VENDOR=postgres -e DB_ADDR=postgres-mcm -e DB_PORT=5432 -e DB_DATABASE=idp_db -e DB_SCHEMA=idp_db -e DB_USER=${DB_USER} -e DB_PASSWORD=${DB_PASSWORD} jboss/keycloak:16.1.1` + +### Configuration du container KC + +Ouvrir un terminal vers le répertoire parent du projet « platform » puis lister les images docker en cours + +`docker ps` + +Entrer la commande suivante en remplaçant par le container id qui apparait dans le terminal + +`docker exec -it bash` + +Executer ensuite la commande pour créer le dossier allant contenir la blacklist des passwords + +`mkdir /opt/jboss/keycloak/standalone/data/password-blacklists` + +Sortir du container (exit) et executer la commande suivante + +`docker cp ./platform/idp/password-blacklists/blacklist.txt :/opt/jboss/keycloak/standalone/data/password-blacklists` + +Récupérer le fichier overlays/realms/mcm-realm.json + +> **Note** La liste des variables à remplacer vous est fournie ci-dessous néanmoins cela n'empêche pas l'import du realm mcm. Vous pourrez modifier ces variables via l'interface si besoin. + +Importer le realm mcm via l'interface KC + +## Variables + +| Variables | Description | Obligatoire | +| ----------- | ----------- | ----------- | +| IDP_API_CLIENT_SECRET | Client secret du client confidentiel API | Non | +| IDP_SIMULATION_MAAS_CLIENT_SECRET | Client secret du client confidentiel simulation-maas-backend | Non | +| MAIL_API_KEY | Api key SMTP si auth true | Non +| SMTP_AUTH | Boolean pour savoir si nécessite un user/password | Non +| MAIL_PORT | Port SMTP | Non +| MAIL_HOST | Host SMTP | Non +| EMAIL_FROM_KC | Email from | Non +| MAIL_USER | Username SMTP si auth true | Non +| IDP_MCM_IDENTITY_PROVIDER_CLIENT_ID | Client id identity provider Azure AD | Non | +| IDP_MCM_IDENTITY_PROVIDER_CLIENT_SECRET | Client secret identity provider Azure AD | Non | +| IDP_MCM_IDENTITY_PROVIDER_CLIENT_SECRET | Client secret identity provider Azure AD | Non | +| FRANCE_CONNECT_IDP_PROVIDER_CLIENT_ID | Client ID de l’identity provider de France Connect | Non | +| FRANCE_CONNECT_IDP_PROVIDER_CLIENT_SECRET | Client secret identity provider Azure AD | Non + +## Redirect URI + +Dans les clients platform, administration et simulation-maas-client, vous trouverez des redirects URI à modifier. + +> **Note** Comme mentionné, vous pouvez les modifier directement sur le realm avant import ou via l'interface KC. + +Ces redirect URI sont nécessaires pour pouvoir vous connectez sur Website, Administration, Simulation-maas ou l'api. + +| Variables | Description | Obligatoire | +| ----------- | ----------- | ----------- | +| WEBSITE_FQDN | Url du website | Oui | +| ADMIN_FQDN | Url de l'administration | Oui | +| API_FQDN | Url de l'api | Oui +| SIMULATION_MAAS_FQDN | Url de simulation-maas | Oui + +## France connect + +Un .jar est fourni afin de pouvoir utiliser France Connect en local + +Executer la commande suivante + +`docker cp ./platform/idp/keycloak-franceconnect-4.1.0.jar :/opt/jboss/keycloak/standalone/deployments` + +Vérifier que les informations de l'identity provider France connect sont bien renseignées + +## URL / Port + +Portail d'admin : + +- URL : localhost +- Port : 9000 + +# Précisions pipelines + +## Preview + +Les realms sont automatiquement importés au déploiement. + +Si une mise à jour du realm est nécessaire, vous pouvez lancer la pipeline avec l'option "MIGRATION_STRATEGY" à "yes" + +Le deploiement en preview permet de déployer un second Keycloak sur une bdd H2 permettant de tester des connexions inter-IDP. + +## Testing + +Le fichier mcm-realm.json n'est pas importé au déploiement. Il faudra l'importer manuellement comme précisé pour l'installation locale. + +# Relation avec les autres services + +Comme présenté dans le schéma global de l'architecture ci-dessus (# TODO) + +L'idp est en relation avec plusieurs services: + +- Api +- Website +- Simulation-maas +- Administration +- Bus + +Plusieurs utilisent la librairie keycloak-js afin de gérer les connexions, les accès des utilisateurs ainsi que les CRUD des utilisateurs. + +# Tests Unitaires + +Pas de tests unitaires nécéssaires pour ce service diff --git a/mailhog/README.md b/mailhog/README.md new file mode 100644 index 0000000..6617e00 --- /dev/null +++ b/mailhog/README.md @@ -0,0 +1,54 @@ +# Description + +Le service mailhog se base sur la brique logicielle **[Mailhog](https://github.com/mailhog/MailHog/)** + +Elle nous permet de centraliser et de tester l'envoie des mails en local, preview & testing. + +Son installation en local n'est pas requise mais permet de faciliter le parcours fonctionnel pour quelqu'un ne connaissant pas toutes les fonctionnalités de notre produit. + +(Voir relation avec les autres services) + +# Installation en local + +`docker run -d --name mailhog -p 8025:8025 -p 1025:1025 mailhog/mailhog` + +**Si vous souhaitez intégrer mailhog en local, il est nécessaire de créer un network local docker entre toutes les briques et mailhog.** + +## URL / Port + +Interface : +- URL : localhost +- Port : 8025 + +SMTP : +- URL : localhost +- Port : 1025 + + +# Précisions pipelines + +## Preview + +Pas de précisions nécéssaires pour ce service + +## Testing + +Pas de précisions nécéssaires pour ce service + + +# Relation avec les autres services + +Comme présenté dans le schéma global de l'architecture ci-dessus (# TODO) + +L'api et l'idp sont les deux services pouvant envoyer des mails aux utilisateurs. + +**Bilan des relations:** + +- Requête SMTP de l'api vers mailhog +- Requête SMTP de l'IDP vers mailhog + + +# Tests Unitaires + +Pas de tests unitaires nécéssaires pour ce service + diff --git a/s3/README.md b/s3/README.md new file mode 100644 index 0000000..fa3ffea --- /dev/null +++ b/s3/README.md @@ -0,0 +1,83 @@ +# Description + +Le service s3 se base sur la brique logicielle **[MinIO](https://min.io/)** + +Elle est compliant s3 et nous permet de stocker les fichiers que nous pouvons recevoir. + +Nous utilisons les fontions S3 AWS pour créer des buckets, uploader, downloader des fichiers ... + +Les documents stockés sont encryptés en amont grâce au service vault. + +L'architecture des buckets est la suivante : + +![s3BucketArchitecture](docs/assets/s3BucketArchitecture.png) + +(Voir relation avec les autres services) + +# Installation en local + +`docker run --name minio -p 9001:9000 minio/minio:RELEASE.2021-06-17T00-10-46Z server /data` + +⚠ la version minio de l'image de minio n'est pas iso environnement preview & testing + +Son installation en local n'est pas requise mais permet de faciliter le parcours fonctionnel pour quelqu'un ne connaissant pas toutes les fonctionnalités de notre produit. + +Si vous ne l'installez pas, une erreur sera remontée lorsque vous essayerez d'uploader/downloader des justificatifs via l'api. + +L'ajout du compte de service n'est pas nécessaire en local, mais obligatoire sur les environnements distants. + +En local, c'est le compte d'admin qui peut être utilisé par l'api. + +## Variables + +| Variables | Description | Obligatoire | +| ----------- | ----------- | ----------- | +| S3_SERVICE_USER | Username pour le compte de service | Oui | +| S3_SERVICE_PASSWORD | Password pour le compte de service | Oui | +| S3_SUPPORT_USER | Username pour le compte de support | Non | +| S3_SUPPORT_PASSWORD | Password pour le compte de support | Non | + +- Compte de service : ReadWrite +- Compte de support : Diagnostics + + +## URL / Port +- URL : localhost +- Port : 9001 + +# Précisions pipelines + +## Preview + +Un job s3mc est lancé au déploiement pour créer les comptes de service et de support. + +## Testing + +L'ajout des comptes de service et de support est à faire manuellement via l'interface avec les droits mentionnés dans l'installation locale. + +Le deploiement de s3 est de type statefulSet. + + +# Relation avec les autres services + +Comme présenté dans le schéma global de l'architecture ci-dessus (# TODO) + +L'api effectue une requête HEAD HTTP vers s3 pour vérifier l'existence du bucket (voir achitecture bucket mentionnée au début du fichier). + +L'api effectue une requête POST HTTP vers s3 pour créer le bucket s'il n'est pas déjà existant. + +L'api effectue une requête POST HTTP vers s3 pour uploader les fichiers dans le bucket associé. + +L'api effectue une requête GET HTTP vers s3 pour récupérer les fichiers afin qu'ils soient visualisable via Website. + +**Bilan des relations:** + +- Requête HTTP de l'api vers s3 pour vérifier existence du bucket +- Requête HTTP de l'api vers s3 pour créer le bucket associé s'il n'existe pas +- Requête HTTP de l'api vers s3 pour enregistrer le fichier +- Requête HTTP de l'api vers s3 pour télécharger le fichier + +# Tests Unitaires + +Pas de tests unitaires nécéssaires pour ce service + diff --git a/simulation-maas/README.md b/simulation-maas/README.md new file mode 100644 index 0000000..d93fbeb --- /dev/null +++ b/simulation-maas/README.md @@ -0,0 +1,54 @@ +# Description + +Le service simulation-mass se base sur du vanilla js + +Ce service nous permet de tester les liaisons de comptes des MaaS avec notre système. + +Son interface est très pauvre et basique. + +(Voir relation avec les autres services) + +# Installation en local + +Modifier les fichiers présents dans le dossier static avec les variables mentionnées ci-dessous + +`npm install && npm run start` + +## Variables + +| Variables | Description | Obligatoire | +| ----------- | ----------- | ----------- | +| IDP_FQDN | Url de l'IDP | Oui | +| API_FQDN | Url de l'api | Oui | +| IDP_MCM_REALM | Nom du realm mcm | Oui | +| IDP_MCM_SIMULATION_MAAS_CLIENT_ID | Client id du client public simulation-maas | Oui +| MCM_IDP_CLIENTID_MAAS_CME | Client id du client public simulation-maas | Oui (si test France Connect) + +## URL / Port + +Portail d'admin : + +- URL : localhost +- Port : 8080 + +# Précisions pipelines + +## Preview + +Pas de précisions nécéssaires pour ce service + +## Testing + +Pas de précisions nécéssaires pour ce service + +# Relation avec les autres services + +Comme présenté dans le schéma global de l'architecture ci-dessus (# TODO) + +Via simulation-maas, un citoyen peut effectuer une liaison de compte sur un client public. Ceci est fait pour simuler la liaison de compte d'un MaaS avec notre système. + +Via simulation-maas, un citoyen peut être redigirer sur le début d'une souscription à une aide en envoyant des metadata. + +# Tests Unitaires + +Pas de tests unitaires nécéssaires pour ce service diff --git a/test/README.md b/test/README.md new file mode 100644 index 0000000..47f65c5 --- /dev/null +++ b/test/README.md @@ -0,0 +1,33 @@ +# Description + +Ce dossier contient les test API et d'intégration que nous pouvons réaliser sur nos pipelines. + +# Installation en local + +Pas d'installation en local + + +## URL / Port + +Pas d'installation en local + + +# Précisions pipelines + +## Preview + +Les tests API servent aussi de JDD aux environnements afin d'avoir des data minimales. + +## Testing + +Pas de précisions nécéssaires pour ce service + + +# Relation avec les autres services + +Nécéssité d'avoir l'ensemble des services déployés pour pouvoir être exécutés. + +# Tests Unitaires + +Pas de tests unitaires nécéssaires pour ce service + diff --git a/vault/README.md b/vault/README.md new file mode 100644 index 0000000..ab4ed88 --- /dev/null +++ b/vault/README.md @@ -0,0 +1,90 @@ +# Description + +Le service vault se base sur la brique logicielle **[Vault](https://github.com/hashicorp/vault)** + +Ce service est destiné aux financeurs partenaires qui souhaitent proposer des aides sur la plateforme MOB et qui ne possèdent pas leur propre solution de chiffrement de données. + +Il doit être installé dans le SI du financeur et va l'utiliser pour envoyer à MOB une clé publique permettant de chiffrer les justificatifs envoyés par un citoyen lors de la souscription à une aide de ce financeur. Le gestionnaire va ensuite déchiffrer ces justificatifs lors du traitement de la demande à l'aide de la clé privée stockée de manière sécurisée dans le Vault. + +Son installation en local permet simuler les actions d'un financeur et de tester le chiffrement et le déchiffrement de justificatifs. + + +# Installation en local + +## Nom de domaine et certificat + +Pour lancer le vault en local en https, il faut utiliser un nom de domaine fictif à attribuer au vault et lui associer un certificat. + +### Ajout d'un nom de domaine fictif associé à l'adresse IP de la machine ou localhost dans le fichier hosts + +Sur Windows : **C:\Windows\System32\drivers\etc\hosts** + +Sur Linux : **/etc/hosts** + +Exemple : + +`127.0.0.1 vault.example.com` ou `172.27.66.82 vault.example.com` + +Si vous utilisez WSL : il faut attribuer associer l'adresse IP de WSL dans les fichiers hosts de Windows **ET** de Linux + +### Création de certificats + +`. ./createCertificates.sh vault.example.com` + +Ajouter le certificat ***manager-client-cert.pfx*** dans les ***Certificats personnels*** de l'utilisateur + +Ajouter le certificat ***rootCA.pem*** dans les ***Autorités de certification racines de confiance*** + +## Variables + +| Variables | Description | Obligatoire | +| ----------- | ----------- | ----------- | +| CLIENT_ID | Client ID du client Keycloak créé pour le financeur | Oui | +| CLIENT_SECRET | Client Secret du client Keycloak créé pour le financeur | Oui | +| FUNDER_IDS | Liste des identifiants financeurs à autoriser | Oui | +| API_URL | URL du service api | Oui | +| IDP_URL | URL du service idp | Oui | +| AVAILABLE_KEYS | Nombre de clés à conserver dans le vault | Non | +| FUNDER_TOKEN | Token permettant de se connecter à l'UI du Vault | Oui | +| VAULT_ADDR | URL du Vault sans slash. (ex : **https://vault.example.com:8200** et pas **https://vault.example.com/** ) | Oui | +| VAULT_API_ADDR | URL de l’API du Vault (même URL que VAULT_ADDR) | Oui | +| VAULT_CERT | Chemin vers l’emplacement du certificat serveur sur la machine où est lancé le Vault, à utiliser pour le TLS dans le Vault. (ex : **./certs/simulation-vault.preview.moncomptemobilite.fr.crt**) | Oui | +| VAULT_KEY | Chemin vers l’emplacement de la clé privée du certificat serveur sur la machine où est lancé le Vault. (ex : **./certs/simulation-vault.preview.moncomptemobilite.fr.key**) | Oui | +| VAULT_ROOT_CA | Chemin vers l’emplacement du certificat de l’autorité de certification sur la machine où est lancé le Vault, utilisé pour vérifier le certificat du serveur SSL du Vault. (ex : **./certs/rootCA.pem**) | Oui | +| ADMIN_CERT | Chemin vers l’emplacement du certificat client sur la machine où est lancé le Vault, utilisé pour s’authentifier en tant qu’administrateur. (ex : **./certs/ admin-client-cert.pem**) | Oui | +| ADMIN_CERT_KEY | Chemin vers la clé privée du certificat client administrateur sur la machine où est lancé le Vault. (ex : **./certs/admin-client-key.pem**) | Oui | +| CLIENT_CA | Chemin vers l’emplacement du certificat de l’autorité de certification sur la machine où est lancé le Vault, utilisé pour vérifier les certificats clients utilisés pour l’authentification par certificat.(ex : **./certs/client-ca.pem**). Peut être le même que VAULT_ROOT_CA mais pas nécessairement. | Oui | + +## Démarrage + +`docker network create dev_web-nw` + +`docker volume create vault-data` + +`docker compose -f vault-docker-compose.yml up` + +## URL / Port + +Interface : +- URL : https://vault.example.com:8200 +- Port : 8200 + +# Précisions pipelines + +## Preview + +Un seul vault utilisé (sur la branche master) pour l'ensemble des branches de dev. + +## Testing + +Pas de précisions nécéssaires pour ce service + + +# Relation avec les autres services + +L'api et l'idp sont les deux services appelés par le vault pour envoyer des clés publiques. +Le service website appelle le vault pour récupérer les clés privées associées et déchiffrer les justificatifs + +# Tests Unitaires + +Pas de tests unitaires nécéssaires pour ce service