Momentopnamen en drift
Elk ander hulpmiddel vertelt hoe een machine er nu uitziet. De vraag die een beheerder echt heeft is wat is anders dan toen het werkte - en niets op een gewone Windows beantwoordt die.
Wat een momentopname bevat
De hele machine op één moment: elke service en elk stuurprogramma, met opstarttype, account, opstartpad en argumenten, de hash en de ondertekenaar van het bestand dat het uitvoert, de afhankelijkheden en wat ervan afhangt, de triggers, de vereiste bevoegdheden, het SID-type en de beveiligingsdescriptor - plus de naam van de machine, het account dat hem heeft gemaakt en of dat account een beheerder was.
bws snapshot create before.json --note "before the patch"
Het is JSON met één veld per regel. Dat is bewust: een momentopname kan in een repository en git diff leest hem, dus de eigen vergelijking van het hulpmiddel is niet de enige manier om er een te bekijken.
Archiveer het als wat het is. Een momentopname beschrijft de hele machine, tot elk opstartpad en elke beveiligingsdescriptor toe. Hij wordt geschreven met de rechten die de map al heeft, en het hulpmiddel beperkt niets - een map die anderen kunnen lezen is dus een map waarin ze dat alles kunnen lezen.
Vraag dan wat er anders is
$ 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.
- Configuratie en uitvoeringstoestand worden apart gemeld. Twee momentopnamen met een dag ertussen verschillen in wat er toevallig draait, en bijna niets daarvan is drift. Door elkaar gegooid wordt de ene regel die telt - een opstarttype dat iemand heeft gewijzigd - begraven onder veertig die dat niet doen.
- Wat niet kon worden vergeleken wordt vermeld, niet verborgen. Een veld dat een van de twee momentopnamen nooit las, omdat die sessie er geen rechten op had, komt onder zijn item uit als not compared, en de samenvatting telt die items. Een vergelijking die zegt niets is veranderd betekent dus dat er niets is veranderd in wat beide kanten konden zien.
- Een momentopname met verhoogde rechten tegen een zonder zou liegen, en items als verwijderd melden die niemand heeft verwijderd. Elk bestand legt vast of het account dat het maakte een beheerder was, en de vergelijking zegt dat.
- Twee bestanden, niet alleen een bestand en deze machine. Maak er een op acceptatie en een op productie en vergelijk ze overal - het antwoord op waarom verschilt acceptatie heeft geen van beide machines nodig.
Het venster doet hetzelfde onder Audit.... Take snapshot... schrijft hetzelfde bestand, met een notitie als u er een typt, en Compare with this machine... of Compare two snapshots... toont in plaats van de lijst wat er is veranderd, één rij per veld, met alles wat de vergelijking minder dan exact maakt boven de tabel gezegd. Show beperkt het tot de verschillen of tot één veld, en Export... schrijft het naar een CSV-bestand.
De afsluitcode is waar het om gaat
--exit-code eindigt met 5 wanneer de configuratie verschilt - een item toegevoegd of verwijderd, of een anders ingesteld item. Een service die alleen uit zichzelf stopte of startte wordt gemeld en telt niet mee, en de kopieën per gebruiker die Windows voor elke aangemelde sessie maakt ook niet: die blijven weg en worden geteld. Geen mislukking - drift is waarvoor dit hulpmiddel is gemaakt, en het vinden ervan is geen mislukking - en daarom heeft het een eigen nummer in plaats van het nummer te lenen dat betekent dat er iets misging.
# de dag dat de machine in gebruik gaat
bws snapshot create C:\baselines\web01.json --note "after the build"
# elke nacht, vanuit een geplande taak
bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
# 0 - geen configuratiedrift
# 5 - de configuratie is afgedreven, en drift.json zegt wat
# 3 - het draaide en kon niet alles lezen, dus het antwoord is gedeeltelijk
Dat is het hele mechanisme: een basislijn gemaakt toen de machine bewezen goed was, en elke nacht een vraag. De eerste nacht dat het 5 antwoordt, komt iemand het die nacht te weten en niet de ochtend dat iets kapotgaat.