Olá Pessoal,
Sem duvida uma das tarefas mais chatas quando estamos automatizando uma tarefa é lidar com as credenciais de forma segura. Pensando nisso a microsoft criou um modulo para lidar com essa tarefa árdua, o Microsoft.PowerShell.SecretManagement.
O módulo SecretManagement fornece uma maneira conveniente para um usuário armazenar e recuperar segredos. Os segredos são armazenados em cofres de extensão SecretManagement. Um cofre de extensão é um módulo do PowerShell que foi registrado no SecretManagement e exporta cinco funções de módulo exigidas pelo SecretManagement. Um cofre de extensão pode armazenar segredos local ou remotamente.
Para instalar o modulo de gestão do cofre você pode utilizar o seguinte comando:
Install-Module -Name Microsoft.PowerShell.SecretManagement -Repository PSGallery
Para instalarmos o cofre local, o Microsoft.Powershell.SecretStore, podemos executar o seguinte comando:
Install-Module -Name Microsoft.PowerShell.SecretStore -Repository PSGallery
Mas o que faz esse modulo?
Este módulo é um cofre de extensão para o módulo PowerShell SecretManagement. Ele armazena segredos localmente no arquivo para o contexto da conta de usuário atual e usa APIs de criptografia .NET para criptografar o conteúdo do arquivo. Os segredos permanecem criptografados na memória e só são descriptografados quando recuperados e passados ao usuário. Este módulo funciona em todas as plataformas PowerShell suportadas no Windows, Linux e macOS. Na configuração padrão, é necessária uma senha para armazenar e acessar segredos e fornece a proteção mais forte.
Instalados os pré-requisitos, podemos prosseguir registrando um cofre local com o seguinte comando:
Register-SecretVault -Name 'SecretStore' -ModuleName 'Microsoft.PowerShell.SecretStore'
Podemos definir então uma senha para esse cofre da seguinte forma:
Set-SecretStorePassword -NewPassword (ConvertTo-SecureString -String 'Senha para o cofre' -AsPlainText -Force)
Para destravar o cofre e poder utilizá-lo utilize o seguinte comando:
Unlock-SecretStore -Password (ConvertTo-SecureString -String 'Senha para o cofre' -AsPlainText -Force)
Agora, com o comando Set-Secret, podemos criar um segredo para armazenar uma credencial:
Set-Secret -Name 'Service1Credential' -Secret (Get-Credential) -Vault 'SecretStore'
Uma vez armazenada a credencial, podemos apenas recuperar ela do cofre(lembrando que ele deverá estar destravado) quando houver necessidade com o seguinte comando:
$Credential = Get-Secret -Name 'Service1Credential'
Com isso podemos armazenar diversos tipos de segredo em um cofre local usando o Powershell.
Dúvidas? Sugestões? Comente!
Até a próxima!