Utilizar a SecretStore na automatização
Este artigo fornece um exemplo para utilizar um cofre Microsoft.PowerShell.SecretStore num cenário de automatização. Um cofre secretStore fornece-lhe uma forma de armazenar e obter em segurança as palavras-passe, tokens e outros segredos que precisa de utilizar no pipeline de automatização no computador local.
Configurar o anfitrião que executa a automatização
Para este exemplo, primeiro tem de instalar e configurar os módulos SecretManagement. Este exemplo pressupõe que o anfitrião de automatização está a executar o Windows. Estes comandos têm de ser executados no contexto de utilizador da conta de automatização no anfitrião.
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
Também tem de criar uma palavra-passe como secureString que é utilizada para proteger o cofre secretStore. O sistema de automatização que utiliza pode ter uma forma de fornecer em segurança uma palavra-passe que pode utilizar para proteger o cofre. Por exemplo, o GitHub fornece uma forma de armazenar e utilizar segredos em segurança no GitHub Actions. Para obter mais informações, consulte Utilizar segredos no GitHub Actions.
Neste exemplo, a palavra-passe é uma SecureString que é exportada em segurança para um ficheiro XML e encriptada pela Proteção de Dados do Windows (DPAPI). O comando seguinte pede-lhe uma palavra-passe. Neste exemplo, o UserName não é importante.
PS> $credential = Get-Credential -UserName 'SecureStore'
PowerShell credential request
Enter your credentials.
Password for user SecureStore: **************
Assim que tiver a palavra-passe, pode guardá-la num ficheiro XML encriptado.
$securePasswordPath = 'C:\automation\passwd.xml'
$credential.Password | Export-Clixml -Path $securePasswordPath
Em seguida, tem de configurar o cofre SecretStore . A configuração define a interação do utilizador para , para None
que a SecretStore nunca peça ao utilizador. A configuração requer uma palavra-passe e a palavra-passe é transmitida como um objeto SecureString . O -Confirm:false
parâmetro é utilizado para que o PowerShell não peça 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 tem o cofre instalado e configurado, pode utilizar Set-Secret
para adicionar os segredos de que precisa para os scripts de automatização.
Utilizar segredos na automatização
A palavra-passe da SecretStore tem de ser fornecida de forma segura. Aqui, a palavra-passe está a ser importada a partir de um ficheiro que foi encriptado com o Windows Data Protection (DPAPI).
Nota
Esta é uma solução apenas para Windows, mas outra opção é utilizar uma variável segura fornecida por um sistema de CI, como GitHub Actions.
O script de automatização tem de desbloquear o cofre para obter os segredos necessários no script. O Unlock-SecretStore
cmdlet é utilizado para desbloquear a SecretStore para esta sessão. O tempo limite da palavra-passe foi configurado durante 1 hora. O cofre permanece desbloqueado na sessão durante esse período de tempo. Após o tempo limite, o cofre tem de ser desbloqueado novamente antes de os segredos poderem ser acedidos.
$password = Import-CliXml -Path $securePasswordPath
Unlock-SecretStore -Password $password
$automationPassword = Get-Secret -Name CIJobSecret