본문 바로가기

Server Story..../PowerShell

파워쉘 비밀번호 암호화



파워쉘에서의 비밀번호 관리

여러대의 서버를 관리할때 명령창에서 비밀번호를 입력해야할 일이 많다

예를 들어 네트워크 드라이브를 생성하는 net 명령의 경우 아래의 문법을 사용한다

* 네트워크 드라이브 생성
사용자: patch_user네트워크경로 : \\patch_server\patch비밀번호 : password대상 드라이브 : p:
net use p: password \\patch_server\patch /user:patch_user

* 네트워크 드라이브 제거
net use /y /d p: 

위와 같은경우 스크립트를 작성하게 되면 그대로 비밀번호를 노출하게 된다


해결책

사용자에게 비밀번호를 입력받고 이를 암호화 하여 파일로 저장한다
비밀번호가 필요할때는 파일에서 읽어온 암호화된 문자열을 복호화하여 사용한다
암호화된 비밀번호파일은 다른 계정이나 컴퓨터로 가져갈경우 복호화 되지 않는다

전체 소스


$password_file = 'password.dat'

if(Test-Path $password_file)
{
    $pwd = Get-Content $password_file
}
else
{
    $pwd = Read-Host -AsSecureString "비밀번호 입력" | ConvertFrom-SecureString
    $pwd | Set-Content $password_file
}

"입력된 값을 암호화된 문자열로 변경한 값" + $pwd
try
{
    $spwd = ConvertTo-SecureString $pwd
}
catch [exception]
{    
    $pwd = Read-Host -AsSecureString "저장된 패스워드가 잘못되었습니다, 새로 입력하세요" | ConvertFrom-SecureString
    $pwd | Set-Content $password_file
}
$bstr = [Runtime.InteropServices.Marshal]::SecureStringToBSTR($spwd) 
"암호화된 문자열을 다시 일반문자열로 변환"
[Runtime.InteropServices.Marshal]::PtrToStringAuto($bstr)

'Server Story.... > PowerShell' 카테고리의 다른 글

파워쉘의 기본문법1  (0) 2013.03.29
파워쉘의 출력에 대하여  (0) 2013.03.29
스크립트 파일을 실행하기 위한 설정  (0) 2013.03.29
파워쉘 실행  (0) 2013.03.29
파워쉘 명령어 기본  (0) 2013.03.29