IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Sécurité Discussion :

Verrouiller la porte de derrière


Sujet :

Sécurité

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Formateur
    Inscrit en
    Novembre 2014
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Formateur

    Informations forums :
    Inscription : Novembre 2014
    Messages : 59
    Points : 31
    Points
    31
    Par défaut Verrouiller la porte de derrière
    Bonjour à tous,

    J'ai écrit une application pour gérer une base de donnée;
    cette base est accessible à plusieurs utilisateurs avec des niveaux différents (consultation, modification, création) par le biais d'une base frontale est d'une interface conviviale avec mot passe.
    l'appli est installée sur chaque poste grâce a un package d'installation comprenant la base frontale, l'icône de lancement de l'appli et le runtime access 2010.
    Et ça marche parfaitement bien (j'me la pète un peu là! )

    La sécurité frontale est donc assurée mais je voudrais maintenant savoir s'il est possible de verrouiller la porte du jardin?
    La base dorsale (principale) est hébergée sur un serveur/disque partagé et bien sûr les utilisateurs doivent avoir l'accès à ce répertoire (accès ouvert pas le service informatique de l'entreprise sur ma demande) pour pouvoir utiliser l'appli. qui est installée individuellement après l'ouverture des droits d'accès au répertoire.

    Dans l'absolu ce n’est pas un problème puisque l'utilisateur ne connait pas le chemin d'accès à cette base et que celui-ci est totalement invisible pour lui lorsqu'il se sert de l'appli mais il n'en reste pas moins qu'en "fouillant" un peu directement dans les répertoires du serveur il peut avoir accès à cette base "sensibles" avec les risque que cela comporte (modifications ou effacements accidentels... ou non).

    Ma question est: Y-a-t-il moyen de faire en sorte de verrouiller cet accès direct par le serveur tout en conservant les accès par l'appli installés sur les postes utilisateur?

    J'ai essayé de mettre un mot de passe sur le fichier de la base dorsale mais du coup ça plante l'application et la rend inutilisable...

    Merci de vos réponses.
    cordialement

  2. #2
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    789
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 789
    Points : 1 266
    Points
    1 266
    Par défaut
    Bonjour,

    En ouvrnat ta dorsale en mode exclusif, tu peux lui attribuer un mot de passe.

    Ensuite, à l'ouverture de ta frontale, tu lances un code qui redéfini les chemin d'accès à ta dorsale en prenant en compte le mot de passe.
    L'avantage de ce code est que si ta dorsale est amenée à évoluer (ajout suppression de table) la liaison remettra en conformité les liens.
    De ce fait, cela est transparent pour les utilisateurs.

    Si je ne me trompe, tu as un exemple dana la FAQ. Je me sers de ce principe depuis des années et cela fonctionne très bien.
    Cordialement

    Christophe

    N'oubliez pas de mettre pour en faire profiter tout le monde.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Formateur
    Inscrit en
    Novembre 2014
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Formateur

    Informations forums :
    Inscription : Novembre 2014
    Messages : 59
    Points : 31
    Points
    31
    Par défaut
    Bonjour,

    C’est effectivement ce que j’ai fait aussi bien pour le mot de passe sur la dorsale que pour aller fouiller sur le FAQ où j’ai effectivement trouvé des discussions intéressantes sur le sujet en particulier celle-ci:

    http://www.developpez.net/forums/d12...rotegee-passe/

    Où tu proposes ton code et c’est une bénédiction que ce soit justement toi qui me réponde aujourd’hui car mon problème c’est que je ne suis pas très familier avec les "Public Sub" et que je ne sais pas trop quoi en faire ni où écrire (copier) ce code:

    -Sur la propriété d'ouverture de mon écran d'accueil?
    -Dans un module à part et dans ce cas faut-il appeler ce code dans chaque formulaire?
    -Autre chose que mon maigre savoir ne peut même pas concevoir?

    Peux m’apporter des précisions ? En attendant ta réponse je vais y aller par tâtonnement j’aurais peut-être la même chance que celle qui t’a fait répondre à cette conversation !

    Merci encore
    Ange

  4. #4
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    789
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 789
    Points : 1 266
    Points
    1 266
    Par défaut
    Bonjour Angelinu,

    Voici donc une solution de travail. Cela dit, je n'ai aucun mérite car je suis sur d'avoir trouvé ce code dans la FAQ ou une discussion.

    Actives la référence DAO et colles le code suivant dans un module.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    Private Sub DeleteODBCTableNames()
    'Supprime tout les tables attachées de la frontale
     
    On Error GoTo Err
     
        Dim dbs As Database, tdf As TableDef, I As Integer
        Set dbs = CurrentDb
        'Parcours de toutes les tables en commençant par la fin
        For I = dbs.TableDefs.Count - 1 To 0 Step -1
            'Déclaration de la table trouvée
          Set tdf = dbs.TableDefs(I)
     
          'Si c'est une table liée
          If (tdf.Attributes And dbAttachedTable) Then
            'On la supprime
            dbs.TableDefs.Delete (tdf.Name)
          End If
     
        Next I
        'Fermeture de la base en cours
        dbs.Close
        Set dbs = Nothing
     
    FIn: Exit Sub
     
    Err:
        'Si erreur, on continue
        Resume Next
    End Sub
     
    Function MakeLink(PathDorsale As String) As Boolean
    '// Créer les attaches ACCDB à partir de la dorsale
    On Error GoTo Err
     
    'Supprime toutes les tables liées
    Call DeleteODBCTableNames
     
    DoEvents
     
    Dim SQLDb      As DAO.Database
    Dim dbLocal    As DAO.Workspace
    Dim I          As Long
    Dim tblName    As String
    Dim tdfCurrent As DAO.TableDef
    Dim nbrTable   As Long
    Dim dbOptions As String
    'Mot de passe
    dbOptions = "Ms Access;PWD=TonMotDePasse"
     
    'Connexion à la dorsale
    Set dbLocal = DBEngine.Workspaces(0)
    Set SQLDb = dbLocal.OpenDatabase(PathDorsale, False, False, dbOptions)
     
    'Nombre de tables dans la dorsale
    nbrTable = SQLDb.TableDefs.Count - 1
     
    'Parcours de toutes les tables de la dorsale
    For I = 0 To nbrTable
      'Nom de la table trouvée dans la boucle
      tblName = SQLDb.TableDefs(I).Name
      'Si ce n'est pas une table system
      If Left(tblName, 1) <> "~" And Left(tblName, 4) <> "Msys" Then
     
        'S'il existe déjà une table liée du même nom
         If tblName <> CurrentDb.TableDefs(I).Name Then
            'On la supprime
            CurrentDb.TableDefs.Delete tblName
         End If
         'Création de la table liée
         Set tdfCurrent = CurrentDb.CreateTableDef(tblName, dbAttachSavePWD)
         tdfCurrent.Connect = dbOptions & ";DATABASE=" & PathDorsale
         'Mise à jour de la création
         tdfCurrent.SourceTableName = tblName
         CurrentDb.TableDefs.Append tdfCurrent
      End If
    Next I
     
    'Fermeture de la dorsale
    SQLDb.Close
    dbLocal.Close
    'Retour comme quoi tout s'est bien passée
    MakeLink = True
     
    Fin: Exit Function
     
    Err:
       If Err.Number = 3010 Then 'Objet existe déjà
          Resume Next
       ElseIf Err.Number = 3265 Then
          Resume Next
       Else
          MsgBox "Erreur de connexion"
          MakeLink = False
          Resume Fin
       End If
    End Function
    Créer une table dans la frontale que tu nomme Tbl_Link et ajoute un champ Path de type texte 255 caractères. Si ton chemin de dorsale fait plus de 255 caractères, créer plutôt un chap Mémo. Colle dans le champ Path le chemin la dorsale.

    Comme tu as un formulaire de démarrage, sur chargement tu colles le code suivant :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim strPath as String
    StartMakeLink:
    'Chemin de la dorsale stocké dans une table interne de la frontale
    strPath=DLookup("Path", "Tbl_Link")
    'Connexion à la dorsale et si la connexion n'est pas établie
    If MakeLink(strPath)=False Then
      'Ouverture d'une boite de dialogue pour aller sélectionner la dorsale. Je te laisse chercher le code dans la FAQ.
      'En retour, ce chemin est stocké dans la table interne à la frontale.
      'On relance le code avec le nouveau chemin de manière à effectivement établir la connexion
      GoTo StartMakeLink
    End If
    De plus, il ne faut pas que ton formulaire de démarrage ait comme source une table liée de ta dorsale.

    Voilà, j'espère que cela répond à tes attentes. Auquel cas, j'aurais beaucoup de mal à te repondre la semaine prochaine et ensuite je pars en vacances tous le mois d'août.
    Cordialement

    Christophe

    N'oubliez pas de mettre pour en faire profiter tout le monde.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Formateur
    Inscrit en
    Novembre 2014
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Formateur

    Informations forums :
    Inscription : Novembre 2014
    Messages : 59
    Points : 31
    Points
    31
    Par défaut
    Salut Marsouin,

    Je vais tester ça et je te tiendrais au courant.
    En tout cas avant même le résultat merci encore pour le temps que tu y consacres.

    Bonnes vacances à toi (je pars également pour 3 semaines et demie à la fin de la semaine prochaine)

    à bientôt pour j'espère de bonnes nouvelles!

    Ange

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Formateur
    Inscrit en
    Novembre 2014
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Formateur

    Informations forums :
    Inscription : Novembre 2014
    Messages : 59
    Points : 31
    Points
    31
    Par défaut
    Cher Christophe,

    Qu'est-ce qu'il y a au-dessus de merci???

    Ton aide était précieuse et tes conseils avisés mais en plus fournir un code "clef en main" où je n'ai eu à peu de choses prés qu'à faire 2 malheureux copier/coller pour que ça tourne parfaitement alors là je dis "chapeau bas"!!

    Alors Merci c'est s'en doute trop peu mais c'est du fond du coeur! tu es vraiment le !!

    Passe d'excellente vacances

    discussion close!

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Formateur
    Inscrit en
    Novembre 2014
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Formateur

    Informations forums :
    Inscription : Novembre 2014
    Messages : 59
    Points : 31
    Points
    31
    Par défaut
    Re bonjour Christophe,

    Bon il semble que je me sois un peu enflammé hier et j'ai criais à la résolution de mon problème un peu trop tôt

    La nouvelle version sécurisée logiciel tourne parfaitement sur mon poste mais pas sur celui de mes collègues où après lancement du programme il demande le mot de passe de la base alors qu'il ne devrait pas mais même en entrant ce mot de passe la base ne s'ouvre pas et l'écran reste sur une interface Access vide.

    Quelques élément de réflexion:

    -La base principale (protégée par mot-de-passe) est sur un réseau partagée
    -Le package d'installation comprend l'icône de lancement et le runtime access 2010 (est-ce que ce runtime prend en compte la fonctionnalité mot de passe sur le fichier?)
    -Sur les versions précédentes du logiciel (qui tournaient parfaitement chez mes collègues aussi) après lancement par l'icône ils voyaient plusieurs fenêtre avant d'avoir accès à la l'interface du logiciel dû à l'Installation du runtime.


    je vais bien sûr chercher de mon côté mais si tu as une piste elle est la bienvenue.

    Bien cordialement

    Ange

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Formateur
    Inscrit en
    Novembre 2014
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Formateur

    Informations forums :
    Inscription : Novembre 2014
    Messages : 59
    Points : 31
    Points
    31
    Par défaut
    Bon à défaut d'avoir pourquoi ça déconne j'ai quand même localisé le problème.
    Il semble que le package ne se passe pas correctement et génère le problème car lorsque je lance l'application directement en ouvrant la base frontale tout fonctionne très bien de tous les PC sur lesquels je l'ai installé...
    Je ne sais pas pourquoi, j'ai dû faire une fausse manoeuvre et faisant mon package et je vais regarder ça de plus prés.

    En attendant la solution que tu m'as donné est parfaitement opérationnelle et c'est l'essentiel!!!
    Donc discussion close

    @+
    Ange

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Programmer port derrière routeur NAT TRAVERSAL comme Emule
    Par Steff2 dans le forum Web & réseau
    Réponses: 4
    Dernier message: 04/05/2010, 14h29
  2. webcam : lire sur un port usb en c/c++ ou java. sous win. ?
    Par flo007 dans le forum Choisir un environnement de développement
    Réponses: 2
    Dernier message: 24/05/2002, 23h24
  3. Port parallele
    Par Phoneus dans le forum C
    Réponses: 2
    Dernier message: 05/05/2002, 23h19
  4. [Kylix] Kylix port //
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 01/04/2002, 12h30
  5. [Kylix] Kylix / port serie
    Par Anonymous dans le forum EDI
    Réponses: 3
    Dernier message: 01/04/2002, 12h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo