Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Importante
Il team PowerShell ha deciso che i moduli Secret sono completi in funzionalità e non saranno più sviluppati attivamente. I moduli continueranno a essere supportati per la sicurezza e la correzione di bug critici. Il repository di codice è stato archiviato.
Le ultime versioni pubblicate sono:
La natura dei segreti è cambiata radicalmente da quando è stato progettato questo progetto. Metodi di autenticazione senza password come passkey, single sign-on e sistemi di credenziali federati come Microsoft Entra ID, biometria e chiavi di sicurezza hardware sono il futuro.
Questo articolo fornisce un esempio di utilizzo di un Microsoft. PowerShell.SecretStore in uno scenario di automazione. Un vault SecretStore ti offre un modo per memorizzare e recuperare in modo sicuro le password, i token e altri segreti che devi utilizzare nella pipeline di automazione sulla macchina locale.
Configura l'host che gestisce l'automazione
Per questo esempio devi prima installare e configurare i moduli SecretManagement. Questo esempio presuppone che il tuo host di automazione abbia Windows. Questi comandi devono essere eseguiti nel contesto utente dell'account di automazione sull'host.
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
Configura il vault SecretStore
Devi anche creare una password come SecureString che viene usata per mettere in sicurezza il caveau SecretStore. Il sistema di automazione che usi potrebbe avere un modo sicuro per fornire una password che puoi usare per mettere in sicurezza la cassaforte. Ad esempio, GitHub offre un modo per memorizzare e utilizzare in modo sicuro i segreti in GitHub Actions. Per altre informazioni, vedere Uso dei segreti in GitHub Actions.
In questo esempio, la password è una SecureString che viene esportata in modo sicuro in un file XML e criptata da Windows Data Protection (DPAPI). Il seguente comando ti indica una password. In questo esempio il Nome Utente non è importante.
PS> $credential = Get-Credential -UserName 'SecureStore'
PowerShell credential request
Enter your credentials.
Password for user SecureStore: **************
Una volta che hai la password puoi salvarla in un file XML criptato.
$securePasswordPath = 'C:\automation\passwd.xml'
$credential.Password | Export-Clixml -Path $securePasswordPath
Successivamente devi configurare il vault di SecretStore . La configurazione imposta l'interazione dell'utente su None, così che SecretStore non richieda mai all'utente. La configurazione richiede una password, e la password viene inviata come oggetto SecureString . Il parametro -Confirm:false viene utilizzato in modo che PowerShell non richieda la conferma.
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
Ora che hai installato e configurato il vault, puoi usarlo Set-Secret per aggiungere i segreti necessari per i tuoi script di automazione.
Usa i segreti nell'automazione
La password di SecretStore deve essere fornita in modo sicuro. Qui la password viene importata da un file criptato con Windows Data Protection (DPAPI).
Note
Questa è una soluzione solo per Windows, ma un'altra opzione è usare una variabile sicura fornita da un sistema CI come GitHub Actions.
Lo script di automazione deve sbloccare il vault per recuperare i segreti necessari nello script. Il Unlock-SecretStore cmdlet viene usato per sbloccare il SecretStore di questa sessione. Il timeout della password era configurato per 1 ora. La cassaforte rimane sbloccata durante la sessione per quel periodo. Dopo il timeout, il caveau deve essere sbloccato di nuovo prima che i segreti possano essere accessi.
$password = Import-CliXml -Path $securePasswordPath
Unlock-SecretStore -Password $password
$automationPassword = Get-Secret -Name CIJobSecret