Logiciel

10 astuces de sécurité pour les bases de données Acces Microsoft

By mai 1, 2020 630 Comments
10 astuces de sécurité pour les bases de données Acces Microsoft

Quelques bonnes pratiques peuvent grandement contribuer à protéger vos données Access contre les utilisateurs négligents ou trop curieux. Voici quelques moyens simples d’ajouter quelques couches de sécurité à une base de données.

Quelques bonnes pratiques peuvent vous aider à protéger vos données Access contre les utilisateurs négligents ou trop curieux. Voici quelques moyens simples d’ajouter quelques niveaux de sécurité à une base de données.

Les données sont un actif. Par conséquent, les données sont de l’argent. Même si les données ne sont pas directement impliquées dans l’échange de biens ou de services, elles ont toujours une valeur. C’est pourquoi il est si important de les protéger. Le système d’exploitation emploie la meilleure sécurité, mais ce n’est pas toujours pratique, surtout sur un système autonome. Dans le monde d’Access, la meilleure solution suivante est le modèle de niveau utilisateur (qu’Access 2007 ne prend même pas en charge). La sécurité au niveau de l’utilisateur est compliquée et son déploiement demande du temps et des connaissances particulières.

Lorsque les meilleures mesures de sécurité ne sont pas possibles (ou nécessaires), vous pouvez mettre en œuvre des mesures de sécurité moins robustes pour protéger vos données et votre conception. Gardez simplement à l’esprit que les conseils suivants permettent d’éviter les accidents d’utilisateurs honnêtes et de personnes légèrement curieuses ayant suffisamment de connaissances pour être dangereuses. Ces conseils n’offrent pas une sécurité fiable, en soi. Mais en combinant un certain nombre d’entre elles, vous pouvez obtenir un niveau de sécurité qui vaut mieux que l’absence totale de sécurité.

1 : Vérifier et réinitialiser les paramètres à l’aide de la macro AutoExec

Utilisez la macro AutoExec pour vérifier et réinitialiser les options de sécurité que les processus ont pu modifier au cours de la dernière session de travail. AutoExec est une macro spéciale qui s’exécute à l’ouverture de la base de données. Pour créer une macro AutoExec, il suffit de nommer une nouvelle macro AutoExec.

2 : Masquer la fenêtre de la base de données

Les options de démarrage, vous permettent de déterminer des comportements spécifiques à l’ouverture de la base de données. Deux de ces fonctions vous permettent de sécuriser un peu votre base de données :
Afficher la fenêtre de la base de données : Désélectionnez cette option, et la prochaine fois que quelqu’un ouvrira la base de données, Access cachera la fenêtre de la base de données. Les utilisateurs n’auront pas d’accès immédiat aux objets.
Utiliser les touches spéciales d’Access : Désélectionnez cette option pour empêcher l’utilisation de la touche F11 pour masquer la fenêtre de la base de données.

Configurer les options de démarrage pour masquer la fenêtre de la base de données.
Les deux paramètres fonctionnent ensemble. Si vous ne désélectionnez pas l’option Use Access Special Keys (Utiliser les touches spéciales d’accès), les utilisateurs peuvent appuyer sur F11 pour faire disparaître la fenêtre de la base de données.

Pour accéder aux options de démarrage, choisissez Démarrage dans le menu Outils. Dans Access 2007, cliquez sur le bouton Office, puis sur le bouton Options d’accès. Sélectionnez Base de données actuelle dans le volet de gauche et vous trouverez ces options dans la section Options de l’application. Access 2007 ne possède pas de fenêtre de base de données, mais vous pouvez masquer le volet de navigation de la même manière. Cette option se trouve dans la section Navigation, juste en dessous de la section Options d’application.

La désélection de l’option Afficher la fenêtre de la base de données désactive également la commande de démarrage. Les utilisateurs peuvent contourner toutes ces options en maintenant la touche [Shift] enfoncée lors de l’ouverture de la base de données. Cette astuce est pratique pour vous, mais laisse la base de données vulnérable à toute autre personne qui en prend connaissance. Un utilisateur peut également importer des objets dans une base de données vierge pour contourner les paramètres de démarrage.

3 : Contourner le contournement

Vous pouvez utiliser l’interface pour masquer la fenêtre Base de données, mais le contournement par la touche [Shift] rend la base de données vulnérable à toute personne qui en a connaissance. C’est pourquoi il existe un contournement du contournement… sérieusement. Pour fermer le contournement, définissez la propriété AllowBypassKey sur False lorsque la base de données se ferme. Automatisez ce processus en appelant le code suivant à partir d’une tâche de fermeture — le choix de la tâche vous appartient :

Utilisez cette option pour définir n’importe quelle propriété de démarrage.
Vous pouvez définir des options lorsque vous fermez ou ouvrez la base de données, à une exception près. La propriété AllowBypassKey doit être définie lorsque vous fermez la base de données. Veillez à définir une référence à la bibliothèque Data Access Objects (DAO). Sinon, cette procédure générera une erreur de référence. (Il y aura forcément une alternative ADO, mais DAO est efficace dans ce domaine).

Il est logique que toute personne connaissant le contournement de la touche [Shift] (#2) sache également comment activer le contournement de la touche [Shift] en réinitialisant la propriété AllowBypassKey à True. Si c’est le cas, vous devrez appliquer la sécurité du groupe de travail pour limiter l’accès à cette propriété à l’administrateur. Quelqu’un peut essayer de réinitialiser la propriété, mais cette tentative échouera si cette personne n’utilise pas le login de l’administrateur.

4 : Divisez la base de données

Une base de données divisée est plus facile à protéger qu’une base de données unique qui contient les données et les objets d’interface. Par scission, j’entends une base de données qui stocke les tables et les relations dans une base de données, appelée back-end, et les objets d’interface dans une seconde base de données, appelée front-end. Les deux bases de données communiquent par le biais de tables liées. Voici pourquoi tout cela est important : les utilisateurs du front-end ne peuvent pas modifier la conception des tables du back-end. (Il existe de nombreuses raisons de scinder une base de données, mais cette discussion porte uniquement sur la sécurité).

Pour scinder une base de données, choisissez Utilitaires de base de données dans le menu Outils. Ensuite, sélectionnez Database Splitter. L’assistant vous guidera tout au long du processus. Dans Access 2007, cliquez sur Base de données Access dans le groupe Déplacer les données de l’onglet Outils de base de données.

5 : Évitez de compacter à la fermeture

Toute personne qui utilise Access sait que le compactage régulier peut faire la différence entre une application réussie et une bombe. Le compactage fait une copie du fichier, révise ses objets, supprime les données temporaires et réorganise les morceaux fragmentés sur votre disque. En bref, le compactage maintient une base de données en bon état de fonctionnement.

Depuis Access 2000, Access propose l’option Compact On Close, qui compacte automatiquement la base de données lorsque la dernière personne la ferme. Malheureusement, le processus oublie parfois de faire le ménage après lui-même. Si vous trouvez des fichiers temporaires, portant des noms comme db1.mdb, db2.mdb, etc., dans le même dossier que votre base de données, il s’agit très probablement d’un sous-produit de la fonction de compression.

Ces fichiers résiduels peuvent être un problème. Toute personne ayant accès au dossier a accès aux fichiers temporaires, ce qui constitue une brèche dans la sécurité. Il y a deux façons de protéger votre base de données :

Vérifiez régulièrement et supprimez tous les fichiers temporaires (mais ce n’est pas vraiment une solution pratique ni même efficace).
N’utilisez pas la fonction « Compact On Close ». C’est le meilleur moyen de protéger une base de données contre cette vulnérabilité particulière. Compactez la base de données manuellement. Vous pouvez même former quelqu’un pour le faire.

6 : Cacher des objets – une forme subtile de protection

C’est une bonne idée de masquer les objets (tables, requêtes, formulaires, etc.) aux utilisateurs. Cela ne protège pas ces objets au sens traditionnel du terme, car si l’utilisateur peut les trouver, il peut les modifier. Cependant, si l’utilisateur ne sait pas que les objets existent, il y a de fortes chances que l’objet soit suffisamment protégé contre les utilisateurs qui ne souhaitent pas casser la base de données ou voler des données. Le fait de cacher les objets les met simplement à l’abri des erreurs qu’un utilisateur honnête pourrait commettre, sans malice ni intention. Pour masquer un objet dans la fenêtre Base de données (ou le volet de navigation), cliquez dessus avec le bouton droit de la souris et choisissez Propriétés. Ensuite, cochez l’option Attribut caché.

Maintenant, permettez-moi d’insister une fois de plus (pour vous éviter de vous plaindre) sur le fait qu’une personne qui comprend Access peut dé-cacher ces objets aussi facilement que vous pouvez les cacher. Pour afficher tous les objets cachés, il suffit de choisir Options dans le menu Outils, de cliquer sur l’onglet Affichage, puis de sélectionner l’option Objets cachés dans la section Afficher. (Si vous sélectionnez l’attribut Masqué d’un objet, mais que la fenêtre Base de données le répertorie toujours, l’option Objets masqués est probablement sélectionnée). Dans Access 2007, cliquez avec le bouton droit de la souris sur la barre de menu du volet de navigation, sélectionnez Options de navigation, sélectionnez Afficher les objets cachés, puis cliquez sur OK.

Comme vous pouvez le constater, le fait de cacher un objet ne le sécurise pas ; il le met simplement hors de vue (et hors de l’esprit). Si vous utilisez cette technique, n’oubliez pas que les modules cachés sont toujours visibles dans l’éditeur Visual Basic (VBE). En outre, pensez à ne cacher que les objets les plus importants. Un utilisateur fouineur qui trouve une fenêtre de base de données vide est susceptible de chercher. Vous ne pouvez pas importer des objets masqués, ce qui peut être problématique si le processus d’importation est légitime.

Vous pouvez programmer le masquage d’un objet à l’aide d’un code VBA, comme suit

CurrentDb.TableDefs(tablename).Attributes = dbHiddenObject
Dans les versions plus anciennes (jusqu’en 2000), l’attribution de l’attribut caché à une table par le biais d’un code est problématique car Access marque la table comme temporaire. Ensuite, lors du prochain compactage, Access la supprime, ainsi que vos données ! Évitez cette option si vous travaillez avec une version antérieure.

7 : Utilisez la gestion des erreurs pour protéger le code

Lorsque le code génère une erreur, VBA affiche un message d’erreur. Si un utilisateur obtient ce formulaire et clique sur Debug, il regardera droit dans le cœur de votre application – le module qui contient le code générateur d’erreurs dans le VBE. À ce stade, l’utilisateur a un accès complet à votre code. Il est fort probable qu’il ne saura pas quoi faire et qu’il vous appellera à l’aide. D’un autre côté, dans la panique (ou avec un peu de malice), l’utilisateur pourrait effacer tout votre code.
Les utilisateurs peuvent accéder à votre code en cliquant sur Debug.
Pendant la phase de développement, la possibilité d’accéder rapidement au code est un gain de temps. Dans une base de données de production, c’est un désastre qui risque de se produire. En guise de bonne pratique, toutes les procédures devraient avoir un certain niveau de gestion des erreurs pour empêcher le message générique et son bouton Debug.

8 : Protégez la base de données par un mot de passe

Un mot de passe, c’est comme un code secret : sans lui, vous ne pouvez pas accéder à la base de données. Une fois que vous avez protégé une base de données par un mot de passe, tout utilisateur qui souhaite y accéder doit connaître ce mot de passe. Il existe des produits tiers capables de craquer une base de données protégée par mot de passe. Cette protection n’est donc pas infaillible, mais elle constitue néanmoins un outil adéquat. Pour protéger une base de données par un mot de passe, procédez comme suit :

Ouvrez la base de données en mode exclusif en choisissant Ouvrir exclusif dans la boîte de dialogue Ouvrir.
Choisissez Sécurité dans le menu Outils, puis sélectionnez Définir le mot de passe de la base de données.
Saisissez le mot de passe deux fois.
Ouvrez la base de données en mode exclusif pour la protéger par un mot de passe.
Le propriétaire de la base de données peut supprimer le mot de passe comme suit :

Ouvrez la base de données en mode exclusif.
Choisissez Sécurité dans le menu Outils et sélectionnez Supprimer le mot de passe de la base de données.
Saisissez le mot de passe.
Cliquez sur OK.
Vous pouvez également protéger vos modules VBA (code) par un mot de passe comme suit :

Choisissez Propriétés du projet dans le menu Outils (dans le VBE).
Cliquez sur l’onglet Protection.
Cochez l’option Lock Project For Viewing.
Remplissez les deux champs de mot de passe (en utilisant le même mot de passe, bien sûr).
Cliquez sur OK.
La protection par mot de passe est préférable à l’absence totale de mot de passe, mais elle n’arrêtera pas quelqu’un qui dispose des bons outils et d’un peu de temps.

9 : Convertir au format mde ou accde

Access offre une fonction de sécurité sous la forme d’un format de fichier : mde et accde (dans Access 2007). Ce format est une version de la base de données à exécuter uniquement. Cela signifie que les utilisateurs n’ont pas accès au code via le VBE et qu’ils ne peuvent pas modifier la conception des objets. Ce format protège la validité de votre conception (en grande partie), mais il ne protège pas les données. (Veillez à conserver une copie du fichier mdb/accdb original pour les mises à jour et autres modifications).

Ce format a ses problèmes, comme vous pouvez le soupçonner :

Utilisez ce format pour le frontal d’une base de données fractionnée. Ne l’utilisez pas pour sécuriser le backend ou une base de données autonome. Si vous le faites, vous devrez transférer toutes les données dans une nouvelle base de données à chaque fois que vous mettrez à jour le front-end.
Ce format ne protège pas les tables, les requêtes, les macros, les relations, les propriétés de la base de données ou les options de démarrage. <grognement>
Pour convertir une base de données frontale au format mde ou accde, procédez comme suit :

Dans Access XP et les versions antérieures, choisissez Utilitaires de base de données dans le menu Outils, puis sélectionnez Créer un fichier MDE. Dans Access 2007, cliquez sur Créer un fichier ACCDE dans le groupe Outils de base de données de l’onglet Outils de base de données. (Vous ne pouvez pas convertir le format Access 2000 ou antérieur).
Dans la boîte de dialogue résultante, indiquez un dossier et un nom pour la nouvelle base de données, puis cliquez sur Enregistrer.

10 : Protégez le système par un mot de passe

Vous ne pouvez pas vous attendre à ce que les utilisateurs ne quittent jamais leur système. Et tant que le système n’est pas surveillé, votre base de données est vulnérable – surtout si les utilisateurs ont tendance à laisser la base de données ouverte pendant les pauses, le déjeuner, etc. Vous pouvez définir des règles, mais les utilisateurs oublient.

 

630 Comments

Leave a Reply