Instantanee și derivă
Orice alt instrument vă spune cum arată o mașină acum. Întrebarea pe care o are de fapt un administrator este ce este diferit față de când funcționa - iar pe un Windows obișnuit nimic nu o răspunde.
Ce conține un instantaneu
Toată mașina la un moment dat: fiecare serviciu și driver, cu tipul de pornire, contul, calea de lansare și argumentele, hash-ul și semnatarul fișierului pe care îl rulează, dependențele și ce depinde de el, declanșatoarele, privilegiile necesare, tipul SID și descriptorul de securitate - plus numele mașinii, contul care l-a făcut și dacă acel cont era administrator.
bws snapshot create before.json --note "before the patch"
Este JSON cu un câmp pe rând. Este deliberat: un instantaneu poate intra într-un depozit și git diff îl citește, deci comparația proprie a instrumentului nu este singura cale de a privi unul.
Arhivați-l ca ceea ce este. Un instantaneu descrie toată mașina, până la fiecare cale de lansare și fiecare descriptor de securitate. Este scris cu permisiunile pe care directorul său le are deja, iar instrumentul nu restrânge nimic - deci un director pe care îl pot citi alte persoane este unul în care ele pot citi toate acestea.
Apoi întrebați ce este diferit
$ bws snapshot diff before.json --live --exit-code
Changed (2):
Spooler Print Spooler
startType: Manual -> Automatic
status: Stopped -> Running (running state, not configuration)
wlidsvc Microsoft Account Sign-in Assistant
status: Stopped -> Running (running state, not configuration)
Added 0, removed 0, changed 2. Fields differing: 1 in configuration, 2 in running state.
- Configurația și starea de rulare sunt raportate separat. Două instantanee făcute la o zi distanță diferă prin ce se întâmplă să ruleze și aproape nimic din asta nu este derivă. Amestecat, singurul rând care contează - un tip de pornire pe care cineva l-a schimbat - este îngropat sub patruzeci care nu contează.
- Ce n-a putut fi comparat este listat, nu ascuns. Un câmp pe care unul dintre cele două instantanee nu l-a citit niciodată, pentru că acea sesiune nu avea drepturi asupra lui, iese ca not compared sub intrarea lui, iar rezumatul numără acele intrări. Deci o comparație care spune nimic nu s-a schimbat înseamnă că nimic nu s-a schimbat în ceea ce vedeau ambele părți.
- Un instantaneu cu drepturi ridicate comparat cu unul fără ar minți, raportând ca eliminate intrări pe care nimeni nu le-a eliminat. Fiecare fișier consemnează dacă contul care l-a făcut era administrator, iar comparația spune asta.
- Două fișiere, nu doar un fișier și această mașină. Faceți unul pe mediul de testare și unul pe producție și comparați-le oriunde - răspunsul la de ce diferă mediul de testare nu are nevoie de niciuna dintre mașini.
Fereastra face același lucru la Audit.... Take snapshot... scrie același fișier, cu o notă dacă tastați una, iar Compare with this machine... sau Compare two snapshots... arată ce s-a schimbat în locul listei, un rând pe câmp, cu tot ce face comparația mai puțin decât exactă spus deasupra tabelului. Show o restrânge la diferențe sau la un singur câmp, iar Export... o scrie într-un fișier CSV.
Codul de ieșire este esența
--exit-code se încheie cu 5 când configurația diferă - o intrare adăugată sau eliminată ori una configurată altfel. Un serviciu care doar s-a oprit sau a pornit singur este raportat și nu contează, iar nici copiile pe utilizator pe care Windows le face pentru fiecare sesiune autentificată nu contează: acestea sunt omise și numărate. Nu este un eșec - deriva este ceea ce acest instrument există să găsească, iar găsirea ei nu este un eșec - de aceea are un număr propriu, în loc să-l împrumute pe cel care înseamnă că ceva a mers prost.
# ziua în care mașina intră în serviciu
bws snapshot create C:\baselines\web01.json --note "after the build"
# în fiecare noapte, dintr-o sarcină programată
bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
# 0 - nicio derivă de configurație
# 5 - configurația a derivat, iar drift.json spune ce
# 3 - a rulat și n-a putut citi totul, deci răspunsul este parțial
Acesta este întregul mecanism: o stare de referință luată când mașina era bună și o întrebare pusă în fiecare noapte. În prima noapte în care răspunde 5, cineva află chiar în acea noapte, și nu în dimineața în care se strică ceva.