DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Gestion des bases de données / HFSQL / Gestion de HFSQL Client/Serveur
  • Présentation
  • Préambule : un contexte fiable et sécurisé pour la machine
  • Sécurité HFSQL
  • Installation du serveur HFSQL
  • Sauvegardes
  • Utilisateurs et droits
  • Procédures stockées
  • Cryptage
  • Fichiers de plus de 2 Go
  • Tracabilité
  • Tests
  • Isolation et maintenance
  • Sécurisation des applications
  • RGPD : Règlement Général sur la Protection des Données
  • Impact de la sécurité sur les performances
  • Configuration du poste
  • Serveurs virtuels
  • Autres conseils
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
Présentation
Cette page d'aide présente les principales recommandations permettant d'optimiser le niveau de sécurité et les performances d'une base de données HFSQL Client/Serveur en fonction des contraintes et des fonctionnalités recherchées.
Ce document présente :
Préambule : un contexte fiable et sécurisé pour la machine
Avant même de configurer le serveur HFSQL, le choix du contexte dans lequel va être installé le serveur HFSQL est primordial pour la sécurité.
En effet une installation sur une machine en libre accès, équipée d'un système d'exploitation non mis à jour de ses correctifs de sécurité, sans anti-virus, ni pare-feu sera forcément une installation non sécurisée, et cela quels que soient les paramètres du serveur HFSQL.
Ce document ne détaille pas la sécurité de l'environnement d'installation du serveur HFSQL car il s'agit d'un domaine trop vaste.
Il existe d'ailleurs de nombreux ouvrages complets sur le domaine de la sécurité en fonction de l'environnement choisi.
Voici toutefois un rappel des points les plus importants de l'environnement du serveur HFSQL qui ont un impact direct sur la sécurité :
  • Sécurité physique de la machine : Pour assurer cette sécurité, les points suivants sont conseillés :
    • Limiter les accès physiques possibles à la machine.
    • Assurer l'alimentation électrique (alimentation redondée, onduleur, etc.).
    • Contrôler la température et l'hygrométrie de la pièce, etc.
    • Assurer les accès réseau du serveur (plusieurs cartes réseau).
    • Enlever de la machine les matériels non utilisés.
    • Protéger le BIOS par un mot de passe et désactiver dans le bios les fonctionnalités et matériels non nécessaires (Port USB intégrés s'ils sont non utilisés par exemple).
    • Choisir un média physique (disque) sûr (et rapide). Ce média physique stockera le serveur HFSQL et surtout les bases de données. Il est conseillé de choisir de préférence un matériel équipé d'un système de redondance ou de sauvegarde physique (RAID, mirroring, etc.) ou des stockages SAN.
  • Système d'exploitation : Le système d'exploitation du serveur (Windows/Linux, version 64 bits) doit être à jour de ses correctifs de sécurité. Un administrateur spécialisé du système choisi permet d'assurer une bonne configuration du système d'exploitation. Toutes les options et services non utilisés doivent être désinstallés ou désactivés (serveur Web, serveur FTP, etc.).
    Dans le cas d'un serveur sous Windows :
    • vérifiez que le serveur n'a pas également le rôle "Active Directory". En effet dans ce cas, les caches en écriture du système sont désactivés, ce qui impacte grandement les performances de mises à jour des données.
    • si l'utilisation du système de restauration est autorisé, ajoutez une exclusion dans sa configuration pour interdire la sauvegarde des fichiers dont l'extension est ".NDX". En effet dans ce cas, la restauration pourrait restaurer des index qui ne seraient pas en phase avec les données.
  • Système de fichiers : Le système de fichiers (FAT32, NTFS, NFS, Ext3, CodaFS, HFS, etc.) est important puisqu'il peut déterminer les possibilités de gestion des fichiers ainsi que les droits qu'il est possible de définir sur les fichiers. Un système disposant de droits avancés (comme NTFS) et permettant de gérer les fichiers de plus de 2 Go est conseillé. Évitez les systèmes de fichiers "réseau" (comme NFS).
  • Sécurité réseau : Pour assurer la sécurité réseau du poste, voici quelques éléments à prendre en compte :
    • Utilisation d'un VPN ou SSP en cas d'accès externe.
    • Sécurisation de la pile TCP/IP.
    • Configuration des routeurs et pare-feu réseau.
    • Limiter ou interdire les accès externes (Internet), les accès sans fil (WiFi, 4G, etc.).
    • Mettre des contrôles d'adresses IP et/ou d'adresses MAC.
  • Pare-feu : La mise en place d'un pare-feu local doit être effectuée avec un accès entrant ouvert uniquement au port du serveur HFSQL (par défaut le port 4900 en TCP).
  • Anti-virus local : La mise en place d'un anti-virus local est conseillée. Il est nécessaire de mettre des règles d'exclusion sur les fichiers de type ".ndx", ".fic", ".mmo" et ".ftx" se trouvant dans le répertoire des bases de données HFSQL pour éviter un ralentissement des accès aux données.
  • Système de sauvegarde : La mise en place d'un système de sauvegarde et de restauration. Une sauvegarde permet de pouvoir récupérer des données suite à un problème de fonctionnement (panne de matériel, erreur de manipulation, vol...). La présence d'une copie/sauvegarde des données implique que l'emplacement de cette sauvegarde soit dans un endroit physiquement différent, mais aussi bien protégé que les données originales !
  • Gestion des sessions utilisateur : Ne pas laisser de sessions ouvertes sur le serveur. Le fait de conserver une session ouverte sur le serveur ouvre des possibilités d'accès et constitue donc une faille de sécurité. Le serveur ne doit donc en aucun cas être un poste de travail.
  • Accès distant : Les possibilités d'accès distant au système (Bureau distant, VNC, SSH, etc.) doivent être sécurisées au maximum, et les possibilités réduites au minimum.
  • Gestion des partages : Les partages inutiles doivent être supprimés. Le serveur HFSQL ne nécessite aucun partage pour son fonctionnement. Il ne faut donc définir aucun partage sur le serveur (exceptés les partages administratifs). Idéalement le service de gestion de partage ("Serveur" sous Windows) peut être arrêté pour n'avoir aucun partage.
Sécurité HFSQL

Installation du serveur HFSQL

La sécurité d'un serveur HFSQL commence dès son installation.
Lors de l'installation d'un serveur HFSQL, un service est installé sur le serveur : HFSQL (Manta). Ce service est associé par défaut au compte système local sous Windows.
Afin d'assurer une meilleure sécurité, il est conseillé de changer le compte associé à ce service et de mettre un compte spécifique.
Remarque : Lors d'une installation sous Linux, ce compte peut être changé depuis le Centre de Contrôle HFSQL.
Il faut ensuite donner les droits suivants pour le compte associé au service HFSQL :
  • droits de "lecture" sur les fichiers binaires du serveur HFSQL,
  • droits d' "écriture" sur le fichier de configuration du serveur (fichier HFConf.INI),
  • "contrôle total" sur le répertoire des bases de données.
Le compte utilisé pour exécuter le service doit disposer de la stratégie de sécurité locale "Attribution des droits d'utilisateur \ Effectuer les tâches de maintenance de volume". Sans ce droit, les opérations qui nécessitent de créer des fichiers et de transférer des enregistrements pourraient être ralenties.
Conseils :
  • Si vous réalisez des sauvegardes avec un outil externe, donnez également des droits au compte utilisé par cet outil externe sur le répertoire des sauvegardes HFSQL.
  • Les autres groupes et comptes ne doivent pas avoir de droits dans ces répertoires.
Dès que le serveur HFSQL est installé :
  • il est nécessaire de changer le compte utilisateur par défaut ("admin" sans mot de passe) et lui associer un mot de passe sécurisé (plus de 8 caractères avec plusieurs lettres et plusieurs chiffres).
  • il est conseillé de bloquer les ports du gestionnaire de serveurs HFSQL (MantaManager) avec un pare-feu (les ports 4999 et 5002 en UDP et TCP). L'utilisation du pare-feu est optionnelle.

Sauvegardes

Il est nécessaire de réaliser des sauvegardes régulières des bases de données et du serveur HFSQL.
Si la sauvegarde des bases des données est réalisée durant le fonctionnement du serveur HFSQL, elle doit être réalisée par le serveur HFSQL.
Pour réaliser une sauvegarde depuis le Centre de Contrôle HFSQL :
  1. Sélectionnez la base de données HFSQL Client/Serveur dans le Centre de Contrôle.
  2. Dans l'onglet correspondant à votre base de données, cliquez sur l'onglet vertical "Sauvegardes".
  3. Dans le menu de l'onglet correspondant à votre base de données, dans le groupe "Sauvegarde", déroulez "Nouvelle sauvegarde" et sélectionnez le type de sauvegarde à effectuer :
    • Nouvelle sauvegarde à chaud : la sauvegarde sera effectuée immédiatement.
    • "Nouvelle sauvegarde planifiée" (option conseillée) : la sauvegarde sera effectuée à la date demandée. L'assistant permet de définir les caractéristiques de planification de la sauvegarde.
Une fois cette sauvegarde réalisée, il est ensuite possible d'utiliser un outil externe pour la compresser, la mettre sur bande ou toute autre action.
Remarque : Les serveurs de type NAS sont conseillés pour la sauvegarde exclusivement.

Utilisateurs et droits

Le serveur HFSQL permet de créer des utilisateurs et des groupes d'utilisateurs grâce au Centre de Contrôle HFSQL (onglet vertical "Utilisateurs" et onglet vertical "Groupes" disponible dans l'onglet du serveur HFSQL).
Pour chaque utilisateur et chaque groupe, le Centre de Contrôle HFSQL permet de donner des droits de lecture, d'écriture, de création, de suppression, ... (option "Gestion des droits" présente dans le groupe "Droits" des onglets correspondants au serveur, à la base et aux fichiers de la base de données).
Gestion des droits
Afin de diminuer les possibilités d'opérations accidentelles ou malveillantes, les applications qui se connectent au serveur HFSQL doivent le faire avec un compte utilisateur HFSQL approprié. Deux utilisateurs différents ne doivent pas utiliser le même compte utilisateur HFSQL.
Dans le Centre de Contrôle HFSQL, définissez une politique de droits avec uniquement les droits minimum requis pour chaque utilisateur et chaque groupe d'utilisateurs.

Procédures stockées

Les procédures stockées HFSQL utilisent le WLangage, ce qui leur donne une grande puissance et de nombreuses possibilités.
Il est important de les limiter et de les contrôler. Toutes les procédures stockées doivent être contrôlées par un administrateur de la base (DBA) avant d'être déployées.
Il est d'ailleurs possible et conseillé d'autoriser uniquement les administrateurs de la base à déployer de nouvelles procédures stockées ("Droit de paramétrer les procédures stockées" dans le Centre de Contrôle HFSQL).

Cryptage

Plusieurs types de cryptage peuvent être réalisés :
  • Cryptage des connexions entre les clients et le serveur :
    Lorsqu'une application cliente se connecte à une base de données HFSQL, il est possible d'utiliser une connexion cryptée. Ainsi les données qui transitent sur le réseau sont automatiquement cryptées.
    Afin d'augmenter la sécurité, il est conseillé d'utiliser cette option. Il est recommandé de définir un droit sur la base de données qui interdit les connexions au serveur sans cryptage ("Droit de se connecter au serveur (connexion cryptée uniquement)" dans le Centre de Contrôle HFSQL).
  • Cryptage des fichiers de données :
    En plus du compte HFSQL qui requiert un utilisateur et un mot de passe pour se connecter, chaque fichier de données (table) peut également être protégé par un cryptage et un mot de passe. L'algorithme de cryptage (128 bits, RC5 12 boucles, RC5 16 boucles, etc.) est défini dans l'analyse WINDEV/WEBDEV par le développeur. Le mot de passe peut être défini par le développeur ou par une option d'une application cliente afin d'être défini par un administrateur de la base.
    Un cryptage avec mot de passe fort est conseillé pour les fichiers de données contenant des données sensibles. Lors de la définition du mot cryptage dans l'analyse, il faut le définir non seulement sur le fichier de données (.fic) mais aussi sur l'index (.ndx, .ftx) et sur les mémos.
    Pour une sécurité maximale du cryptage, activez l'option "Activer la sécurité renforcée ". Cette option permet de crypter les données sans stocker la clé de cryptage dans le fichier. Avec cette option et sans le mot de passe du fichier, il est impossible de récupérer le contenu du fichier de données.
    Ces options sont définies sous l'éditeur d'analyses, dans l'onglet "Détail" de la fenêtre de description des fichiers.
  • Cryptage applicatif :
    Pour les rubriques contenant des données d'une très haute sensibilité (numéro de carte bancaire par exemple), il est conseillé d'ajouter un cryptage/décryptage applicatif. Un cryptage applicatif rend les données illisibles sans l'applicatif correspondant, même en ayant un compte utilisateur de la base et le mot de passe du fichier de données.

Fichiers de plus de 2 Go

Si certains fichiers des bases de données risquent d'avoir une taille qui va dépasser 2 Go, le serveur HFSQL doit être installé sur un système d'exploitation et un système de fichiers qui permettent de gérer ce type de fichier (comme NTFS).
De plus, l'option de gestion des fichiers de plus de 2 Go doit être activée dans l'analyse WINDEV/WEBDEV correspondante aux bases de données (onglet "Compatibilité" de la fenêtre de description des fichiers) :
Dans le cas d'un fichier journalé, le journal prend la même option que le fichier de données associé. Il faut donc activer cette option sur un fichier même si seul son journal risque de dépasser 2 Go.
Il existe également une option sur les fichiers systèmes du serveur HFSQL pour leur permettre d'avoir une taille supérieure à 2 Go. Si les données sont installées sur un système de fichiers qui supporte les fichiers de plus de 2 Go, activez cette option. Pour activer cette option dans le Centre de Contrôle HFSQL :
  1. Afficher les caractéristiques d'un serveur HFSQL :
  2. Dans le groupe "Paramètres", cliquez sur "Configuration du serveur".
  3. Cliquez sur l'option "Système" :

Tracabilité

Afin de pouvoir vérifier les opérations qui ont été réalisées sur la base de données, il faut mettre en place un mécanisme de traçabilité sur les fichiers de données sensibles.
Cette opération peut être effectuée en activant la journalisation sur ces fichiers de données. La journalisation peut-être définie au niveau de la rubrique : il est donc possible de ne pas inclure certaines rubriques dans le journal pour des raisons de performances (taille du journal) ou de sécurité (éviter la duplication de données très sensibles).
Pour activer le journalisation sur les fichiers de données :
  1. Sous l'éditeur d'analyses, affichez la fenêtre de description des fichiers de données (option "Description du fichier de données" du menu contextuel d'un fichier).
  2. Dans l'onglet "Journalisation", spécifiez le type de journalisation à réaliser :
    Activer la journalisation
Il est également possible d'activer la génération d'un fichier de logs par le serveur HFSQL. Le fichier de log ne contient pas les données des bases mais il peut permettre de connaître les différentes requêtes reçues et traitées par le serveur.
Pour activer cette option dans le Centre de Contrôle HFSQL, sélectionnez l'onglet "Configuration" de la description du serveur :

Tests

  • Test de non régression
    Lors de la mise à jour du serveur HFSQL, du framework client ou des applications clientes qui utilisent la base de donnée's HFSQL, des tests de non régression doivent avoir été réalisés au préalable sur une configuration de tests avant la mise en place sur la configuration réelle.
    En effet, la mise en place d'une mise à jour intégrant la correction d'une faille de sécurité pourrait provoquer des dysfonctionnements des applications clientes et des modifications non souhaitées dans les bases de données.
  • Test dans des conditions réelles
    Afin de s'assurer que le serveur est correctement dimensionné et correctement sécurisé, il est nécessaire d'effectuer régulièrement des tests sur une configuration similaire avec des volumes de données similaires et un nombre de connexions simultanées similaire au serveur réel.

Isolation et maintenance

  • Isolation
    Afin d'assurer une meilleure isolation entre différentes bases de données, il est conseillé d'utiliser des serveurs HFSQL différents. Ces serveurs HFSQL peuvent être installés sur la même machine dans des répertoires différents, avec des comptes utilisateurs différents.
  • Maintenance
    Il est important de maintenir à jour le serveur HFSQL et la couche cliente HFSQL (Framework WINDEV). Les mises à jour peuvent comporter des corrections de failles de sécurité.
La ré-indexation régulière des index des bases de données permet non seulement d'assurer des requêtes performantes (mise à jour des statistiques), mais également une meilleure robustesse des fichiers.
Attention aux différents processus qui peuvent être actifs sur le serveur (anti-virus, vérification de disque, ...) : aucun processus autre que le serveur HFSQL ne doit accéder aux bases de données.

Sécurisation des applications

La sécurisation d'une base de données passe par la sécurisation des applications qui utilisent la base de données. En effet, les applications qui accèdent à la base de données contiennent toutes les informations nécessaires pour accéder à la base. Elles constituent donc un gros point faible d'accès à la base de données.
Les applications qui accèdent à une base de données doivent donc elles-même être protégées avec au moins :
  • Une authentification des utilisateurs
  • Un verrouillage automatique de l'application ou de la session en cas d'inactivité prolongée
  • Les informations d'authentification ne doivent pas être mémorisées
  • Les possibilités d'exports des données doivent être désactivées partout où elles ne sont pas strictement nécessaires dans l'application
  • Les différentes options de l'application doivent être accessibles en fonction de l'utilisateur (Groupware utilisateur)
  • L'installation de l'application doit elle-même être sécurisée et accessible uniquement aux personnes autorisées
Note : Il est possible de signer l'exécutable et l'installation, si le système autorise uniquement les applications signées.

RGPD : Règlement Général sur la Protection des Données

Le RGPD (Règlement Général sur la Protection des Données) remplacera dès le 25 mai 2018 la loi "Informatique et Libertés" en vigueur depuis le 6 janvier 1978.
Pour simplifier l'identification et le suivi des données personnelles dans une application WINDEV, WEBDEV ou WINDEV Mobile, un audit RGPD est disponible..
Pour plus de détails, consultez :
Impact de la sécurité sur les performances
Certaines mesures de sécurité provoquent souvent une diminution des performances. Inversement, des modifications pour accroître les performances diminuent parfois la sécurité.
Exemples : Cryptage des connexions, cryptage des fichiers, journalisation...
Voici quelques rappels pour obtenir de meilleures performances dans les accès à une base de données HFSQL (en dehors de l'optimisation des codes source des applications, de la création de nouveaux index...) sans diminuer la sécurité.

Configuration du poste

Les caractéristiques physiques de la machine conseillées :
  • Multi-processeurs, multi-coeurs, afin d'assurer un traitement en parallèle des requêtes par le serveur HFSQL
  • Technologie 64 bits : Pour que le serveur HFSQL puisse utiliser plus de 2 Go de RAM, il doit être installé dans sa version 64 bits, sur un système 64 bits et sur une machine 64 bits.
  • Une grande quantité de RAM. Plus il y aura de mémoire RAM, plus le système d'exploitation et le serveur HFSQL pourront générer du cache sur les lectures de fichiers, et les traitements s'en trouveront accélérés. De plus, une partie de la mémoire RAM installée est utilisée par le système d'exploitation et les différents autres services installés sur la machine. Si la base de données est volumineuse, il est conseillé d'avoir 16 Go de mémoire (ou plus).
  • Des disques durs rapides : Le serveur HFSQL fait un grand nombre d'accès aux disques (lectures et écritures), la présence de disques rapides peut plus que doubler la vitesse de certaines opérations.
  • RAID : La mise en place d'un système RAID permet d'avoir une meilleure sécurité et permet également de répartir les lectures sur plusieurs disques. Les performances de lecture sont donc améliorées.
  • Mise à jour régulière des statistiques d'index des bases (par une tâche planifiée du serveur par exemple). Les performances des requêtes sont optimales lorsque ces statistiques sont à jour.

Serveurs virtuels

Lors de l'utilisation d'un serveur virtuel, les ressources d'une même machine physique sont partagées entre plusieurs serveurs virtuels. Ainsi le fonctionnement d'un serveur virtuel peut impacter les performances de tous les autres.
Par exemple un process qui effectue des lectures intensives sur un disque physique dans un serveur virtuel va monopoliser les accès disque. Tous les serveurs virtuels qui accèdent à ce même disque physique seront ralentis pour leurs lectures et écritures.
Afin de conserver de bonnes performances avec un serveur virtuel pour héberger le serveur HFSQL, il faut donc éviter l'utilisation d'un disque physique partagé ou d'un disque virtuel de type "image". L'utilisation d'un disque dans un réseau de stockage SAN ou en pass-through est à privilégier.

Autres conseils

  • Pas d'écrans de veille autres qu'un écran noir sur le serveur, car certains écrans de veille peuvent utiliser beaucoup de ressources.
  • Activation possible de la compression des trames sur les communications HFSQL. Cette option est intéressante uniquement si le débit du réseau de communication entre le serveur et le client est faible (GPRS, 3G...).
  • Optimisation de l'équilibrage de charge du serveur. Pour plus de détails, consultez Gestion du load balancing (équilibrage dynamique de charge du serveur).
Version minimum requise
  • Version 16
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 03/07/2023

Signaler une erreur ou faire une suggestion | Aide en ligne locale