다음을 통해 공유


스크립트를 사용하여 WDAC 정책 배포

참고

WDAC(Windows Defender 애플리케이션 제어)의 일부 기능은 특정 Windows 버전에서만 사용할 수 있습니다. 애플리케이션 제어 기능 가용성에 대해 자세히 알아봅니다.

이 문서에서는 스크립트를 사용하여 WDAC(Windows Defender Application Control) 정책을 배포하는 방법을 설명합니다. 다음 지침에서는 PowerShell을 사용하지만 모든 스크립팅 호스트에서 작동할 수 있습니다.

이제 하나 이상의 WDAC 정책이 이진 양식으로 변환되어야 합니다. 그렇지 않은 경우 WDAC(Windows Defender 애플리케이션 제어) 정책 배포에 설명된 단계를 수행합니다.

중요

알려진 문제로 인해 항상 메모리 무결성이 사용하도록 설정된 시스템에서 다시 부팅하여 서명된 새 WDAC 기본 정책을 활성화해야 합니다. CiTool, RefreshPolicy.exe 또는 WMI를 사용하여 정책 활성화를 시작하는 아래의 모든 단계를 건너뜁니다. 대신 정책 이진 파일을 올바른 system32 및 EFI 위치에 복사한 다음 시스템을 다시 시작하여 정책을 활성화합니다.

이 문제는 시스템에서 이미 활성화된 서명된 기본 정책 업데이트, 서명되지 않은 정책 배포 또는 추가 정책 배포(서명 또는 서명되지 않음)에 영향을 주지 않습니다. 또한 메모리 무결성을 실행하지 않는 시스템에 대한 배포에는 영향을 주지 않습니다.

Windows 11 22H2 이상에 대한 정책 배포

받은 편지 함 CiTool 을 사용하여 다음 명령을 사용하여 Windows 11 22H2에 정책을 적용할 수 있습니다. 다음 예제에서 배포>할 정책 이진 파일 경로를 WDAC 정책 이진 파일의 실제 경로로 바꿔<야 합니다.

# Policy binary files should be named as {GUID}.cip for multiple policy format files (where {GUID} = <PolicyId> from the Policy XML)
$PolicyBinary = "<Path to policy binary file to deploy>"
CiTool --update-policy $PolicyBinary [-json]

Windows 11, Windows 10 버전 1903 이상 및 Windows Server 2022 이상에 대한 정책 배포

이 절차를 사용하려면 WDAC 정책 새로 고침 도구를 다운로드하여 모든 관리형 엔드포인트에 배포합니다. WDAC 정책에서 WDAC 정책 새로 고침 도구를 허용하거나 관리되는 설치 관리자를 사용하여 도구를 배포하는지 확인합니다.

  1. 스크립트에서 사용할 변수를 초기화합니다.

    # Policy binary files should be named as {GUID}.cip for multiple policy format files (where {GUID} = <PolicyId> from the Policy XML)
    $PolicyBinary = "<Path to policy binary file to deploy>"
    $DestinationFolder = $env:windir+"\System32\CodeIntegrity\CIPolicies\Active\"
    $RefreshPolicyTool = "<Path where RefreshPolicy.exe can be found from managed endpoints>"
    
  2. Windows Defender WDAC(애플리케이션 제어) 정책 이진 파일을 대상 폴더에 복사합니다.

    Copy-Item -Path $PolicyBinary -Destination $DestinationFolder -Force
    
  3. 1-2단계를 적절하게 반복하여 더 많은 WDAC 정책을 배포합니다.

  4. RefreshPolicy.exe 실행하여 관리형 엔드포인트에서 모든 WDAC 정책을 활성화하고 새로 고칩니다.

    & $RefreshPolicyTool
    

다른 모든 버전의 Windows 및 Windows Server에 대한 정책 배포

WMI를 사용하여 다른 모든 버전의 Windows 및 Windows Server에 정책을 적용합니다.

  1. 스크립트에서 사용할 변수를 초기화합니다.

    # Policy binary files should be named as SiPolicy.p7b for Windows 10 versions earlier than 1903
    $PolicyBinary = "<Path to policy binary file to deploy>"
    $DestinationBinary = $env:windir+"\System32\CodeIntegrity\SiPolicy.p7b"
    
  2. Windows Defender WDAC(애플리케이션 제어) 정책 이진 파일을 대상으로 복사합니다.

    Copy-Item  -Path $PolicyBinary -Destination $DestinationBinary -Force
    
  3. WMI를 사용하여 WDAC 정책 새로 고침 및 활성화

    Invoke-CimMethod -Namespace root\Microsoft\Windows\CI -ClassName PS_UpdateAndCompareCIPolicy -MethodName Update -Arguments @{FilePath = $DestinationBinary}
    

서명된 정책 배포

서명된 WDAC 정책을 사용하는 경우 이전 섹션에 설명된 위치 외에 디바이스의 EFI 파티션에 정책을 배포해야 합니다. 서명되지 않은 WDAC 정책은 EFI 파티션에 있을 필요가 없습니다.

  1. EFI 볼륨을 탑재하고 디렉터리가 없는 경우 관리자 권한 PowerShell 프롬프트에서 만듭니다.

    $MountPoint = 'C:\EFIMount'
    $EFIDestinationFolder = "$MountPoint\EFI\Microsoft\Boot\CiPolicies\Active"
    $EFIPartition = (Get-Partition | Where-Object IsSystem).AccessPaths[0]
    if (-Not (Test-Path $MountPoint)) { New-Item -Path $MountPoint -Type Directory -Force }
    mountvol $MountPoint $EFIPartition
    if (-Not (Test-Path $EFIDestinationFolder)) { New-Item -Path $EFIDestinationFolder -Type Directory -Force }
    
  2. 서명된 정책을 만든 폴더에 복사합니다.

    Copy-Item -Path $PolicyBinary -Destination $EFIDestinationFolder -Force
    
  3. 시스템을 다시 시작합니다.