Ontdek hoe je de beveiliging van je PowerShell-scripts naar een hoger niveau kunt tillen met behulp van SecureString. Leer hoe je gevoelige authenticatiegegevens, zoals wachtwoorden en API-tokens, veilig kunt opslaan en gebruiken in je scripts. Met SecureString kun je deze gegevens versleutelen, zodat ze niet leesbaar zijn voor ongeautoriseerde gebruikers. Ontdek ook hoe je periodiek het wachtwoord van het gebruikte account kunt wijzigen en hoe je zorgt dat er geen sporen van gevoelige informatie achterblijven. Verhoog de beveiliging van je scripts en minimaliseer het risico van datalekken met SecureString.
Met enige regelmaat kom je authenticatiegegevens van een API of een account met hoge rechten tegen, die rechtstreeks in een PowerShell-script worden gebruikt. Dit kan gebeuren zonder kwade bedoelingen, vaak gewoon om snel een correctie uit te voeren. Echter, ongemerkt blijft het script bestaan en worden het wachtwoord of de tokens nooit gewijzigd, wat een beveiligingsrisico vormt.
Gelukkig zijn er betere manieren om met deze situatie om te gaan. Na wat zoekwerk samen met een voormalige collega (Ilyaaz Noerkhan), kwamen we uit op een oplossing genaamd “Secure String“. Dit is een methode om leesbare gegevens te vervangen door versleutelde informatie, waardoor ze veiliger worden opgeslagen en gebruikt. Bovendien, als je dit proces uitvoert onder een specifiek gebruikersaccount, kan alleen dat account de gegevens weer bruikbaar maken. Het enige wat je hiervoor nodig hebt, is PowerShell versie 7.0 of hoger.
SecureString aanmaken
De werkwijze is eigenlijk vrij eenvoudig. Je start PowerShell onder het account dat je wilt gebruiken om het script periodiek uit te voeren. Vervolgens maak je gebruik van de volgende syntaxis om de gebruikersnaam te verwerken:
“Gebruikersnaam” | ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString | Out-File “Secure_Gebruikersnaam”
Op dezelfde manier kun je het wachtwoord, of bijvoorbeeld een API-token, verwerken:
“Wachtwoord” | ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString | Out-File “Secure_Wachtwoord”
Hiermee creëer je twee bestanden waarin de gebruikersnaam en het wachtwoord versleuteld worden opgeslagen. In je script kun je vervolgens de volgende regels toevoegen:
$Gebruikersnaam = Get-Content “Secure_Gebruikersnaam” | ConvertTo-SecureString $Gebruikersnaam = ConvertFrom-SecureString -SecureString $Gebruikersnaam -AsPlainText
$Wachtwoord = Get-Content “Secure_Wachtwoord” | ConvertTo-SecureString $Wachtwoord = ConvertFrom-SecureString -SecureString $Wachtwoord -AsPlainText
Op deze manier lees je eerst de versleutelde bestanden in en converteer je de “Secure Strings” tijdelijk naar bruikbare variabelen. Deze variabelen zijn alleen beschikbaar tijdens het uitvoeren van het script en zijn niet leesbaar als het script wordt gevonden of ergens als back-up wordt opgeslagen. Dit verhoogt de beveiliging van de gevoelige gegevens.
Het feit dat je de werkelijke gebruikersnaam niet weet, maakt het nog moeilijker voor eventuele kwaadwillende om toegang te krijgen tot de gegevens. Het raden van de juiste combinatie van gebruikersnaam en wachtwoord wordt vrijwel onmogelijk.