Macro de sécurité

havopti

XLDnaute Nouveau
Salut a tous

Afin de protéger un fichier sensible de ma boite j'ai du créer une macro de sécurité.
Problème se fichier est utilisé par tous, le but est qu'il ne soit pas possible de l'utiliser en dehors de la boite sans le perdre ( ou sans connexion au serveur de la boite, le fichier ayant déjà été voler par un stagiaire )

Donc j'ai créer une macro sur se classeur qui vérifie l’accès en testant la présence d'un ficher caché sur le disque dur même des ordinateurs de la boite ou sur le serveur commun afin de pouvoir travailler chez soi tout en étant connecté.
Si le fichier n'est pas trouvé la macro supprime tous les onglets, enregistre et ferme automatiquement le classeur.

Et c'est la que la bas blesse, le fichier qui est sur le disque commun et donc susceptible d’être voler est en lecture seule ( afin de ne pas sauvegarder les éventuelles fausses manip ), donc en cas de vol la macro s’exécute mais ne peux pas enregistrer les suppression d'onglets.
le fichier et la macro sont joints
 

Pièces jointes

  • Macro sécu.xlsm
    13.8 KB · Affichages: 63
Dernière édition:

Orodreth

XLDnaute Impliqué
Re : Macro de sécurité

Bonjour,

Je sais pas trop comment gérer ces aspects sur Excel, surtout en "sortie".

J'aurais plus tendance à gérer l'entrée, en testant une valeur sur une connexion à une base de données par exemple.
Auquel cas, l'appli reconstruit les onglets, puis vient charger les données depuis la base.

Avec les codes un peu spéciaux qui permettent de manipuler VBA/VBE depuis VBA justement, tu peux arriver à faire un truc du genre:
Si je trouve telle valeur/telle base de données (= Si j'ai l'accès autorisé)
==> Je construis mon tableau et mes données
Si je ne trouve pas telle valeur/telle base de données (= Si je n'ai pas l'accès autorisé)
==> Je supprime données/tableaux/codes sources.

Et au final, tu te retrouves avec un fichier vierge, qui n'a plus aucun code.

Ca peut être une piste possible, peut-être :/

Cordialement,
Orodreth
 

GeoTrouvePas

XLDnaute Impliqué
Re : Macro de sécurité

Bonjour havopti, Orodreth,

Tout d'abord une petite mise en garde : Sécurité de données sensibles et Excel vont rarement de paire.....
La sécurité proposée par notre tableau préféré est en effet facilement contournable pour qui sait bidouiller un minimum.

La solution proposée par Orodreth me paraît être tout à fait pertinente et efficace. Tu pourrais transformer ton fichier actuel en une simple interface qui importerait les données sensibles contenues dans un autre fichier (et dont l'utilisateur ne connaîtrait pas le chemin).

Si tu veux simplement contourner ton problème de lecture seul, tu pourrais utiliser l'évènement BeforeSave :
- Tu enlèves la protection "lecture seule" actuellement en place
- Tu places ce code dans ton classeur :
Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    If ThisWorkbook.FullName = "Le chemin de ton serveur" Then Cancel = True
End Sub

Ainsi, si ton fichier est à son emplacement "normal" sur ton serveur, alors il ne peut pas être enregistré (donc équivalent à l'option "lecture seule"). Si par contre il a été déplacé (sur la clef usb d'un vilain méchant stagiaire par exemple) ta macro d'auto destruction pourra fonctionner.
 
Dernière édition:

Orodreth

XLDnaute Impliqué
Re : Macro de sécurité

Bonjour,

Ce n'est pas tant une question de supériorité.

Comme l'a dit GeoTrouvePas, Excel et données sensibles/codes propriétaires ne font pas bon ménage, parce que les protections classiques d'Excel sont facilement bypassables.

Ce qui implique des usines à gaz dans Excel juste pour gérer cette sécurité, et dans ton cas, gérer la suppression des feuilles (et peut-être des codes).
Ca alourdit un peu le classeur, pas des masses, mais sur des classeurs volumineux, ça peut jouer un peu en terme de temps de traitement.

A l'inverse, quand tu récupères des données depuis un serveur, tu délègues les calculs principaux (requêtes et filtres) au serveur qui, lui, est fait pour ça: il a une puissance de calcul monstrueuse par rapport à un poste utilisateur, et peut parfaitement supporter une charge au niveau processeur.
Du coup, sur Excel, tu te retrouves avec un classeur qui ne contient que les données que tu dois manipuler, et non pas l'ensemble de la base de données = beaucoup plus léger / moins de données sensibles à effacer / etc ...

La solution en soi n'est pas mieux, elle est différente, et répond à un autre axe de la sécurité informatique.

Maintenant, pour ta problématique pur et dur, le BeforeSave de Geo est magnifique.

Cordialement,
Orodreth
 

Staple1600

XLDnaute Barbatruc
Re : Macro de sécurité

Bonsoir La Compagnie Cellulaire

Si je ne m'abuse, il suffit d'ouvrir le classeur sans activer les macros, d'aller dans VBE de mettre le code VBA dédié à la "sécurité" en commentaires pour disposer de ton fichier.

A part si tu travailles pour la Défense, pour la Nasa, ou pour le Centre, tes données sont-elles à ce point stratégiques ?

Je plussoie aux propos précédents : Excel et la sécurité ne font pas bon ménage tels quels.
 
Dernière édition:

Orodreth

XLDnaute Impliqué
Re : Macro de sécurité

(Re,

Juste pour l'information, il y a quelques années, 9 attaques sur 10 passaient les serveurs de la CIA.
Niveau sécurité, je crois qu'ils avaient fait exprès de laisser passer, mais par contre, niveau traçage, ils sont au top: localisation précise (5m près je crois) partout dans le monde, avec intervention dans les 10 minutes.

Histoire de rebondir sur le "sinon un simple stagiaire ne serait pas parti avec" pour l'anecdote ;) )
 

GeoTrouvePas

XLDnaute Impliqué
Re : Macro de sécurité

Bonjour havopti, Orodreth et Stapple,

il suffit d'ouvrir le classeur sans activer les macros, d'aller dans VBE de mettre le code VBA dédié à la "sécurité" en commentaires pour disposer de ton fichier.

Pour contrer cette possibilité, il faut forcer l'utilisateur à activer les macros. Pour cela, tu peux procéder comme ceci :
- Masquer toutes les feuilles de ton classeur à l'exception d'une feuille vierge contenant simplement le message "l'activation des macros est obligatoire pour utiliser ce classeur"
- Tu réalises une première macro qui, lors de l'ouverture du classeur, affiche toutes les feuilles masquées.
- Tu réalises une seconde macro qui, lors de la fermeture du classeur, masque toutes les feuilles à l'exception de la feuille d'avertissement.
- Tu verrouilles ton projet Vba avec mot de passe.

Tu trouveras, ci - joint un petit fichier exemple. La seule difficulté sera de gérer l'enregistrement (prohibé ou automatique).

A part si tu travailles pour la Défense, pour la Nasa, ou pour le Centre, tes données sont-elles à ce point stratégiques ?

Pas besoin de travailler à la NASA pour détenir des données stratégiques. N'importe quelle T.P.E. possède un fichier client (ou fournisseur), des données comptables, de recettes de fabrication, des plannings de lancements commerciaux etc... Aussi banale soit elle, n'importe quelle données d'entreprise doit être un minimum protégée.

Voici Un article intéressant que tu devrais faire suivre à ton stagiaire ! :)


Bonne journée
 

Pièces jointes

  • Démo macro obligatoire.xls
    26 KB · Affichages: 53

Orodreth

XLDnaute Impliqué
Re : Macro de sécurité

Re,

@GeoTrouvePas
Pour contrer cette possibilité, il faut forcer l'utilisateur à activer les macros. Pour cela, tu peux procéder comme ceci :
- Masquer toutes les feuilles de ton classeur à l'exception d'une feuille vierge contenant simplement le message "l'activation des macros est obligatoire pour utiliser ce classeur"
- Tu réalises une première macro qui, lors de l'ouverture du classeur, affiche toutes les feuilles masquées.
- Tu réalises une seconde macro qui, lors de la fermeture du classeur, masque toutes les feuilles à l'exception de la feuille d'avertissement.
- Tu verrouilles ton projet Vba avec mot de passe.
L'idée est bonne en soi, mais il y a quand même moyen de contourner, non ?
Je pense notamment aux méthodes qui permettent de travailler sur des classeurs fermés:
Lire et crire dans les classeurs Excel ferms

En étant un peu bidouilleur, il est tout à fait faisable de récupérer les feuilles, même si elles sont masquées.
Le code, c'est autre chose (quoi que je pense faisable aussi, mais avec plus de difficultés).

Cordialement,
Orodreth
 

GeoTrouvePas

XLDnaute Impliqué
Re : Macro de sécurité

L'idée est bonne en soi, mais il y a quand même moyen de contourner, non ?
Je pense notamment aux méthodes qui permettent de travailler sur des classeurs fermés:
Lire et crire dans les classeurs Excel ferms

Effectivement.
J'avais développé cette méthode pour forcer l'utilisateur à activer les macros mais pas du une optique de sécurité.
Je réalise au passage que l'utilisation de l’événement BeforeSave est totalement stérile puisqu'un simple copier coller est encore faisable.
 

Staple1600

XLDnaute Barbatruc
Re : Macro de sécurité [Résolu]

Bonjour à tous

- Tu verrouilles ton projet Vba avec mot de passe.
Sauf qu'avec Excel, ce verrou est en guimauve.
Donc on revient au point de départ.
On supprime le verrou puis on inhibe le code VBA dédié à la "sécurité".

Il faut sortir l'artillerie lourde (ou tierce) pour sécuriser une appli Excel.

Une piste pour ceux qui peuvent* (mettre le code VBA dans une DLL)

*: c-a-d qui possèdent les outils adéquats
 

havopti

XLDnaute Nouveau
Re : Macro de sécurité [Résolu]

je viens de me repencher sur cette macro et je viens de me rendre compte d'un problème

la solution de geotrouvepas qui semblait parfaitement s'adapter a mon problème me bloque finalement

avec le code

Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    If ThisWorkbook.FullName = "Le chemin de ton serveur" Then Cancel = True
End Sub

il est bien impossible de sauvegarder se fichier mais je suis aussi dans l'impossibilité de créer une copie manuellement ou automatiquement de celui ci (via enregistrer sous) afin de sauver le travail effectué dessus par les utilisateurs et c’était le but de ma manœuvre.
 
Dernière édition:

Discussions similaires

Réponses
13
Affichages
338

Statistiques des forums

Discussions
312 362
Messages
2 087 635
Membres
103 618
dernier inscrit
Eraser