4.2Sécurité, droits utilisateurs & groupware
La SÉCURITÉ d'une application de gestion couvre plusieurs dimensions : qui peut se connecter, qui peut voir quoi, qui peut faire quoi, et comment les données sont protégées. WinDev propose le GROUPWARE UTILISATEUR, un module intégré qui apporte « clé en main » : une AUTHENTIFICATION (identifiant/mot de passe), une gestion des UTILISATEURS et des GROUPES, et surtout la définition des DROITS jusqu'au niveau des FENÊTRES et des CHAMPS (tel groupe ne voit pas ce bouton, tel autre a ce champ en lecture seule). C'est un gain de temps considérable par rapport à un développement maison, et cela couvre le besoin classique des applications d'entreprise.
Les PRINCIPES de sécurité à respecter, indépendamment de l'outil. (1) Le MOINDRE PRIVILÈGE : chacun n'a que les droits strictement nécessaires à son travail — c'est la règle d'or. (2) Ne jamais stocker de MOT DE PASSE en clair : on stocke une empreinte (hachage). (3) La sécurité de l'INTERFACE ne suffit pas : masquer un bouton n'empêche pas d'accéder aux données autrement. Il faut aussi sécuriser côté DONNÉES (droits HFSQL Client/Serveur, contraintes) — c'est un point souvent négligé. (4) TRACER les opérations sensibles (qui a modifié quoi, quand) : indispensable pour l'audit et les litiges. (5) CHIFFRER ce qui doit l'être (échanges réseau, données sensibles au repos). (6) Protéger l'accès physique et les SAUVEGARDES (une sauvegarde volée, c'est toute la base volée). ⚠️ Enfin, la protection des DONNÉES PERSONNELLES relève d'obligations LÉGALES qui VARIENT selon les pays (RGPD en Europe, législations locales ailleurs) : informez-vous sur le droit applicable et faites-vous conseiller — ce guide n'est pas un avis juridique.
Vocabulaire de la section
- Groupware Utilisateur
- Le module intégré de WinDev apportant clé en main l'authentification, la gestion des utilisateurs et groupes, et les DROITS jusqu'au niveau des fenêtres et des champs.
- Moindre privilège
- La règle d'or : chacun ne dispose que des droits STRICTEMENT NÉCESSAIRES à son travail. Limite les dégâts en cas d'erreur, de compte compromis ou de malveillance.
- Mots de passe (⚠️)
- Ne JAMAIS stocker un mot de passe en clair : on conserve une empreinte (hachage). Un fichier de mots de passe en clair est une faille majeure.
- Sécurité côté données
- Masquer un bouton dans l'interface n'empêche pas d'accéder aux données autrement. Il faut AUSSI sécuriser au niveau des données (droits HFSQL Client/Serveur, contraintes) — point souvent négligé.
- Traçabilité
- Enregistrer QUI a fait QUOI et QUAND sur les opérations sensibles. Indispensable pour l'audit, les litiges et le diagnostic d'incidents.
Pourquoi la sécurité au niveau de l'INTERFACE ne suffit-elle pas ?
En pratique — Sécuriser son application
- Mettez en place l'authentification et les GROUPES d'utilisateurs (Groupware Utilisateur) en appliquant le MOINDRE PRIVILÈGE : chacun n'a que le nécessaire.
- Ne stockez jamais de mot de passe en clair (empreinte/hachage) et sécurisez AUSSI côté données (droits HFSQL Client/Serveur), pas seulement dans l'interface.
- TRACEZ les opérations sensibles (qui, quoi, quand) pour l'audit et le diagnostic, et chiffrez les échanges et données sensibles.
- Protégez les SAUVEGARDES (une sauvegarde volée = toute la base volée) et vérifiez vos obligations légales sur les données personnelles dans VOTRE pays.
Points clés à retenir
- Le GROUPWARE UTILISATEUR de WinDev fournit clé en main l'AUTHENTIFICATION, la gestion des UTILISATEURS et GROUPES, et les DROITS jusqu'au niveau des FENÊTRES et des CHAMPS — un gain de temps considérable sur un développement maison.
- RÈGLE D'OR : le MOINDRE PRIVILÈGE — chacun n'a que les droits strictement nécessaires. Et ne JAMAIS stocker de mot de passe en clair (empreinte/hachage).
- ⚠️ POINT SOUVENT NÉGLIGÉ : la sécurité de l'INTERFACE NE SUFFIT PAS. Masquer un bouton n'empêche pas d'accéder aux données par un autre chemin — il faut aussi sécuriser au niveau des DONNÉES (droits HFSQL Client/Serveur, contraintes).
- Complétez par : TRACER les opérations sensibles (qui/quoi/quand, pour l'audit et les litiges), CHIFFRER ce qui doit l'être, protéger les SAUVEGARDES (une sauvegarde volée = toute la base volée). ⚠️ La protection des DONNÉES PERSONNELLES relève d'obligations LÉGALES qui VARIENT selon les pays — informez-vous sur le droit applicable.
Questions fréquentes
Pourquoi la sécurité au niveau de l'interface ne suffit-elle pas ?
Parce que l'interface n'est qu'UN chemin vers les données : masquer un bouton ou griser un champ empêche l'utilisateur normal d'agir, mais n'empêche nullement d'atteindre la base autrement — la protection doit donc exister au niveau des DONNÉES elles-mêmes. Ce que protège (et ne protège pas) l'interface : (1) Masquer un bouton, griser un champ, cacher un menu : cela règle le cas de l'utilisateur ordinaire qui suit le parcours prévu. C'est utile et nécessaire — mais c'est du CONFORT et de la clarté, pas une barrière de sécurité. (2) Les autres chemins existent : un accès direct à la base (outil d'administration, autre application, connexion ODBC), les fichiers de données copiés, un export, une sauvegarde récupérée, voire une autre partie de VOTRE application qui n'a pas les mêmes contrôles. (3) Un utilisateur curieux ou malveillant n'a pas besoin de forcer votre écran : il lui suffit de contourner l'application. (4) Et sans même parler de malveillance : un traitement par lot, un import ou un correctif technique peut écrire dans la base sans passer par vos contrôles d'interface. Où doit être la sécurité : (1) Au niveau des DONNÉES : en HFSQL Client/Serveur, définissez des utilisateurs et des droits côté SERVEUR (qui peut lire, écrire, supprimer, sur quelles données). C'est la vraie barrière, celle qui s'applique quel que soit le chemin d'accès. (2) Dans les RÈGLES métier centralisées (procédures, classes) plutôt que dans les événements d'écran : ainsi un import ou un traitement par lot bénéficie des mêmes contrôles qu'une saisie manuelle. C'est un argument de plus pour ne pas mettre le métier dans les boutons. (3) Dans l'ANALYSE : contraintes, intégrité référentielle, unicité — le moteur refuse alors les données incohérentes quelle que soit leur origine. (4) Au niveau du SYSTÈME : droits sur les répertoires, accès réseau, chiffrement, protection physique du serveur. (5) Sur les SAUVEGARDES : elles contiennent toutes les données ; une sauvegarde accessible à tous annule toute votre politique de sécurité. La bonne approche (défense en profondeur) : (1) Plusieurs COUCHES de protection plutôt qu'une seule : interface + règles métier + droits base + système + sauvegardes. Si une couche cède, les autres tiennent. (2) L'interface reste utile : elle guide l'utilisateur et évite les erreurs — mais elle est la couche la plus SUPERFICIELLE. (3) Moindre privilège partout : y compris pour le compte technique utilisé par l'application pour se connecter à la base. Un compte applicatif tout-puissant est un risque majeur. (4) TRACER les opérations sensibles : la traçabilité complète les contrôles et permet de comprendre après coup. (5) Testez en vous mettant à la place de quelqu'un qui essaierait de contourner. En résumé : la sécurité d'interface ne suffit pas parce que l'écran n'est qu'un CHEMIN parmi d'autres vers les données. Masquer un bouton ou griser un champ empêche l'utilisateur normal d'agir — c'est utile pour la clarté et pour éviter les erreurs — mais n'oppose aucun obstacle à un accès direct à la base (outil d'administration, connexion ODBC, autre application), à la copie des fichiers, à un export ou à une sauvegarde récupérée. Sans même évoquer la malveillance, vos propres traitements par lot et imports écrivent dans la base sans passer par les contrôles d'écran. La vraie protection se place donc au niveau des DONNÉES : droits utilisateurs côté SERVEUR en HFSQL Client/Serveur, contraintes et intégrité référentielle dans l'ANALYSE, et règles métier CENTRALISÉES dans des procédures plutôt que dans les événements de boutons — de sorte qu'un import bénéficie des mêmes contrôles qu'une saisie. Complétez par la sécurité système (droits sur les répertoires, réseau, chiffrement) et la protection des SAUVEGARDES, qui contiennent l'intégralité des données. Raisonnez en DÉFENSE EN PROFONDEUR : plusieurs couches, dont l'interface n'est que la plus superficielle, avec le moindre privilège appliqué partout — y compris au compte technique de l'application.
Comment gérer les droits utilisateurs sans complexifier à l'excès ?
En raisonnant par GROUPES (profils métier) plutôt que par personne, en appliquant le moindre privilège avec des règles SIMPLES, et en n'ajoutant de la finesse que là où le besoin est réel — un système de droits trop complexe finit mal administré, donc peu sûr. La bonne base : raisonner par GROUPES : (1) Ne définissez pas les droits personne par personne : c'est ingérable dès qu'il y a du mouvement (arrivées, départs, changements de poste). (2) Créez des GROUPES correspondant aux RÔLES métier : commercial, comptable, magasinier, responsable, administrateur. (3) Les droits s'attribuent au GROUPE ; les personnes sont simplement rattachées à un ou plusieurs groupes. (4) Bénéfice : l'arrivée d'un nouveau commercial se règle en une affectation, sans reparamétrer quoi que ce soit. Le départ aussi. (5) C'est également plus facile à AUDITER : « qui peut valider une facture ? » se répond en regardant un groupe. Appliquer le moindre privilège simplement : (1) Partez du travail RÉEL de chaque rôle : de quoi cette personne a-t-elle besoin pour faire son métier ? Rien de plus. (2) Distinguez les niveaux essentiels : consulter / créer-modifier / supprimer / valider / administrer. Ces cinq niveaux couvrent la majorité des besoins. (3) Soyez particulièrement attentif aux opérations sensibles : suppression, validation de documents, modification de tarifs, accès aux données personnelles ou financières, export massif. (4) N'accordez pas les droits d'administration « pour simplifier » — c'est le raccourci le plus dangereux. Éviter la sur-complexité : (1) Un système trop fin devient ingérable : si chaque champ de chaque écran a son droit, plus personne ne sait ce qui est autorisé, l'administration devient un cauchemar et les erreurs de paramétrage créent... des failles. La complexité est ennemie de la sécurité. (2) Commencez SIMPLE : quelques groupes, des droits par grandes fonctions. Affinez seulement quand un besoin concret apparaît. (3) Documentez la matrice des droits (quel groupe peut quoi) : sans document, personne ne saura pourquoi tel groupe a tel droit. (4) Prévoyez l'ADMINISTRATION : qui gère les comptes, comment on crée/supprime un utilisateur, comment on traite un départ. Un compte non désactivé après un départ est une faille classique. (5) REVOYEZ périodiquement les droits : ils s'accumulent avec le temps (une personne change de poste et garde ses anciens droits). Les compléments indispensables : (1) TRAÇABILITÉ des actions sensibles : savoir qui a fait quoi vaut souvent mieux qu'un droit très fin. (2) Sécurité côté DONNÉES également, pas seulement dans l'interface. (3) Sensibilisation des utilisateurs (mots de passe, verrouillage de session) : la technique ne fait pas tout. En résumé : gérez les droits par GROUPES correspondant aux RÔLES métier (commercial, comptable, magasinier, responsable, administrateur) et non personne par personne — ainsi une arrivée, un départ ou un changement de poste se règle par une simple affectation, et l'audit devient possible (« qui peut valider une facture ? »). Appliquez le MOINDRE PRIVILÈGE en partant du travail réel de chaque rôle, avec quelques niveaux clairs (consulter / créer-modifier / supprimer / valider / administrer) qui couvrent l'essentiel des besoins, en portant une attention particulière aux opérations sensibles (suppressions, validations, tarifs, données personnelles, exports massifs) et en n'accordant jamais les droits d'administration « pour simplifier ». Surtout, résistez à la sur-complexité : un système où chaque champ a son droit devient impossible à administrer, plus personne ne sait ce qui est autorisé, et les erreurs de paramétrage finissent par créer les failles qu'on voulait éviter — la complexité est ennemie de la sécurité. Commencez simple et n'affinez que sur besoin avéré, DOCUMENTEZ la matrice des droits, organisez l'administration (création, départs — un compte non désactivé est une faille classique) et REVOYEZ périodiquement des droits qui s'accumulent avec les changements de poste. Enfin, complétez toujours par la TRAÇABILITÉ, souvent plus utile qu'un droit très fin.