2 votes

Comment puis-je rendre un Frontend MsAccess et un Backend Mysql plus sensibles aux besoins des utilisateurs ?

J'ai une base de données frontale MsAccess distribuée qui utilise un backend mysql.

Il utilise les connexions ODBC du système Windows DSN pour se connecter au serveur. Toutes mes tables liées font référence à cette connexion ODBC. Le problème, c'est qu'elles utilisent toutes le même nom d'utilisateur et le même mot de passe, qui sont codés en dur sur chaque ordinateur.

Quelle serait la meilleure façon de l'implémenter pour que chaque utilisateur obtienne son propre login.

Étant donné que chaque connexion DSN est "câblée", je ne pense pas que la réécriture du registre à chaque fois que l'application démarre soit un moyen sûr, car dès que l'application s'arrête, les paramètres DSN sont conservés.

Je ne sais pas si je peux laisser le DSN système sans nom d'utilisateur ni mot de passe pour une invite, mais nous nous connectons à quatre bases de données différentes et je ne voudrais pas que l'utilisateur doive entrer ses informations quatre fois, car cela ne ferait que le frustrer.

Je pensais que je pourrais peut-être utiliser l'utilisateur DSN du système en lecture seule pour une table d'utilisateurs, ou peut-être de préférence une procédure qui validerait l'utilisateur, mais une fois validé, je ne sais pas comment je pourrais ensuite me connecter à chaque table. Puis-je stocker une variable globale dans la chaîne de connexion ODBC ?

Quelle est la meilleure façon de rendre MsAccess plus conscient des besoins des utilisateurs ?

(J'ai examiné les paramètres de sécurité de MSACCESS, mais il semble que Microsoft soit en train de les abandonner et ma tentative de les établir me bloque complètement et ne présente aucune forme de validation de connexion. Je suppose qu'il utilise simplement le login widows comme sécurité mais ce n'est pas une vraie solution) Et il y a un disclaimer ici :

Introduction à la sécurité d'Access 2010 (office.microsoft.com)

Accès et sécurité au niveau de l'utilisateur

Access ne prend pas en charge la sécurité au niveau de l'utilisateur pour les bases de données qui sont créées. (fichiers .accdb et .accde). Toutefois, si vous ouvrez une base de données d'une version antérieure d'Access dans Access 2010 et que cette base de données dispose d'une sécurité de niveau utilisateur, ces paramètres fonctionneront toujours. sécurité au niveau de l'utilisateur, ces paramètres fonctionneront toujours.

IMPORTANT Les autorisations créées à l'aide de la fonction de sécurisation au niveau de l'utilisateur peuvent être modifiées en fonction des besoins. ne protègent pas votre base de données contre les utilisateurs malveillants et ne constituent pas une barrière de sécurité. malveillants et ne constituent pas une barrière de sécurité. Il convient d'utiliser cette fonction pour améliorer la facilité d'utilisation d'une base de données pour les utilisateurs de confiance. d'améliorer la convivialité d'une base de données pour les utilisateurs de confiance. de confiance. Pour garantir la sécurité de vos données, n'autorisez que les utilisateurs de confiance à d'accéder à votre fichier de base de données ou aux fichiers de sécurité en utilisant les autorisations du système de fichiers Windows.

I sécurité au niveau de l'utilisateur vers le nouveau format de fichier, Access supprime automatiquement tous les paramètres de sécurité et les règles de sécurisation d'un fichier .accdb. automatiquement tous les paramètres de sécurité, et les règles de sécurisation d'un fichier .accdb ou .accde s'appliquent.

F lorsque vous ouvrez des bases de données au nouveau format de fichier.

1voto

jnthnjns Points 121

Si je comprends bien, vous cherchez à offrir une expérience/un environnement plus personnalisé à vos utilisateurs finaux au sein de l'application ("utilisateurs de l'application") tout en améliorant la sécurité en couplant le processus d'authentification de l'utilisateur avec les informations d'identification de la connexion DSN OBDC ("utilisateur de la base de données").

Cet environnement utilisateur personnalisé est généralement obtenu en demandant à vos utilisateurs finaux de s'authentifier auprès de votre application. Pour ce faire, les utilisateurs doivent saisir un nom d'utilisateur et un mot de passe (qui sont généralement stockés dans un fichier my_app_db.users ) lors du chargement de l'application.

Avant que l'authentification de l'utilisateur de l'application puisse avoir lieu, l'application elle-même (ou la machine) doit établir une connexion avec le serveur de base de données. Cet "utilisateur de la base de données" est typiquement réalisé avec :

  1. Un utilisateur/mot de passe de base de données statique et prédéfini qui est codé en dur dans l'application (et/ou l'installateur script/binaire). Le script d'installation vous demandera alors, en tant qu'administrateur du serveur, les informations d'identification de la base de données avec (entre autres) les paramètres suivants CREATE y GRANT (généralement l'utilisateur root) afin que le programme d'installation puisse créer l'utilisateur de la base de données dont il a besoin.
  2. Un utilisateur de base de données défini par l'utilisateur qui a été précréé avec les autorisations appropriées ; le programme d'installation vous demandera alors de fournir ces informations d'identification, que l'application stockera en utilisant sa propre méthode de cryptage réversible (ou obscurcissement) afin de conserver ces informations d'identification quelque part sur le client (un fichier .dat, une clé de registre, etc.) d'une manière qui peut être lue avant que la connexion à la base de données ne soit établie.

En ce qui concerne la sécurité, la règle du moindre privilège est importante ici : cet utilisateur de la base de données ne doit se voir accorder que le minimum de privilèges nécessaires au bon fonctionnement de l'application (c'est-à-dire SELECT, INSERT, UPDATE, et peut-être DELETE, et uniquement pour la base de données de l'application, jamais pour la ou les bases de données système/maîtresse).

Ceci en combinaison avec no le stockage des informations d'identification de la base de données en texte clair sur les machines des utilisateurs finaux peut contribuer à la protection de votre système de gestion de l'information. application d'un accès non autorisé. Gardez à l'esprit que si un utilisateur malveillant obtient un accès d'administrateur local à une machine sur laquelle votre application a été installée, la partie est pratiquement terminée : il pourrait probablement extraire la chaîne de connexion de la mémoire en la décryptant ou même en l'enregistrant dans une base de données. renifler le trafic MySQL sur l'interface réseau pour obtenir les informations d'identification de l'utilisateur de la base de données et, à ce stade, tout dépend du degré de restriction que vous avez imposé à cet utilisateur (en espérant que MySQL soit régulièrement patché) et du degré de sophistication et de détermination de l'attaquant.

Gardez à l'esprit que de nombreuses applications de base de données utilisent un serveur d'application, essentiellement un "gardien" au milieu qui établit des connexions vers/depuis la base de données pour le compte du client. Cela est généralement fait pour des raisons de performance et d'évolutivité, mais il y a aussi un avantage en termes de sécurité, car le serveur de base de données peut être isolé/restreint au seul serveur d'application et aucun client utilisateur final ne peut y accéder directement.

En ce qui concerne les options DSN ODBC et MySQL, je ne suis pas très au fait de ce qui est disponible. Cependant, il semble qu'il y ait Prise en charge de l'authentification native Windows dans les versions ultérieures de MySQL.

J'ai réussi à utiliser le connecteur MySQL/NET avec des certificats de sécurité en conjonction avec MySQL et une application ASP.NET, mais je ne sais pas si cela s'étend à Microsoft Access ; vous devriez probablement écrire un peu de colle .NET ici.

Et si vous avez besoin de précisions, vous feriez sans doute mieux de vous adresser à Stack Overflow (en anglais) à ce moment-là.

J'espère que cela vous aidera.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X