Použití úložiště tajných klíčů v automatizaci
Tento článek obsahuje příklad použití trezoru Microsoft.PowerShell.SecretStore ve scénáři automatizace. Trezor SecretStore poskytuje způsob, jak bezpečně ukládat a načítat hesla, tokeny a další tajné kódy, které potřebujete použít v kanálu automatizace na místním počítači.
Nastavení hostitele, na kterém běží automatizace
V tomto příkladu musíte nejprve nainstalovat a nakonfigurovat moduly SecretManagement. Tento příklad předpokládá, že váš hostitel automatizace používá Systém Windows. Tyto příkazy se musí spustit v kontextu uživatele účtu Automation na hostiteli.
Install-Module -Name Microsoft.PowerShell.SecretStore -Repository PSGallery -Force
Install-Module -Name Microsoft.PowerShell.SecretManagement -Repository PSGallery -Force
Import-Module Microsoft.PowerShell.SecretStore
Import-Module Microsoft.PowerShell.SecretManagement
Konfigurace trezoru SecretStore
Musíte také vytvořit heslo jako securestring , který slouží k zabezpečení trezoru SecretStore. Automatizační systém, který používáte, může mít způsob, jak bezpečně zadat heslo, které můžete použít k zabezpečení trezoru. GitHub například poskytuje způsob, jak bezpečně ukládat a používat tajné kódy v GitHub Actions. Další informace najdete v tématu Použití tajných kódů v GitHub Actions.
V tomto příkladu je heslem securestring , který se bezpečně exportuje do souboru XML a zašifruje pomocí rozhraní DpAPI (Windows Data Protection). Následující příkaz vás vyzve k zadání hesla. V tomto příkladu je uživatelské jméno nedůležité.
PS> $credential = Get-Credential -UserName 'SecureStore'
PowerShell credential request
Enter your credentials.
Password for user SecureStore: **************
Jakmile budete mít heslo, můžete ho uložit do šifrovaného souboru XML.
$securePasswordPath = 'C:\automation\passwd.xml'
$credential.Password | Export-Clixml -Path $securePasswordPath
Dále musíte nakonfigurovat trezor SecretStore . Konfigurace nastaví interakci uživatele na None
, takže SecretStore nikdy nezobrazí výzvu uživateli. Konfigurace vyžaduje heslo a heslo je předáno jako securestring objekt. Parametr -Confirm:false
se používá tak, aby PowerShell nevytával výzvu k potvrzení.
Register-SecretVault -Name SecretStore -ModuleName Microsoft.PowerShell.SecretStore -DefaultVault
$password = Import-CliXml -Path $securePasswordPath
$storeConfiguration = @{
Authentication = 'Password'
PasswordTimeout = 3600 # 1 hour
Interaction = 'None'
Password = $password
Confirm = $false
}
Set-SecretStoreConfiguration @storeConfiguration
Teď, když máte trezor nainstalovaný a nakonfigurovaný, můžete pomocí příkazu Set-Secret
přidat tajné kódy, které potřebujete pro své automatizační skripty.
Použití tajných kódů v automatizaci
Heslo SecretStore musí být zadané zabezpečeným způsobem. Tady se importuje heslo ze souboru, který byl zašifrovaný pomocí Windows Data Protection (DPAPI).
Poznámka
Toto je řešení jenom pro Windows, ale další možností je použít zabezpečenou proměnnou poskytovanou systémem CI, jako je GitHub Actions.
Automatizační skript musí odemknout trezor, aby načetl tajné kódy potřebné ve skriptu. Rutina Unlock-SecretStore
slouží k odemknutí úložiště tajných klíčů pro tuto relaci. Časový limit hesla se nakonfiguroval na 1 hodinu. Trezor zůstane po stejnou dobu v relaci odemknutý. Po vypršení časového limitu musí být trezor znovu odemknut, aby bylo možné získat přístup k tajným kódům.
$password = Import-CliXml -Path $securePasswordPath
Unlock-SecretStore -Password $password
$automationPassword = Get-Secret -Name CIJobSecret