수색…
비고
스크립트를 서명하면 스크립트가 PowerShell의 모든 Exeuction 정책을 준수하고 스크립트의 무결성을 보장합니다. 서명 된 스크립트는 서명 후 수정 된 경우 실행되지 않습니다.
스크립트 서명에는 코드 서명 인증서가 필요합니다. 권장 사항 :
- 개인 스크립트 / 테스트 (공유되지 않음) : 신뢰할 수있는 인증 기관 (내부 또는 제 3 자)의 인증서 또는 자체 서명 된 인증서.
- 내부 조직과 공유 : 신뢰할 수있는 인증 기관의 인증서 (내부 또는 외부 업체)
- 외부 조직과 공유 : 신뢰할 수있는 제 3 자 인증 기관의 인증서
about_Signing @ TechNet 에서 자세한 내용을 읽어보십시오.
실행 정책
PowerShell에는 스크립트 나 구성을 실행하는 데 필요한 조건을 제어하는 구성 가능한 실행 정책이 있습니다. 여러 정책에 대한 정책을 설정할 수 있습니다. 컴퓨터, 현재 사용자 및 현재 프로세스. 실행 정책은 쉽게 우회 할 수 있으며 사용자를 제한하지 않고 실수로 서명 정책을 위반하지 않도록 보호합니다.
사용 가능한 정책은 다음과 같습니다.
환경 | 기술 |
---|---|
한정된 | 허용 된 스크립트가 없습니다. |
AllSigned | 모든 스크립트에 서명해야합니다. |
RemoteSigned | 모든 로컬 스크립트 허용. 서명 된 원격 스크립트 만 |
제한 없음 | 요구 사항 없음. 모든 스크립트는 허용되지만 인터넷에서 다운로드 한 스크립트를 실행하기 전에 경고합니다 |
우회로 | 모든 스크립트가 허용되며 경고가 표시되지 않습니다. |
정의되지 않음 | 현재 범위에 대한 현재 실행 정책을 제거합니다. 부모 정책을 사용합니다. 모든 정책이 정의되지 않은 경우 제한이 사용됩니다. |
다음을 사용하여 현재 실행 정책을 수정할 수 있습니다 Set-ExecutionPolicy
-cmdlet, 그룹 정책 또는 -ExecutionPolicy
발사 할 때 매개 변수를 powershell.exe
처리합니다.
about_Execution_Policies @ TechNet 에서 자세한 내용을 읽어보십시오.
스크립트 서명하기
스크립트 서명은 Set-AuthenticodeSignature
-cmdlet 및 코드 서명 인증서를 사용하여 수행합니다.
#Get the first available personal code-signing certificate for the logged on user
$cert = @(Get-ChildItem -Path Cert:\CurrentUser\My -CodeSigningCert)[0]
#Sign script using certificate
Set-AuthenticodeSignature -Certificate $cert -FilePath c:\MyScript.ps1
다음을 사용하여 .pfx
에서 인증서를 읽을 수도 있습니다.
$cert = Get-PfxCertificate -FilePath "C:\MyCodeSigningCert.pfx"
스크립트는 인증서가 만료 될 때까지 유효합니다. 서명 중에 타임 스탬프 서버를 사용하면 인증서가 만료 된 후에도 스크립트가 계속 유효합니다. 인증서 (루트 권한 포함)에 대한 트러스트 체인을 추가하여 대부분의 컴퓨터가 스크립트에 서명하는 데 사용 된 인증서를 신뢰하도록하는 데 유용합니다.
Set-AuthenticodeSignature -Certificate $cert -FilePath c:\MyScript.ps1 -IncludeChain All -TimeStampServer "http://timestamp.verisign.com/scripts/timstamp.dll"
Verisign, Comodo, Thawte 등과 같은 신뢰할 수있는 인증서 공급자의 타임 스탬프 서버를 사용하는 것이 좋습니다.
Set-ExecutionPolicy를 사용하여 실행 정책 변경
기본 범위 (LocalMachine)의 실행 정책을 변경하려면 다음을 사용하십시오.
Set-ExecutionPolicy AllSigned
특정 범위에 대한 정책을 변경하려면 다음을 사용하십시오.
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy AllSigned
-Force
스위치를 추가하여 프롬프트를 표시하지 않을 수 있습니다.
단일 스크립트에 대한 실행 정책 우회
종종 현재 실행 정책을 따르지 않는 서명되지 않은 스크립트를 실행해야 할 수도 있습니다. 이를 수행하는 쉬운 방법은 해당 단일 프로세스의 실행 정책을 우회하는 것입니다. 예:
powershell.exe -ExecutionPolicy Bypass -File C:\MyUnsignedScript.ps1
또는 속기를 사용할 수도 있습니다.
powershell -ep Bypass C:\MyUnsignedScript.ps1
기타 실행 정책 :
정책 | 기술 |
---|---|
AllSigned | 신뢰할 수있는 게시자가 서명 한 스크립트 만 실행할 수 있습니다. |
Bypass | 제한 없음; 모든 Windows PowerShell 스크립트를 실행할 수 있습니다. |
Default | 일반적으로 RemoteSigned 이지만 ActiveDirectory를 통해 제어됩니다. |
RemoteSigned | 다운로드 된 스크립트는 실행하기 전에 신뢰할 수있는 게시자가 서명해야합니다. |
Restricted | 스크립트를 실행할 수 없습니다. Windows PowerShell은 대화 형 모드에서만 사용할 수 있습니다. |
Undefined | 없음 |
Unrestricted * | bypass 와 유사 함 |
Unrestricted*
Caveat : 인터넷에서 다운로드 한 서명되지 않은 스크립트를 실행하면 실행 전에 권한을 묻는 메시지가 나타납니다.
자세한 정보는 여기를 클릭하십시오 .
현재 실행 정책 가져 오기
현재 세션의 효과적인 실행 정책 얻기 :
PS> Get-ExecutionPolicy
RemoteSigned
현재 세션의 모든 효과적인 실행 정책 나열 :
PS> Get-ExecutionPolicy -List
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser Undefined
LocalMachine RemoteSigned
특정 범위에 대한 실행 정책을 나열하십시오 (예 : 방법:
PS> Get-ExecutionPolicy -Scope Process
Undefined
서명 된 스크립트에서 서명 가져 오기
Get Get-AuthenticodeSignature
-cmdlet을 사용하여 서명 된 스크립트에서 Authenticode 서명에 대한 정보를 가져옵니다.
Get-AuthenticodeSignature .\MyScript.ps1 | Format-List *
테스트 용 자체 서명 코드 서명 인증서 만들기
개인 스크립트에 서명 할 때 또는 코드 서명을 테스트 할 때 자체 서명 된 코드 서명 인증서를 만드는 것이 유용 할 수 있습니다.
PowerShell 5.0부터 New-SelfSignedCertificate
-cmdlet을 사용하여 자체 서명 된 코드 서명 인증서를 생성 할 수 있습니다.
New-SelfSignedCertificate -FriendlyName "StackOverflow Example Code Signing" -CertStoreLocation Cert:\CurrentUser\My -Subject "SO User" -Type CodeSigningCert
이전 버전에서는 .NET Framework SDK 및 Windows SDK에있는 makecert.exe
도구를 사용하여 자체 서명 된 인증서를 만들 수 있습니다.
자체 서명 된 인증서는 인증서를 설치 한 컴퓨터에서만 신뢰합니다. 공유 할 스크립트의 경우 신뢰할 수있는 인증 기관 (내부 또는 신뢰할 수있는 제 3 자)의 인증서를 사용하는 것이 좋습니다.