Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Important
A equipa PowerShell decidiu que os módulos Secret são completos em funcionalidades e deixarão de ser desenvolvidos ativamente. Os módulos continuarão a ser suportados para correções de segurança e bugs críticos. O repositório de código foi arquivado.
As versões mais recentes publicadas são:
A natureza dos segredos mudou fundamentalmente desde que este projeto foi concebido. Métodos de autenticação sem palavra-passe, como chaves de acesso, login único e sistemas federados de credenciais, como o Microsoft Entra ID, biometria e chaves de segurança de hardware, são o futuro.
Este artigo fornece um exemplo de utilização de uma Microsoft. Cofre PowerShell.SecretStore num cenário de automação. Um cofre SecretStore permite-lhe armazenar e recuperar de forma segura as palavras-passe, tokens e outros segredos que precisa de usar no seu pipeline de automação na máquina local.
Configura o anfitrião que executa a automação
Neste exemplo, deve primeiro instalar e configurar os módulos SecretManagement. Este exemplo assume que o seu host de automação está a correr o Windows. Estes comandos devem ser executados no contexto do utilizador 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 do SecretStore
Também deve criar uma palavra-passe como SecureString usada para proteger o cofre da SecretStore. O sistema de automação que usa pode ter uma forma segura de fornecer uma palavra-passe que pode usar para proteger o cofre. Por exemplo, o GitHub fornece uma forma segura de armazenar e usar segredos no GitHub Actions. Para obter mais informações, consulte Usando segredos em ações do GitHub.
Neste exemplo, a palavra-passe é um SecureString que é exportado de forma segura para um ficheiro XML e encriptado pela Proteção de Dados do Windows (DPAPI). O comando seguinte pede-lhe uma palavra-passe. Neste exemplo, o Nome de Utilizador não é importante.
PS> $credential = Get-Credential -UserName 'SecureStore'
PowerShell credential request
Enter your credentials.
Password for user SecureStore: **************
Depois de teres a palavra-passe, podes guardá-la num ficheiro XML encriptado.
$securePasswordPath = 'C:\automation\passwd.xml'
$credential.Password | Export-Clixml -Path $securePasswordPath
De seguida, tens de configurar o cofre do SecretStore . A configuração define a interação do utilizador para None, de modo que o SecretStore nunca solicita o utilizador. A configuração requer uma palavra-passe, e a palavra-passe é 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 tens o vault instalado e configurado, podes usar Set-Secret para adicionar os segredos de que precisas para os teus scripts de automação.
Usar segredos na automação
A palavra-passe da SecretStore deve ser fornecida de forma segura. Aqui, a palavra-passe está a ser importada de um ficheiro que foi encriptado usando a Proteção de Dados do Windows (DPAPI).
Note
Esta é uma solução exclusiva para Windows, mas outra opção é usar uma variável segura fornecida por um sistema CI como o GitHub Actions.
O script de automação precisa de desbloquear o cofre para recuperar os segredos necessários no script. O Unlock-SecretStore cmdlet é usado para desbloquear a SecretStore desta sessão. O tempo limite da palavra-passe foi configurado para 1 hora. O cofre permanece desbloqueado durante a sessão durante esse período. Após o timeout, o cofre deve ser desbloqueado novamente antes que os segredos possam ser acedidos.
$password = Import-CliXml -Path $securePasswordPath
Unlock-SecretStore -Password $password
$automationPassword = Get-Secret -Name CIJobSecret