Powershell kotiček
04.07.2023
Pri avtomatizaciji, ki jo rešujemo s pisanjem in uporabo PowerShell skript, se pogosto zgodi, da le-te uporabljamo na različnih operacijskih sistemih, v katere pa se moramo tudi avtenticirati, da dobimo dostope, ki jih potrebujemo za delo.
Pri večjem številu različnih gesel je težava v tem, da ali jih moramo znati na pamet (če so kompleksna, je to skoraj nemogoče) ali pa jih sproti kopirati iz primernega upravljalca gesel, kot so KeePass, LastPass, Bitwarden….
Microsoft je zato pripravil Powershell modul SecretManagement, ki omogoča shranjevanje in branje gesel, Api ključev, oz vsega, kar lahko označimo za skrivnost, preko razširitev, ki znajo dostopati do upravljalcev gesel kot so AZ.Vault, Chromium, KeePass, HashiCorp, itd. Gre pravzaprav za abstrakcijski nivo, ki ponuja iste ukaze za delo z različnimi »trezorji«, ki lahko shranijo naše skrivnosti lokalno ali v oddaljeni shrambi. Le ti so registrirani samo za trenutno prijavljenega uporabnika in so dostopne samo njemu.
Za konfiguracijo teh »trezorjev« uporabimo ukaze iz Powershell.SecretStore modula.
SecretStore je lokalna hramba/trezor, ki je na voljo v Powershell gallery. Teče v vseh okoljih, v katerih najdemo tudi Powershell 7.
Namestimo ju z ukazoma
Install-Module -Name Microsoft.PowerShell.SecretStore
in
Install-Module -Name Microsoft.PowerShell.SecretManagement
Nato opravimo registracijo trezorja, s katero določimo vrsto le tega
Register-SecretVault -Name Trezor -ModuleName Microsoft.PowerShell.SecretStore
-DefaultVault
Z ukazom Register-SecretVault -Name 'CredMan' -ModuleName 'SecretManagement.JustinGrote.CredMan' recimo registriramo za uporabo Windows Credential Managerja.
Sedaj lahko začnemo vpisovati naša gesla:
Set-Secret -Name TestnaSkrivnost -Secret »TestnoGeslo«
Vrednosti so lahko enega od tipov: byte, String, SecureString, PSCredential in Hashtable.
Skrivnosti/gesla vpisujem in beremo s Set-Secret in Get-secret
Set-secret -vault TestniTrezor -name TestnoGeslo -secret (get-credential TestniUporabnik) -metadata @{description »testno geslo za članek«}
(Get-secret -vault TestniTrezor -name testnoGeslo).password | convertFreom-secureString -asplainText
Ob prvi uporabi moramo podati tudi geslo, s katerim trezor zaklenemo, razen če ob registraciji tega izrecno ne definiramo.
Set-SecretStorePassword -NewPassword $novogeslo -Password $starogeslo
V določenem trenutku pri razvoju skripte pridemo do točke, ko je to geslo za odpiranje trezorja potrebno za dostop do tudi podatkov. Ker ga ne bomo interaktivno vnašali, vpis v tekstovno datoteko pa tudi ni primeren, si bomo pomagali s funkcijami Export in Import-CliXML:
$geslo=read-host -AsSecureString -prompt 'Vnesi geslo:'
$pot=Join-path (split-path $profile) SecretStore.vault.credential
$geslo | Export-CliXML $pot
Install-Module -Name Microsoft.PowerShell.SecretStore, Microsoft.PowerShell.SecretManagement -Repository PSGallery -Force
$geslo = Import-CliXml $pot
Set-SecretStoreConfiguration -Scope CurrentUser -Authentication Password -PasswordTimeout (60*60) -Interaction None -Password $geslo -Confirm:$false
Register-SecretVault -Name SecretStore -ModuleName Microsoft.PowerShell.SecretStore -DefaultVault
Ko imamo to skonfigurirano, bomo ob vsaki uporabi skripte, ki bo uporabljala shranjena gesla, rabili le
$geslo = Import-CliXml 'C:\Users\uporabnik\Documents\PowerShell\SecretStore.vault.credential'
Unlock-SecretStore -Password $geslo
Žal pa to ne bo delovalo za skripte, ki jih bomo morebiti poganjali prek razporejevalnika opravil. V tem primeru bomo morali umakniti geslo s trezorja
Set-SecretStoreConfiguration -Authentication None
Ukaz Reset-SecretStore pa uporabimo, da pobrišemo vso njegovo vsebino in ga nastavimo v začetno stanje.
Aleš LipuščekMCP, MCTS, MCITP
ales.lipuscek@kompas-xnet.si
Aleš Lipušček
MCP, MCTS, MCITPales.lipuscek@kompas-xnet.si
Imate dodatna vprašanja?
Za več informacij smo vam vedno z veseljem na voljo. Pišite nam na info@kompas-xnet.si ali nas pokličite 01 5136 990.
Kontaktirajte nasNovice
Naročite se na Xnet novice in ostanite na tekočem glede novih tečajev, seminarjev, možnosti pridobitve novih certificiranj in akcijskih cen.