| Nedávno jsem tu psal o tom, jak uložit heslo přímo do PowerShell skriptu, aby se to neptalo pokaždé okénkem. Vznikla vcelku hojná odezva ohledně bezpečnosti samotného principu, jestli je vhodné to heslo ve skriptu uložit, a nebo jestli to nemít někde jinde "bezpečněji".
Proč to možná vadí
Mít heslo přímo ve skriptu zavání dvěma problémy:
- může ho někdo na tom počítači vidět přímo ve zdrojáku toho skriptu. Dostat se ke zdrojáku může buď lokálně po CTRL-ALT-DEL a RDP přihlášení, nebo přes síť, pokud je adresář se skriptem nasdílený
- pokud na to zapomenete a skript si někam překopírujete "jako do zálohy", tak si budete heslo ve skriptu nechtěně roznášet.
Problém číslo jedna nepovažuji za problém. Pokud adresář se skriptem správně zabezpečíte, není důvod obávat se, že se do něho dostane někdo nepovolaný. Logicky tedy adresář nastavte tak, aby se k němu dostali jen členové lokální skupiny Administrators. A případně další účty, které to potřebují, samozřejmě.
Dostatečně bezpečné řešení problému s náhodným přenosem souboru
Problém druhý, tedy neopatrnou manipulaci se souborem, která by heslo rozšířila na více míst, se dá vyřešit velice jednoduše. Prostě si udělejte v registrech klíč a hodnotu, do které to heslo natvrdo vložíte a ve skriptu ho přečtete. Registry nikam nekopírujete, takže skript bude úplně čistý.
Registrový klíč opět zabezpečíte tak, aby se do něho dostala jen skupina lokálních Administrators a případné další potřebné účty.
Diskuze bezpečnosti tohoto řešení
A je tohle tedy bezpečné? Jasně že je. Jestliže se do těch registrů dostane jen skupina Administrators, tak není nikdo jiný, kdo by si to jinak přečetl. Samozřejmě byste mohli využít nějaké jiné sofistikované řešení, jako je DPAPI, nebo LSA Secrets. Ale to jsou technologie, ze kterých to heslo stejně člen skupiny Administrators dostane bez jakýchkoliv problémů - viz. můj článek o vykrádání hesel naplánovaných úloh a služeb. Ty tohle přesně používají a přitom, jestli jste členem skupiny Adminitrators, heslo z nich taky dostanete.
|