Uso de SecretStore en la automatización
En este artículo se proporciona un ejemplo de uso de un almacén Microsoft.PowerShell.SecretStore en un escenario de automatización. Un almacén de SecretStore proporciona una manera de almacenar y recuperar de forma segura las contraseñas, los tokens y otros secretos que necesita usar en la canalización de automatización en el equipo local.
Configuración del host que ejecuta la automatización
En este ejemplo, primero debe instalar y configurar los módulos SecretManagement. En este ejemplo se supone que el host de automatización ejecuta Windows. Estos comandos se deben ejecutar en el contexto de usuario de la cuenta de automation en el 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
Configuración del almacén de SecretStore
También debe crear una contraseña como secureString que se usa para proteger el almacén de SecretStore. Es posible que el sistema de automatización que use tenga una manera segura de proporcionar una contraseña que puede usar para proteger el almacén. Por ejemplo, GitHub proporciona una manera de almacenar y usar secretos de forma segura en Acciones de GitHub. Para obtener más información, consulte Uso de secretos en Acciones de GitHub.
En este ejemplo, la contraseña es secureString que se exporta de forma segura a un archivo XML y se cifra mediante La protección de datos de Windows (DPAPI). El siguiente comando le pide una contraseña. En este ejemplo, username no es importante.
PS> $credential = Get-Credential -UserName 'SecureStore'
PowerShell credential request
Enter your credentials.
Password for user SecureStore: **************
Una vez que tenga la contraseña, puede guardarla en un archivo XML cifrado.
$securePasswordPath = 'C:\automation\passwd.xml'
$credential.Password | Export-Clixml -Path $securePasswordPath
A continuación, debe configurar el almacén de SecretStore . La configuración establece la interacción None
del usuario en , de modo que SecretStore nunca solicite al usuario. La configuración requiere una contraseña y la contraseña se pasa como un objeto SecureString . El -Confirm:false
parámetro se usa para que PowerShell no solicite confirmación.
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
Ahora que tiene instalado y configurado el almacén, puede usar Set-Secret
para agregar los secretos que necesita para los scripts de automatización.
Uso de secretos en la automatización
La contraseña de SecretStore debe proporcionarse de forma segura. Aquí se importa la contraseña desde un archivo cifrado mediante Protección de datos de Windows (DPAPI).
Nota
Se trata de una solución solo de Windows, pero otra opción es usar una variable segura proporcionada por un sistema de CI como Acciones de GitHub.
El script de automatización debe desbloquear el almacén para recuperar los secretos necesarios en el script. El Unlock-SecretStore
cmdlet se usa para desbloquear SecretStore para esta sesión. El tiempo de espera de contraseña se configuró durante 1 hora. El almacén permanece desbloqueado en la sesión durante ese período de tiempo. Después del tiempo de espera, el almacén debe volver a desbloquearse antes de que se pueda acceder a los secretos.
$password = Import-CliXml -Path $securePasswordPath
Unlock-SecretStore -Password $password
$automationPassword = Get-Secret -Name CIJobSecret