3 votes

audit des changements de fichiers (notamment pour les web.configs)

Il arrive que des configurations dans les web.config(s) soient modifiées par l'équipe informatique sur des serveurs de production en direct. J'aimerais créer une piste d'audit, par exemple : "Le 11 octobre, la propriété "foo" du fichier "bar" a été remplacée par "banana".

Ma première idée était de créer un script PowerShell qui s'exécuterait toutes les heures, et si l'un des fichiers .config était modifié, le sauvegarderait dans un dossier horodaté. Ma deuxième pensée était que ce doit être un problème qui a déjà été résolu.

Idéalement, les modifications du fichier de configuration ne seraient pas autorisées et tout changement nécessiterait un nouveau déploiement, mais il est peu probable que je puisse faire passer cela.

Je dis "web.config" mais j'ai plusieurs fichiers de configuration xml différents : web.config, app.config, nant.configs.

J'ai besoin de savoir exactement ce qui, dans ces fichiers de configuration, a été modifié (approximativement) quand et (idéalement) par qui.

Existe-t-il un moyen standard ou un outil open source permettant d'enregistrer les modifications de fichiers ?

0 votes

Je ne réponds pas parce que je ne sais pas ce que l'équivalent Windows pourrait être, mais la inotify serait équivalent à ce que vous voudriez sous Linux. Tout ce que vous auriez à faire serait de brancher inotify pour les événements de changement de fichiers au sein d'une hiérarchie de répertoires donnée, puis faire en sorte que les gestionnaires appliquent le contrôle de version à ces fichiers (par ex. git add <file> , git commit -m <information> , git push origin master ).

0 votes

Je parie que vous pourriez également faire en sorte qu'un système de gestion de configuration (sans agent) comme Salt ou Puppet vous alerte sur le contenu inattendu des fichiers de configuration, bien que ce soit une chose légèrement différente. Salt serait probablement mieux adapté à ce que vous voulez, car il est plus extensible et serait mieux à même de gérer le contrôle de version des fichiers. Cependant, encore une fois, je n'ai pas essayé de le faire et je ne sais pas quels sont les problèmes inhérents.

0 votes

Question complémentaire, cependant... Est-ce que ça t'intéresserait que la chose utilise l'interrogation sur un intervalle, ou un modèle basé sur les interruptions ? Je suppose que si vous avez besoin d'interruptions, c'est une question plus spécifique.

0voto

Todd Points 2342

Comme mentionné dans les commentaires, il existe très probablement des outils tiers qui pourraient être utiles ici. Il n'y a rien d'intégré à Windows qui vous permette de faire cela directement.

Si je devais le faire moi-même, je ferais quelque chose comme ça :

Écrire un petit outil pour surveiller les fichiers à surveiller. Ceci utiliserait un objet FileSystemWatcher. Sur les lecteurs NTFS, toute modification d'un fichier à surveiller déclencherait automatiquement un événement.

Le code de l'événement copierait simplement le fichier vers un emplacement différent qui est sous contrôle de source (disons Git) et déclencherait un commit et éventuellement un push vers un serveur distant.

En utilisant ceci, vous pouvez voir ce qui a exactement changé dans le fichier.

En outre, vous pouvez activer l'audit de Windows sur les fichiers pour voir qui a effectué les modifications.

Je n'écrirais pas l'outil dans PowerShell, mais comme un service Windows qui fonctionne en arrière-plan et surveille les changements en temps réel.

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