Nouvelles de GLPI et travaux en cours (automne 2022).

La prĂ©sentation est animĂ©e par Alexandre Delaunay, responsable de l’Ă©quipe de dĂ©veloppement de GLPI et propriĂ©taire du produit pour GLPI.

Dans cette vidĂ©o, il parle de la roadmap et de certaines fonctionnalitĂ©s que l’Ă©quipe de dĂ©veloppement souhaite dans GLPI pour la prochaine version majeure. Voici la retranscription :

« Pour que la présentation soit courte, nous ne discuterons que de :

– Principaux sujets

– Ou très graphiques

Et je tiens Ă  insister sur le fait qu’il n’y a aucune promesse de dĂ©lai concernant la livraison.

Nous ferons de notre mieux pour ajouter les fonctionnalitĂ©s, mais en fonction du dĂ©roulement de l’annĂ©e, certaines seront OK, d’autres non.

  1. Généricité des actifs.

Désormais, nous avons sur notre place de marché 2 plugins pour traiter les publicités génériques :

– Objet gĂ©nĂ©rique

– Fields

Nous voulons ajouter la possibilitĂ© de vous laisser personnaliser chaque type d’objets affichĂ©s dans le menu Assets (dans un premier temps).

La première partie consiste à vous permettre de définir vos types.

Nous fournirons une liste de types prĂ©dĂ©finis correspondant Ă  la liste actuelle des actifs et vous permettrons d’en ajouter de nouveaux si vous le souhaitez. Comme les serveurs en plus des ordinateurs de bureau ou portables. Ou pour faire quelque chose de complètement diffĂ©rent de la gestion informatique, par exemple : des voitures, des bureaux, etc.

Certains des types actuels ne seront toujours pas amovibles comme les logiciels, les racks, les câbles, les cartouches et les consommables. La raison en est leur comportement, ou leur présentation diffère des autres actifs.

Vous pourrez toujours les désactiver si vous le souhaitez mais la suppression sera impossible.

Ainsi, GENERICITY couvre la crĂ©ation de nouveaux types d’actifs.

  1. Assets composition

De plus, sur la mĂŞme page de configuration, vous pourrez dĂ©finir quelle capacitĂ© un type d’actif utilise.

Par exemple. contrats, gestion, etc., COMPOSITION d’un type d’actif, avec quelques cases Ă  cocher pour sĂ©lectionner les capacitĂ©s.

Cela vous permet de supprimer ou d’ajouter des onglets Ă  l’objet.

Ou si un objet peut être inventorié par un agent.

  1. GLPI Agent

Parlons un peu des fonctionnalitĂ©s liĂ©es Ă  l’agent d’inventaire GLPI.

Rappel d’inventaire Ă  distance.

Avant de parler de roadmap, faisons un petit rappel sur la fonctionnalitĂ© d’inventaire Ă  distance

Il s’agit d’une tâche que vous pouvez configurer pour qu’un agent lui permette d’interroger d’autres ordinateurs de votre rĂ©seau afin de crĂ©er un fichier d’inventaire pour chacun.

L’agent unique regroupera tous les fichiers d’inventaire et les enverra en un seul passage Ă  l’API d’inventaire de GLPI.

Ainsi, l’objectif principal est de n’avoir qu’un seul agent dĂ©ployĂ©.

Nous utilisons les protocoles SSH et WinRM pour y parvenir.

GLPI Agent – Roadmap (1/2).

Le premier point que nous souhaitons amĂ©liorer est de faciliter le processus d’inventaire de votre rĂ©seau.

Nous avons actuellement deux missions :

– dĂ©couvrir quelles adresses « ping » dans une plage IP

– l’inventaire du rĂ©seau, qui prend le rĂ©sultat de la dĂ©couverte pour faire un inventaire SNMP complet pour les Ă©quipements rĂ©seau et les imprimantes.

Nous allons changer le processus en :

– ajout d’inventaire Ă  distance des ORDINATEURS

– et laisser la tâche de dĂ©couverte faire directement un inventaire COMPLET si elle connaĂ®t le type du pĂ©riphĂ©rique distant. Une requĂŞte SNMP pour les Ă©quipements rĂ©seaux, des requĂŞtes SSH ou WinRm pour les ordinateurs.

Avec une tâche unifiée et une configuration, notre objectif est de vous permettre de découvrir tous vos périphériques réseau.

Les deux derniers points décrivent les éléments requis par la découverte unifiée. La nouvelle interface UI de la boîte à outils recevra des formulaires :

– de planifier les tâches de l’agent.

– pour enregistrer les informations d’identification, comme la communautĂ© SNMP, le couple de mots de passe de connexion pour le domaine Windows ou la clĂ© publique pour une connexion SSH. En rĂ©sumĂ©, toute information permettant Ă  l’agent de se connecter Ă  un appareil distant.

GLPI Agent – Roadmap (2/2)

Nous avons pensé à réécrire une grande partie des agents, et nous avons présélectionné Golang pour cela.

Le fait que l’agent soit Ă©crit avec le langage PERL.

RĂ©cemment, trouver des dĂ©veloppeurs Ă  l’aise avec ce langage a Ă©tĂ© difficile.

Nous essaierons un prototype dans l’annĂ©e pour mesurer notre capacitĂ© Ă  passer Ă  ce nouveau langage.

Nous prĂ©voyons Ă©galement de renforcer les Ă©changes entre les agents et le backend en ajoutant des flux d’authentification et d’enregistrement. Cela vous sera recommandĂ© mais vous pourrez faire des Ă©changes simples si vous prĂ©fĂ©rez.

Et nous devons encore refaire tous les formulaires pour piloter Ă  distance l’agent dans GLPI UI.

C’est toujours prĂ©vu.

  1. GLPI

Parlons un peu des fonctionnalitĂ©s liĂ©es Ă  l’application web GLPI.

High-level API (1/2)

Tout d’abord, nous ajouterons une nouvelle API, encore une fois.

Nous observons que, bien que l’ancien autorise plus d’utilisation, en raison de sa connexion de bas niveau avec le framework, il est difficile de maintenir sa stabilitĂ© et d’Ă©viter la rĂ©gression.

Nous maintenons une interface pour gérer la dépréciation de cette API précédente, mais cela devient de plus en plus difficile à faire.

Donc, une nouvelle API connectée à un niveau supérieur avec des points de terminaison et des paramètres stabilisés.

Et nous en avons profité pour ajouter quelques éléments de confort :

– nous avons une interface utilisateur dĂ©diĂ©e basĂ©e sur Swagger UI pour faciliter la dĂ©couverte et le test des terminaux et de leurs paramètres

– nous utilisons Ă©galement RSQL, un langage de requĂŞte commun pour filtrer l’API.

High-level API (2/2)

Pour la deuxième diapositive, vous pouvez voir en action une requête GET pour lister les utilisateurs dans la base de données GLPI.

  1. DCIM

Nous voulons Ă©tendre les fonctionnalitĂ©s du centre de donnĂ©es dans la prochaine version. Principalement sur l’ajout de vues graphiques.

DCIM – Panneaux d’Ă©quipements rĂ©seau

Le premier et le plus simple est le panneau graphique pour la liste des ports rĂ©seau dans les formulaires d’Ă©quipement.

Nous prendrons les photos avant et arrière dĂ©finies dans le modèle de l’Ă©quipement et les afficherons au-dessus de la liste des ports.

L’utilisateur obtiendra des informations sur chaque port directement sur le panneau d’image en les survolant.

Un simple clic sur un port fera dĂ©filer la page jusqu’Ă  la bonne ligne pour obtenir plus d’informations.

Dans la configuration du modèle, vous aurez un nouvel onglet pour dessiner la position de chaque port.

DCIM – Graphical enclosures (1/2)

De la mĂŞme manière, les emplacements d’une enceinte peuvent ĂŞtre dessinĂ©s et indexĂ©s pour indiquer Ă  GLPI oĂą les sous-Ă©lĂ©ments peuvent ĂŞtre placĂ©s.

DCIM – Graphical enclosures (2/2)

Sur une vue de rack oĂą un boĂ®tier est insĂ©rĂ©, au lieu d’un seul rectangle vide, les emplacements seront affichĂ©s et les commandes habituelles disponibles, comme le survol ou le clic pour obtenir plus d’informations.

DCIM – Graphical connections

Enfin, pour la partie DCIM, nous essaierons d’ajouter une reprĂ©sentation pour les connexions rĂ©seau ou d’alimentation.

Le but est d’obtenir des liens entre les Ă©quipements.

Il est trop tôt pour en parler, nous avons un petit cahier des charges pour cela, et cela demande plus de recherche pour trouver une bibliothèque, par exemple.

Gardez Ă  l’esprit que la capture d’Ă©cran actuelle ne reprĂ©sente aucun dĂ©veloppement existant.

  1. Divers

Workflows – Processus

Nous avons un prototype fonctionnel pour cela.

Une nouvelle vue pour permettre aux administrateurs de GLPI de paramétrer leurs processus métier.

Avec des étapes, des transitions, des conditions et des actions, une boîte à outils complète pour décrire un flux de workflow.

Cela vise à remplacer les règles héritées.

Et pour commencer, il sera disponible pour les objets d’assistance comme les tickets ou les changements

Importation d’inventaire Nutanix

Un autre dĂ©veloppement actuellement en alpha est le connecteur Ă  l’API Nutanix pour obtenir :

– Clusters

– HĂ´tes

– Machines virtuelles

– Disques

Le module analyse les API distantes et les envoie Ă  l’API d’inventaire native de GLPI.

La fusion avec les appareils existants se fait avec le moteur de règles comme d’habitude.

SCIM

Un autre connecteur, GLPI servira un point de terminaison SCIM pour votre instance Microsoft Azure.

Ce protocole pousse les changements d’utilisateurs de l’annuaire vers l’application connectĂ©e.

Ainsi, au lieu de synchroniser toute la base de donnĂ©es de l’utilisateur et de faire correspondre tout le monde, tout changement dans l’annuaire sera immĂ©diatement poussĂ© vers GLPI.

  1. Sécurité

Maintenant, une fonction de sécurité, une authentification à deux facteurs !

Les administrateurs peuvent appliquer les connexions des utilisateurs dans la configuration de la sĂ©curitĂ© pour leur demander d’enregistrer une application externe comme Google Authenticator ou Authy.

SĂ©curitĂ© – 2 facteurs (2/2)

Après une connexion rĂ©ussie, un nouveau champ apparaĂ®tra demandant aux utilisateurs de coller un code PIN Ă  partir de l’application d’authentification.

Security – Oauth Server

Nous allons ajouter un serveur Oauth Ă  GLPI dans 2 buts :

– connecter les applications Ă  GLPI pour dĂ©lĂ©guer la fonctionnalitĂ© de connexion et la gestion des identitĂ©s

– sĂ©curisez nos diffĂ©rentes API comme l’inventaire ou celle Ă  usage gĂ©nĂ©ral.

SĂ©curitĂ© – divers

– Gestion des vulnĂ©rabilitĂ©s

– IntĂ©gration de scanners (vuls, tsunamin)

– Correspondance CVE

Quelques points divers :

Dans le menu de gestion, une nouvelle entrée pour lister les vulnérabilités.

L’objectif est, avec l’aide de scanners externes, comme vuls ou tsnunamin, ainsi que certaines API, d’obtenir CVE et de les faire correspondre Ă  des logiciels connus pour voir si un hĂ´te prĂ©sente des vulnĂ©rabilitĂ©s de sĂ©curitĂ©.

Certaines cartes de tableau de bord et alertes seront également ajoutées pour améliorer les rapports sur ce sujet.

Modifications techniques

– La racine Web de l’application sera `/public`

– continuer Ă  travailler sur twig (removing legacy echo)

– removal of legacy auto escaping

– modularisation des fonctionnalitĂ©s critiques

– bibliothèque de graphiques Ă©lectroniques pour les tableaux de bord

Dernière slide pour vous dire qu’on continue d’amĂ©liorer le coeur de GLPI.

Le plus impactant pour vous sera le dĂ©placement de la racine web de l’application.

Maintenant, ce sera un sous-dossier nommé /public.

Ainsi, tous les autres sous-dossiers (comme les fichiers par exemple) ne seront pas disponibles sur le web lorsque le serveur web n’est pas bien configurĂ©.

Le point suivant est la base de code héritée que nous devons nettoyer.

Et pour finir, nous sommes passés à une nouvelle bibliothèque de cartes appelée e-charts.

Il est plus simple à utiliser de notre côté et vous appréciez les nouvelles couleurs et son interactivité.

Timeline?

– Actuellement, terminer la stabilisation de la version 10.0

– Fin 2023, bĂŞta de la prochaine version majeure

Nous travaillons toujours sur la correction des bugs de la version 10. Ce dernier a apporté des changements substantiels, notamment sur la partie assistance.

Mais nous visons à travailler sur les résultats annuels entrants entièrement sur la dernière version.

Message important à propos de la sécurité (CVE-2022-35947, CVE-2022-35914) !

Nous avons publié des versions correctives GLPI le 14 Septembre 2022 :

Celles-ci corrigent deux failles de sécurité critiques : une Injection SQL (CVE-2022-35947), et une “Remote Code Execution” (CVE-2022-35914, faille dans la librairie tierce, htmlawed), cette dernière est massivement exploitée depuis le 3 Octobre 2022 pour executer du code sur les serveurs non sécurisés, disponibles sur internet, qui hébergent GLPI (les instances GLPI Network Cloud ne sont pas impactées).

Si vous n’êtes pas dans la dernière version 9.5.9 ou 10.0.3, vous devez impĂ©rativement mettre Ă  jour vos instances selon la mĂ©thode recommandĂ©e (Ă  partir d’un dossier vide, sans Ă©craser les fichiers existants de GLPI).

Nous avons remarquĂ© qu’il existe un scĂ©nario oĂą les versions correctives peuvent elle aussi ĂŞtre impactĂ©es : lorsqu’une mise Ă  jour de GLPI a Ă©tĂ© effectuĂ©e, en dĂ©compressant l’archive par dessus les dossiers et fichiers existants. Nous insistons sur le fait que cette manière de mettre Ă  jour GLPI est une mauvaise pratique et outre le problème de sĂ©curitĂ© actuel, vous expose Ă  des bugs.

Nous vous invitons Ă  rĂ©-installer correctement votre GLPI comme indiquĂ© dans la documentation :

  • Ă  partir d’un dossier vide
  • copiez les fichiers de l’archive de la dernière version
  • rĂ©cupĂ©rez vos dossiers config/ et files/ depuis l’ancienne instance.

Solutions de contournement pour traiter l’urgence de la RCE (cela ne corrige pas l’injection SQL) :

  • supprimez le fichier vendor/htmlawed/htmlawed/htmLawedTest.php (attention ne pas toucher au fichier htmLawed.php qui est lĂ©gitime).
  • empĂŞchez l’accès web au dossier vendor/ en positionnant (dans le cas d’Apache par exemple) un .htaccess adĂ©quat.

Si votre serveur a déjà été corrompu, il vous faut probablement repartir d’un nouveau serveur, sur lequel vous importerez un dump SQL et les dossiers mentionnés plus haut.

Formcreator 2.13.1 – bugfixes

Formcreator 2.13.1 : cette version est compatible avec GLPI 10.0.

⚠️ Vous devez mettre Ă  jour depuis une version stable prĂ©cĂ©dente. La mise Ă  niveau Ă  partir d’une version de dĂ©veloppement ou de test n’est pas prise en charge.

Bug Fixes

  • test d’existence inversĂ© sur mise Ă  jour du ticket (2acc5cd4)
  • consigner plus d’erreurs et mettre Ă  jour la journalisation des erreurs obsolètes (ae28ed6d)
  • restaurer les redirections de page existantes dans la v2.12 (582f926c)
  • mettre Ă  jour la journalisation des erreurs obsolètes (da8929e0)
  • abstractitiltarget: glpi 10.0.3 nĂ©cessitera une donnĂ©e avec une valeur valide (5f385bb8)
  • actorfield:valeur par dĂ©faut non enregistrĂ©e(c3baebbe)
  • actorfield: avertissement php (6d3e98d1)
  • checkboxesfield: remplacer div par p dans les rĂ©ponses de checkbowes (9ef95343)
  • composite: L’avertissement php casse JSON si un ticket n’est pas gĂ©nĂ©rĂ© (2108983c)
  • descriptionfield: mauvais rendu de forme (87a74058)
  • filefield: erreur php lors du passage du type de champ au fichier (a03c7a0a)
  • form: javascript (f05bc697)
  • form: liste sur la page d’accueil en libre-service (ba6d4a58)
  • form: variable indĂ©finie (169d2c8e)
  • form: l’url pour former des listes de rĂ©ponses peut ĂŞtre invalide (6cd29e6d)
  • install: Ă©viter l’Ă©chec de la modification de la table (4dadea8a)
  • install: mĂ©thode manquante dans la mise Ă  niveau vers 2.13.1 (7e9cdcd5)
  • issue: problème non supprimĂ© lorsque le tichet va Ă  la corbeille (c977b1ca)
  • issue: problème de purge lors de la suppression du ticket associĂ© (76444ecc)
  • issue: recrĂ©er lors de la restauration du ticket (2656e284)
  • item_targetticket: conversion uuid en ID (e9f326c0)
  • section: encodage du nom dans le concepteur et la forme rendue » (491dcb69)
  • targetticket: mauvais nom de constante (48dda4f3)
  • targetticket: incohĂ©rence de la structure du tableau (ff56f3f1)
  • targetticket: incohĂ©rence de la structure du tableau(892a83c3)
  • targetticket,targetchange: balises de la question ou balises spĂ©cifiques non enregistrĂ©es (ec08d95e)

Fonctionnalités

  • prĂ©parer la compatibilitĂ© avec PHP 8.2 (#2966) (4bb7f3c3)
  • formanswer,issue: afficher le titre dans l’en-tĂŞte de navigation (1878e4b0)
  • kb: prĂ©sĂ©lectionner voir toutes les catĂ©gories (1b669d4f)

Aide / Contribution nécessaire
Mises Ă  jour des paramètres rĂ©gionaux : certaines langues n’ont pas de responsable ou sont en retard (beaucoup de contenu non traduit). Merci de contribuer sur Transifex.

Découvrez aussi toutes les fonctionnalités GLPI : https://glpi-project.org/fr/fonctionnalites/

Formcreator 2.13.0 – version dĂ©finitive !

Formcreator 2.13.0 version définitive : est compatible avec GLPI 10 uniquement.

Mettez à jour cette nouvelle version, qui est définitive !

revue de la documentation et mises Ă  jour

Bug Fixes

  • cannot delete a ticket from service catalog (acec9bb8)
  • abstractitiltarget: alternative email lost if no requester user (78fd8450)
  • abstracttarget: uuid should not be updated (b1e492d3)
  • checkboxesfield: avoid HTML br tag (c3a60bbb)
  • condition: compatibility with Advanced forms validation (6685b943)
  • descriptinfield: conversion to target requires escaping (b79cfa95)
  • filefield: mandatory check may cause exception (3f711a54)
  • form: PHP warning (844ef96c)
  • form: bad URL when using advanced form validation plugin (adb9fba5)
  • formanswer: grid style updated for current version of gridstack (85b6a686)
  • formanswer: select inherited class if needed (955dc969)
  • formanswer: update gridstack css (70deaa06)
  • glpiselectfield: missing entity restrict (40c9ab73)
  • install: prevent useless warnings (001d12f5)
  • install: use modern settings for tables (f04e4181)
  • issue: remove duplicate item in status dropdown (27f9f313)
  • ldapselectfield: log LDAP error instead of showing it to user (e170dc6f)
  • ldapselectfield: no translation for items (d170c79c)
  • targetticket: prevent exception in inconsistent target ticket (ba6ed88e)
  • textarea: on change event broken (9fb70edb)
  • textarea: rn chars added between lines (66571b80)
  • textarea, entityconfig: embedded image question description (#2901) (0d78db1a)
  • textareafield: embedded image upload broken (d58075cd)
  • textareafield: missing escape before compare (ba78e935)

Fonctionnalités

  • formanswer: order formanswers by date desc (7fdeda51)
  • ldapselectfield: lazy loading (bffcb5b7)

Aide / Contribution nécessaire
Mises Ă  jour des paramètres rĂ©gionaux : certaines langues n’ont pas de mainteneur ou sont en retard (beaucoup de contenu non traduit). Merci de contribuer sur Transifex.

Consultez le journal des modifications et téléchargez

Découvrez encore plus de fonctionnalités GLPI : https://glpi-project.org/fr/fonctionnalites/

A propos de la licence de GLPI

Et si ont discuté de la licence GLPI (GPL-3.0-or-later) ?

GLPI 10 inclut, depuis sa sortie récente, la fonctionnalité d’inventaire natif accompagnant les agents GLPI sortis eux aussi dans l’année.
S’inspirant des projets précédents, Fusion Inventory et OCS (et reprennant leur format XML), elle se veut un point d’entrée unifié pour l’inventaire (en y ajoutant une plus grande compatibilité de l’ensemble des objets de GLPI).
Au début du développement du projet, une directive de ré-écriture complète avait été un des objectifs énoncés (sans reprise de code).

Récemment (après la sortie de la version 10.0 stable), il est apparu que cette fonctionnalité au sein de GLPI incluait des portions de code de FusionInventory. En tant qu’équipe de développement, nous avons été manifestement négligeant sur les copyrights du projet précédent.
De plus, il y a une incompatibilité entre la licence de GLPI (GPL-2.0-or-later) et celle de FusionInventory (AGPL-3.0-or-later)

Il n’est pas souhaité de notre part d’avoir de conflit envers FusionInventory, ni de volonté de s’attribuer la paternité; Teclib’ et ses développeurs étant aussi contributeurs du projet et sont donc inclus dans cette notion de copyright (principalement sur l’agent mais aussi dans une partie du plugin).
Nous présentons nos excuses à la communauté FusionInventory à propos de cette situation.

Corrections Ă  venir

Quelques changements vont être effectués pour corriger la situation :

  • les mentions de copyright du projet Fusion Inventory vont ĂŞtre ajoutĂ©es sur les fichiers sources concernĂ©s,
  • la licence de GLPI (et les entĂŞtes des fichiers sources) va ĂŞtre modifiĂ©e pour GPL-3.0-or-later.

Sur ce dernier point, cela est possible par la license précédente mentionnant “any later”. Elle permet de passer de la version 2 actuelle vers les versions ultérieures.
La compatibilité entre GPL-3.0 et AGPL-3.0 (Affero) est assuré explicitement dans le texte des deux licences.

En plus de ce changement, nous en avons profité pour vérifier les usages actuels en terme de bibliothèque.
Nous avons remplacé certaines pour résoudre toute incompatibilités suite au passage sur la GPL-3.0-or-later.
Une Ă©tait impossible Ă  remplacer, DHTMLX/gantt, et l’intĂ©gralitĂ© de la fonctionnalitĂ© Gantt a Ă©tĂ© sortie de GLPI pour ĂŞtre intĂ©grĂ©e dans un plugin dĂ©diĂ©. Il n’y a normalement aucune perte fonctionnelle, vous aurez simplement besoin d’installer le plugin (via le marketplace ou manuellement) pour rĂ©cuperer les affichages prĂ©cĂ©dents.

Ces changements seront effectifs lors de la prochaine version de GLPI à venir d’ici quelques semaines.

Quel impact de la nouvelle licence

Un rapide résumé de l’impact de ces changements :

  • GLPI est, et restera, complètement libre et open source, son code est toujours consultable et adaptable par chacun.
  • Tous les projets souhaitant partager ou rĂ©-utiliser le code de GLPI doivent maintenant le faire avec la licence GPL-3.0 ou compatible.
  • La mention “or-later” de la nouvelle permet de prĂ©voir le cas ou une version 4 de la GPL deviendrait disponible.

Si vous êtes utilisateur de GLPI, l’impact est probablement nul pour vous.

De notre coté, nous serons plus vigilant à l’avenir sur la compatibilité de notre code et des bibliothèques que nous utilisons.