[Principalmente viés de Linux / Unix, eu não trabalho em sistemas Windows: -)]
Qualquer coisa que, uma vez modificada, altera o estado do sistema em execução precisa ser rastreada. A configuração deve ser armazenada em um repositório que suporte o histórico completo de alterações, por exemplo, Git ou Subversion, e deve ser implementado de maneira automatizada, como com Chef do Opscode ou Puppet dos Reductive Labs .
Alguns exemplos de itens que alteram o estado do sistema:
- Versões de pacote / patch instaladas.
- Aplicativos implantados, bibliotecas de aplicativos.
- Usuários administrativos e de aplicativos.
- Configuração de hardware e drivers / módulos de dispositivo.
- Tarefas de manutenção agendadas (cron no Unix / Linux).
- Serviços e componentes monitorados por ferramentas externas.
Esse acompanhamento precisa ser feito com ferramentas automatizadas que fornecem registro suficiente para alterações de auditoria. Um histórico do repositório de software mostrará, [...] o histórico de mudanças nos arquivos de configuração armazenados no repositório. Em uma ferramenta de configuração declarativa como Chef ou Puppet, cada arquivo de configuração representa um conjunto de recursos, como usuários, pacotes ou serviços, e o histórico do repositório indicará alterações neles.