Compartilhar via


Usar o SecretStore na automação

Este artigo fornece um exemplo para usar um cofre Microsoft.PowerShell.SecretStore em um cenário de automação. Um cofre SecretStore fornece uma maneira de armazenar e recuperar com segurança as senhas, tokens e outros segredos que você precisa usar em seu pipeline de automação no computador local.

Configurar o host que executa a automação

Para este exemplo, você deve primeiro instalar e configurar os módulos SecretManagement. Este exemplo pressupõe que o host de automação esteja executando o Windows. Esses comandos devem ser executados no contexto do usuário da conta de automação no 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

Configurar o cofre SecretStore

Você também deve criar uma senha como uma SecureString usada para proteger o cofre SecretStore. O sistema de automação que você usa pode ter uma maneira de fornecer com segurança uma senha que você pode usar para proteger o cofre. Por exemplo, o GitHub fornece uma maneira de armazenar e usar segredos com segurança em GitHub Actions. Para obter mais informações, consulte Usando segredos em GitHub Actions.

Neste exemplo, a senha é uma SecureString exportada com segurança para um arquivo XML e criptografada pela DPAPI (Proteção de Dados do Windows). O comando a seguir solicita uma senha. Neste exemplo, o UserName não é importante.

PS> $credential = Get-Credential -UserName 'SecureStore'

PowerShell credential request
Enter your credentials.
Password for user SecureStore: **************

Depois de ter a senha, você poderá salvá-la em um arquivo XML criptografado.

$securePasswordPath = 'C:\automation\passwd.xml'
$credential.Password |  Export-Clixml -Path $securePasswordPath

Em seguida, você deve configurar o cofre SecretStore . A configuração define a interação do usuário como , para Noneque o SecretStore nunca solicite ao usuário. A configuração requer uma senha e a senha é passada como um objeto SecureString . O -Confirm:false parâmetro é usado para que o PowerShell não solicite confirmação.

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

Agora que você tem o cofre instalado e configurado, você pode usar Set-Secret para adicionar os segredos necessários para seus scripts de automação.

Usar segredos na automação

A senha do SecretStore deve ser fornecida de forma segura. Aqui, a senha está sendo importada de um arquivo que foi criptografado usando o DPAPI (Proteção de Dados do Windows).

Observação

Essa é uma solução somente do Windows, mas outra opção é usar uma variável segura fornecida por um sistema de CI como GitHub Actions.

O script de automação precisa desbloquear o cofre para recuperar os segredos necessários no script. O Unlock-SecretStore cmdlet é usado para desbloquear o SecretStore para esta sessão. O tempo limite da senha foi configurado por 1 hora. O cofre permanece desbloqueado na sessão por esse período de tempo. Após o tempo limite, o cofre deve ser desbloqueado novamente antes que os segredos possam ser acessados.

$password = Import-CliXml -Path $securePasswordPath
Unlock-SecretStore -Password $password
$automationPassword = Get-Secret -Name CIJobSecret