자동화에서 SecretStore 사용
이 문서에서는 자동화 시나리오에서 Microsoft.PowerShell.SecretStore 자격 증명 모음을 사용하는 예제를 제공합니다. SecretStore 자격 증명 모음은 로컬 컴퓨터의 자동화 파이프라인에서 사용해야 하는 암호, 토큰 및 기타 비밀을 안전하게 저장하고 검색하는 방법을 제공합니다.
자동화를 실행하는 호스트 설정
이 예제에서는 먼저 SecretManagement 모듈을 설치하고 구성해야 합니다. 이 예제에서는 자동화 호스트가 Windows를 실행하고 있다고 가정합니다. 이러한 명령은 호스트의 자동화 계정 사용자 컨텍스트에서 실행되어야 합니다.
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
SecretStore 자격 증명 모음 구성
또한 SecretStore 자격 증명 모음을 보호하는 데 사용되는 SecureString 으로 암호를 만들어야 합니다. 사용하는 자동화 시스템에는 자격 증명 모음을 보호하는 데 사용할 수 있는 암호를 안전하게 제공하는 방법이 있을 수 있습니다. 예를 들어 GitHub는 GitHub Actions 비밀을 안전하게 저장하고 사용하는 방법을 제공합니다. 자세한 내용은 GitHub Actions 비밀 사용을 참조하세요.
이 예제에서 암호는 안전하게 XML 파일로 내보내고 DPAPI(Windows Data Protection)로 암호화되는 SecureString 입니다. 다음 명령은 암호를 묻는 메시지를 표시합니다. 이 예제에서 UserName 은 중요하지 않습니다.
PS> $credential = Get-Credential -UserName 'SecureStore'
PowerShell credential request
Enter your credentials.
Password for user SecureStore: **************
암호가 있으면 암호화된 XML 파일에 저장할 수 있습니다.
$securePasswordPath = 'C:\automation\passwd.xml'
$credential.Password | Export-Clixml -Path $securePasswordPath
다음으로 SecretStore 자격 증명 모음을 구성해야 합니다. 구성은 사용자 상호 작용을 로 None
설정하여 SecretStore 가 사용자에게 메시지를 표시하지 않도록 합니다. 구성에는 암호가 필요하며 암호는 SecureString 개체로 전달됩니다. -Confirm:false
매개 변수는 PowerShell에서 확인을 요청하지 않도록 사용됩니다.
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
이제 자격 증명 모음을 설치하고 구성했으므로 를 사용하여 Set-Secret
자동화 스크립트에 필요한 비밀을 추가할 수 있습니다.
자동화에서 비밀 사용
SecretStore 암호는 안전한 방식으로 제공해야 합니다. 여기서는 DPAPI(Windows Data Protection)를 사용하여 암호화된 파일에서 암호를 가져옵니다.
참고
이는 Windows 전용 솔루션이지만 또 다른 옵션은 GitHub Actions 같은 CI 시스템에서 제공하는 보안 변수를 사용하는 것입니다.
자동화 스크립트는 스크립트에 필요한 비밀을 검색하기 위해 자격 증명 모음의 잠금을 해제해야 합니다. cmdlet Unlock-SecretStore
은 이 세션에 대한 SecretStore 의 잠금을 해제하는 데 사용됩니다. 암호 시간 제한이 1시간 동안 구성되었습니다. 자격 증명 모음은 해당 시간 동안 세션에서 잠금 해제된 상태로 유지됩니다. 시간 제한 후에는 비밀에 액세스하기 전에 자격 증명 모음의 잠금을 다시 해제해야 합니다.
$password = Import-CliXml -Path $securePasswordPath
Unlock-SecretStore -Password $password
$automationPassword = Get-Secret -Name CIJobSecret