Golang, monitorer les accès fichiers

a marqué ce sujet comme résolu.

Bonjour à vous,

Je travaille sur une application côté serveur, réalisé en Go et exécuté sur Windows.

Dans l’idée d’apporter une couche de sécurité à mon application, j’aimerais bien pouvoir monitorer les accès lecture/écriture que mon application effectue sur les fichiers. Donc de les loggués, et éventuellement de les interdire. L’idée étant d’avoir une interface de configuration ou je peux indiquer les dossiers accessible en lecture et les dossiers accessible en lecture/écriture.

Ma première idée serait de créer une fonction qui wrap les méthodes type os.Open, ainsi je peux loggué et éventuellement restreindre les accès.

Cependant, le principal inconvénient de cette méthode, c’est que dans mon code, tous les appels au méthode type os.Open devront être remplacé par ma méthode, y compris dans tous mes submodules. Avec l’inconvénient que tous les packages externe ne seront pas pris en charge par ça.

L’idéal serait d’avoir un Hook ou de pouvoir override les méthodes de la lib standard. Je n’ai malheureusement pas trouvé grand chose d’intéressant jusqu’ici.

Auriez-vous une idée ou une meilleure suggestion pour effectuer ceci?

Si tu es sous Linux:

  • Il y a bien l’API inotify mais il n’est pas propre à un processus spécifique je crois. Je ne suis même pas sûr que tu auras l’information de quel processus crée un fichier / dossier.
  • Sinon, tu as eBPF qui permettraient de faire ça. C’est vraiment complexe juste pour ce que tu souhaites faire mais pourquoi pas.
+0 -0

Merci,
Alors je suis sur Windows et l’application a pour but de tourner majoritairement sur du Windows Server.

Pour Linux, il y aurait eu l’option du landlock à ce que j’ai pu trouver, mais je n’ai rien vu de similaire pour Windows.

Et effectivement, ePBF a l’air d’être bien complexe par rapport à mon besoin. (Et s’oriente plus sur le logging que le blocage pur et simple des accès fichiers).

C’est pour cette raison que si ça pouvait être géré au niveau du langage dans mon application, ça me simplifiera grandement la main et me laissera également une plus grande flexibilité.

Je t’aurais bien proposer un monkey patch mais c’est difficile sur des méthodes avec des paramètres comme os.Open.

Je ne vois pas de solution à part jouer avec l’exécutable généré après la compilation.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte