Gestion droits d'accès application vb.net

dixigold Messages postés 22 Date d'inscription mardi 20 mars 2007 Statut Membre Dernière intervention 6 mai 2011 - 5 mai 2011 à 16:43
dixigold Messages postés 22 Date d'inscription mardi 20 mars 2007 Statut Membre Dernière intervention 6 mai 2011 - 6 mai 2011 à 14:42
Bonjour à tous et à toutes,

Je développe actuellement une application en vb.net sous visual basic 2010 express. Pour terminer cette application j'aurais besoin de vos conseils pour réaliser une gestion de droits efficace.

Je m'explique, l'application communique avec une base de données MySql et je souhaiterais restreindre l'accès pour certains utilisateurs à des formulaires, boutons, enregistrements des DataGridview etc.

Est-il préférable d'effectuer une gestion des droits directement sur la base de données MySql (GRANT...) ou directement dans le code source de l'application?

J'avais pensé à créer une table 'droit' mais je butte un peu sur son intégration dans la base

Merci d'avance pour vos réponses

4 réponses

Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
6 mai 2011 à 13:27
Salut,

Personnellement, pour plus de sécurité j'opterais pour restreindre les droits d'accès niveau serveur. Cela va de soit.

Une application peut aisément se modifier, surtout en .net. On peut aussi modifier les valeurs en mémoire donc masquer les contrôles ne garanti pas une sécurité accrue.

D'un autre coté si tu souhaites que ton application puisse permettre de gérer les comptes et leurs droits cela demandera un peu plus de boulot. Tu n'auras pas à créer de tables "users" ou autres, mais simplement à envoyer des requêtes de création de comptes utilisateurs comme le fait MySQL Administrator ou PHPMyAdmin Aussi il te faudra gérer les Erreurs d'accès SQL au sein de ton application pour ceux qui tenteront d'accéder au fonctionnalités dont ils n'ont pas les droits. Remplacer les message d'erreur du serveur par des messages plus compréhensibles pour les utilisateurs.

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
dixigold Messages postés 22 Date d'inscription mardi 20 mars 2007 Statut Membre Dernière intervention 6 mai 2011
6 mai 2011 à 13:57
Merci pour tes conseils Mayzz.

Je pense que je vais faire une gestion de droit d'accès au niveau de la base MySql alors.

Vu que les utilisateurs proviennent d'un ActiveDirectory et qu'ils sont nombreux je pense plutôt créer des 'types d'utilisateurs' avec des droits associés(par exemple: utilisateur lecteur qui n'a droit qu'à des SELECT etc.) et je specifierai ensuite que l'utilisateur est de tel ou tel type...

Par contre, je me demande encore comment faire cette attribution de type...une idée?

Oui j'avais penser aux remplacements des messages d'erreurs
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
6 mai 2011 à 14:18
Pour la gestion des droits il te suffit déjà de déterminer quels droits vers quelles tables. Sachant que tu peux théoriquement interdire la lecture, l'écriture ou les deux. Après je me pose la question n'étant pas un adepte de MySQL de savoir si cela est possible au niveau "table" et non au niveau "base" ? Pour cela je pense que tu devrait poser la question sur sqlfr mais si tu obtient une réponse cela serait sympa de faire suivre ce topique fort intéressant en y postant au moins le lien

Je pense quand même qu'il y a une forte probabilité d'une réponse positive car les serveur de données sont très évolués de nos jours. Aussi il faudra regarder dans la doc MySQL pour les requêtes de gestion (Création et modification d'utilisateurs).

Tu peux aussi opter pour des rôles. Par exemple pour un logiciel de gestion d'entreprise tu peux définir des rôles tels que le rôle "Admin" aura accès à toutes les tables, le rôle "comptable" aura accès aux tables "factures" et "commandes" tandis que le rôle "Commercial" aura accès aux tables "produits", "clients" et "fournisseurs"... C'est un exemple bien entendu. Avec les rôles tes comptes sont prédéfinis. Je pense que comme sous SQL Serveur il est possible de gérer les rôles et les comptes utilisateurs via des requêtes SQL mais cela reste à vérifier.

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
dixigold Messages postés 22 Date d'inscription mardi 20 mars 2007 Statut Membre Dernière intervention 6 mai 2011
6 mai 2011 à 14:42
Oui oui c'est tout a fait possible de donner des privilèges au niveau base, table et même au niveau champ dans MySQL lors de la création d'un utilisateur.

Oui voilà comme dans ton exemple c'est ce que je voulais faire en spécifiant des types d'utilisateur.

Et je pense que je vais créer un formulaire listant tous les utilisateurs de l'AD et seul l'admin pourra choisir le type d'utilisateur associé. J'insérerai alors dans une table 'utilisateur' du type:

id | utilisateur |type_utilisateur
1 toto comptable
2 tata responsable_achat
3 titi directeur

Ensuite lors de la connexion de l'utilisateur toto les permissions de l'utilisateur comptable lui sera accordé tout au long de sa session.

En tout cas merci pour ta réactivité et tes bons conseils.
0
Rejoignez-nous