보안 비밀번호가 뒤에 있는 개념은 운영 스크립트에서 중요한 비밀번호가 일반 보기로 전달되어서는 안 된다는 것입니다. 보안이 심각하게 부족한 사안입니다. 따라서 PowerShell을 사용하면 비밀번호를 보호하거나 비밀번호 가시성을 최소한 줄일 수 있습니다. 먼저 보안 문자열의 일반적인 측면을 논의한 다음 DCPP(Dell Command PowerShell Provider)가 PowerShell의 선천적인 기능을 활용하여 비밀번호를 보호하는 방법에 대해 논의합니다.
콘솔에서 사용자의 사용자 이름과 비밀번호를 읽으려 합니다. 일반적으로 사용자 이름은 보안을 요구하지 않으며 모든 사용자가 볼 수 있습니다. 그러나 비밀번호의 경우 다른 사람에게 사용자의 비밀번호가 알려져서는 안 됩니다. 다음과 같은 명령을 사용하여 이러한 요구 사항을 처리할 수 있습니다.
$user = Read-Host "Enter Username" $pass = Read-Host "Enter Password" -AsSecureString
위 내용은 비밀번호와 같은 중요한 정보를 보호해야 할 때 보안을 강화하는 방법에 대한 개요입니다. 위의 예에서 변수 $pass는 System.Security.SecureString
유형입니다. DCPP의 측면을 다루기 전에 보안 필드를 용이하게 하기 위해 널리 사용되는 다른 두 개의 cmdlet PowerShell이 제공하는 것을 소개합니다.
두 명령은 ConvertTo-SecureString
및 ConvertFrom-SecureString
입니다. ConvertTo-SecureString
명령은 일반 텍스트를 System.Security.SecureString
유형으로 변환합니다. 아래에 예가 나와 있습니다.
"P@ssword1" | ConvertTo-SecureString -AsPlainText -Force
위의 예시에서 일반 텍스트인 P@assword1
를 System.Security.SecureString
유형으로 변환했습니다. 이는 정보에 해당하며 널리 사용될 수도 있고 그렇지 않을 수도 있습니다.
다음 cmdlet인 ConvertFrom-SecureString
은 보안 문자열을 암호화된 표준 문자열로 변환하는 데 사용되는 보다 널리 사용되는 cmdlet입니다. ConvertTo-SecureString
명령의 주요 제한 사항은 나중에 사용할 수 있도록 출력을 파일에 직접 쓸 수 없다는 것입니다. ConvertFrom-SecureString
명령을 사용해야 합니다. 이 명령은 System.Security.SecureString
을 암호화된 표준 문자열로 변환하여 파일에 편리하게 저장해 이러한 제한을 극복할 수 있는 것을 사용합니다.
일반 텍스트 P@ssword1
을 보안 문자열로 변환하고 출력을 ConvertFrom-SecureString
으로 파이핑하여 암호화된 문자열을 가져와 파일에 안전하고 편리하게 저장할 수 있습니다.
예를 들어, 관리자 비밀번호가 설정되어 있고 파일에 저장해야 하는 경우의 컴퓨터에 대해 얘기해 보겠습니다. 다음을 사용하여 수행할 수 있습니다.
Read-Host "Enter Admin Password" -AsSecureString | ConvertFrom-SecureString | Out-File "C:\Scripts\AdminPassword.txt"
다음과 같이 이 관리자 비밀번호를 보안 오브젝트로 변수로 다시 가져올 수 있습니다.
$pass = Get-Content "C:\Scripts\AdminPassword.txt" | ConvertTo-SecureString
이제 DCPP에 대한 보안 비밀번호를 활용하는 방법을 살펴보겠습니다. DCPP에서 사용자의 컴퓨터에 시스템 또는 관리자 비밀번호가 설정되어 있으면 모든 set
명령에 대해 각 비밀번호를 전달해야 합니다. 따라서 이 비밀번호를 일반 텍스트 보안 침해로 제공할 수 있습니다. 비밀번호를 System.Security.SecureString
으로 전달해야 합니다. 또한 SecureString
비밀번호를 전달할 때 -PasswordSecure
스위치와 함께 전달해야 합니다. 일반적인 –Password
스위치와 함께 전달하면 안 됩니다. 아래에 사용자가 AdvancedBatteryChargeCfg
를 Disabled
로 설정하고 SecureString
비밀번호를 전달하는 예시가 나와 있습니다.
Set-item AdvancedBatteryChargeCfg disabled –PasswordSecure $pass
여기서 $pass는 시스템 및 관리자 비밀번호를 보유하며, System.Security.SecureString
유형입니다. 위의 논의와 유사하게 $pass
를 다음처럼 읽을 수 있습니다.
$pass = Read-Host "Enter system/admin password" –AsSecureString
필요한 경우 다음과 같이 $pass
를 파일로 저장할 수 있습니다.
$pass| ConvertFrom-SecureString | Out-File "C:\Scripts\AdminPassword.txt
관련 문서: