Partilhar via


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 Noneque 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