ApplicationControl CSP

Windows Defender WDAC(애플리케이션 제어) 정책은 MDM 서버에서 또는 ApplicationControl CSP(구성 서비스 공급자)를 통해 WMI 브리지를 통해 PowerShell을 사용하여 로컬로 관리할 수 있습니다. ApplicationControl CSP는 Windows 10 버전 1903에 추가되었습니다. 이 CSP는 확장된 진단 기능과 여러 정책(Windows 10 버전 1903에 도입됨)에 대한 지원을 제공합니다. 또한 다시 부팅하지 않고 정책 배포(Windows 10 버전 1709에 도입됨)를 지원합니다. AppLocker CSP와 달리 ApplicationControl CSP는 다시 부팅 안 함 옵션이 있는지 올바르게 검색하므로 다시 부팅을 예약하지 않습니다.

AppLocker CSP의 CodeIntegrity 노드를 사용하여 배포된 기존 WDAC(Windows Defender Application Control) 정책은 이제 ApplicationControl CSP URI를 사용하여 배포할 수 있습니다. AppLocker CSP를 사용한 WDAC 정책 배포는 계속 지원되지만 모든 새 기능 작업은 ApplicationControl CSP에서만 수행됩니다.

다음 목록에서는 ApplicationControl 구성 서비스 공급자 노드를 보여 줍니다.

정책

범위 에디션 적용 가능한 OS
✅ 장치
❌ 사용자
✅ 프로
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise/IoT Enterprise LTSC
✅Windows 10 버전 1903 [10.0.18362] 이상
./Vendor/MSFT/ApplicationControl/Policies

모든 정책을 포함하는 하위 트리의 시작입니다.

각 정책은 GUID(Globally Unique Identifier)로 식별됩니다.

설명 프레임워크 속성:

속성 이름 속성 값
형식 node
액세스 유형 가져오기

정책/{Policy GUID}

범위 에디션 적용 가능한 OS
✅ 장치
❌ 사용자
✅ 프로
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise/IoT Enterprise LTSC
✅Windows 10 버전 1903 [10.0.18362] 이상
./Vendor/MSFT/ApplicationControl/Policies/{Policy GUID}

정책의 GUID입니다.

각 정책 GUID 노드에는 정책 노드와 해당 PolicyInfo 노드가 포함됩니다.

설명 프레임워크 속성:

속성 이름 속성 값
형식 node
액세스 유형 가져오기
동적 노드 명명 UniqueName: ApplicationControl CSP는 지정된 정책 URI의 "ID" 세그먼트가 정책 Blob의 정책 ID와 동일한 GUID임을 적용합니다.

정책/{정책 GUID}/정책

범위 에디션 적용 가능한 OS
✅ 장치
❌ 사용자
✅ 프로
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise/IoT Enterprise LTSC
✅Windows 10 버전 1903 [10.0.18362] 이상
./Vendor/MSFT/ApplicationControl/Policies/{Policy GUID}/Policy

base64로 인코딩된 정책 이진입니다. 지원되는 값은 ConvertFrom-CIPolicy cmdlet에 의해 정책 XML 파일에서 변환된 이진 파일입니다.

기본값은 비어 있습니다.

설명 프레임워크 속성:

속성 이름 속성 값
형식 b64
액세스 유형 추가, 삭제, 가져오기, 바꾸기

Policies/{Policy GUID}/PolicyInfo

범위 에디션 적용 가능한 OS
✅ 장치
❌ 사용자
✅ 프로
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise/IoT Enterprise LTSC
✅Windows 10 버전 1903 [10.0.18362] 이상
./Vendor/MSFT/ApplicationControl/Policies/{Policy GUID}/PolicyInfo

GUID로 표시된 정책을 설명하는 정보입니다.

설명 프레임워크 속성:

속성 이름 속성 값
형식 node
액세스 유형 가져오기
Policies/{Policy GUID}/PolicyInfo/BasePolicyId
범위 에디션 적용 가능한 OS
✅ 장치
❌ 사용자
✅ 프로
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise/IoT Enterprise LTSC
✅Windows 10 버전 1903 [10.0.18362] 이상
./Vendor/MSFT/ApplicationControl/Policies/{Policy GUID}/PolicyInfo/BasePolicyId

정책 GUID로 표시된 정책의 BasePolicyId입니다.

설명 프레임워크 속성:

속성 이름 속성 값
형식 chr (문자열)
액세스 유형 가져오기
Policies/{Policy GUID}/PolicyInfo/FriendlyName
범위 에디션 적용 가능한 OS
✅ 장치
❌ 사용자
✅ 프로
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise/IoT Enterprise LTSC
✅Windows 10 버전 1903 [10.0.18362] 이상
./Vendor/MSFT/ApplicationControl/Policies/{Policy GUID}/PolicyInfo/FriendlyName

정책 GUID로 표시된 정책의 FriendlyName입니다.

설명 프레임워크 속성:

속성 이름 속성 값
형식 chr (문자열)
액세스 유형 가져오기
Policies/{Policy GUID}/PolicyInfo/IsAuthorized
범위 에디션 적용 가능한 OS
✅ 장치
❌ 사용자
✅ 프로
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise/IoT Enterprise LTSC
✅Windows 10 버전 1903 [10.0.18362] 이상
./Vendor/MSFT/ApplicationControl/Policies/{Policy GUID}/PolicyInfo/IsAuthorized

GUID로 표시된 정책이 시스템의 적용 엔진에 의해 로드될 수 있는 권한이 있는지 여부입니다.

지원되는 값은 다음과 같습니다.

  • True: 시스템의 적용 엔진에서 정책을 로드할 권한이 있음을 나타냅니다.
  • False: 시스템의 적용 엔진에서 정책을 로드할 권한이 없다는 것을 나타냅니다. 이 값은 기본값입니다.

설명 프레임워크 속성:

속성 이름 속성 값
형식 bool
액세스 유형 가져오기
Policies/{Policy GUID}/PolicyInfo/IsBasePolicy
범위 에디션 적용 가능한 OS
✅ 장치
❌ 사용자
✅ 프로
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise/IoT Enterprise LTSC
✅Windows 10 버전 1903 [10.0.18362] 이상
./Vendor/MSFT/ApplicationControl/Policies/{Policy GUID}/PolicyInfo/IsBasePolicy

정책이 기본 정책과 추가 정책인 경우 TRUE/FALSE입니다.

설명 프레임워크 속성:

속성 이름 속성 값
형식 bool
액세스 유형 가져오기
Policies/{Policy GUID}/PolicyInfo/IsDeployed
범위 에디션 적용 가능한 OS
✅ 장치
❌ 사용자
✅ 프로
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise/IoT Enterprise LTSC
✅Windows 10 버전 1903 [10.0.18362] 이상
./Vendor/MSFT/ApplicationControl/Policies/{Policy GUID}/PolicyInfo/IsDeployed

GUID로 표시된 정책이 시스템(물리적 컴퓨터)에 배포되는지 여부

지원되는 값은 다음과 같습니다.

  • True: 정책이 시스템에 배포되고 물리적 컴퓨터에 있음을 나타냅니다.
  • False: 정책이 시스템에 배포되지 않고 물리적 컴퓨터에 없음을 나타냅니다. 이 값은 기본값입니다.

설명 프레임워크 속성:

속성 이름 속성 값
형식 bool
액세스 유형 가져오기
Policies/{Policy GUID}/PolicyInfo/IsEffective
범위 에디션 적용 가능한 OS
✅ 장치
❌ 사용자
✅ 프로
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise/IoT Enterprise LTSC
✅Windows 10 버전 1903 [10.0.18362] 이상
./Vendor/MSFT/ApplicationControl/Policies/{Policy GUID}/PolicyInfo/IsEffective

GUID로 표시된 정책이 시스템에 유효한지 여부(적용 엔진에 의해 로드되고 적용됨)

지원되는 값은 다음과 같습니다.

  • True: 정책이 적용 엔진에 의해 로드되고 시스템에 적용됨을 나타냅니다.
  • False: 정책이 적용 엔진에 의해 로드되지 않고 시스템에 적용되지 않음을 나타냅니다. 이 값은 기본값입니다.

설명 프레임워크 속성:

속성 이름 속성 값
형식 bool
액세스 유형 가져오기
Policies/{Policy GUID}/PolicyInfo/IsSystemPolicy
범위 에디션 적용 가능한 OS
✅ 장치
❌ 사용자
✅ 프로
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise/IoT Enterprise LTSC
✅Windows 10 버전 1903 [10.0.18362] 이상
./Vendor/MSFT/ApplicationControl/Policies/{Policy GUID}/PolicyInfo/IsSystemPolicy

정책이 시스템 정책인 경우 TRUE/FALSE는 OS의 일부로 Microsoft에서 관리하는 정책입니다.

설명 프레임워크 속성:

속성 이름 속성 값
형식 bool
액세스 유형 가져오기
Policies/{Policy GUID}/PolicyInfo/PolicyOptions
범위 에디션 적용 가능한 OS
✅ 장치
❌ 사용자
✅ 프로
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise/IoT Enterprise LTSC
✅Windows 10 버전 1903 [10.0.18362] 이상
./Vendor/MSFT/ApplicationControl/Policies/{Policy GUID}/PolicyInfo/PolicyOptions

정책 GUID로 표시된 정책의 정책옵션입니다.

설명 프레임워크 속성:

속성 이름 속성 값
형식 chr (문자열)
액세스 유형 가져오기
Policies/{Policy GUID}/PolicyInfo/Status
범위 에디션 적용 가능한 OS
✅ 장치
❌ 사용자
✅ 프로
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise/IoT Enterprise LTSC
✅Windows 10 버전 1903 [10.0.18362] 이상
./Vendor/MSFT/ApplicationControl/Policies/{Policy GUID}/PolicyInfo/Status

정책 GUID로 표시된 정책의 현재 상태입니다.

기본값은 0이며, 이는 상태 정책이 임을 OK나타냅니다.

설명 프레임워크 속성:

속성 이름 속성 값
형식 int
액세스 유형 가져오기
Policies/{Policy GUID}/PolicyInfo/Version
범위 에디션 적용 가능한 OS
✅ 장치
❌ 사용자
✅ 프로
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise/IoT Enterprise LTSC
✅Windows 10 버전 1903 [10.0.18362] 이상
./Vendor/MSFT/ApplicationControl/Policies/{Policy GUID}/PolicyInfo/Version

GUID로 표시된 정책의 버전(문자열)입니다. 구문 분석할 때 uint64를 포함하는 데이터 형식으로 사용합니다.

설명 프레임워크 속성:

속성 이름 속성 값
형식 chr (문자열)
액세스 유형 가져오기

토큰

범위 에디션 적용 가능한 OS
✅ 장치
❌ 사용자
✅ 프로
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise/IoT Enterprise LTSC
✅Windows 10 버전 1903 [10.0.18362] 이상
./Vendor/MSFT/ApplicationControl/Tokens

모든 토큰을 포함하는 하위 트리의 시작입니다.

설명 프레임워크 속성:

속성 이름 속성 값
형식 node
액세스 유형 가져오기

토큰/{ID}

범위 에디션 적용 가능한 OS
✅ 장치
❌ 사용자
✅ 프로
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise/IoT Enterprise LTSC
✅Windows 10 버전 1903 [10.0.18362] 이상
./Vendor/MSFT/ApplicationControl/Tokens/{ID}

토큰을 구분하는 데 사용되는 임의 ID입니다.

설명 프레임워크 속성:

속성 이름 속성 값
형식 node
액세스 유형 가져오기
동적 노드 명명 UniqueName: ApplicationControl CSP는 지정된 토큰 URI의 "ID" 세그먼트가 고유하도록 적용합니다.

토큰/{ID}/토큰

범위 에디션 적용 가능한 OS
✅ 장치
❌ 사용자
✅ 프로
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise/IoT Enterprise LTSC
✅Windows 10 버전 1903 [10.0.18362] 이상
./Vendor/MSFT/ApplicationControl/Tokens/{ID}/Token

base64로 인코딩된 토큰 이진입니다. 지원되는 값은 OneCoreDeviceUnlockService에서 가져온 이진 파일입니다.

설명 프레임워크 속성:

속성 이름 속성 값
형식 b64
액세스 유형 추가, 삭제, 가져오기, 바꾸기

토큰/{ID}/TokenInfo

범위 에디션 적용 가능한 OS
✅ 장치
❌ 사용자
✅ 프로
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise/IoT Enterprise LTSC
✅Windows 10 버전 1903 [10.0.18362] 이상
./Vendor/MSFT/ApplicationControl/Tokens/{ID}/TokenInfo

해당 ID로 표시된 토큰을 설명하는 정보입니다.

설명 프레임워크 속성:

속성 이름 속성 값
형식 node
액세스 유형 가져오기
Tokens/{ID}/TokenInfo/Status
범위 에디션 적용 가능한 OS
✅ 장치
❌ 사용자
✅ 프로
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise/IoT Enterprise LTSC
✅Windows 10 버전 1903 [10.0.18362] 이상
./Vendor/MSFT/ApplicationControl/Tokens/{ID}/TokenInfo/Status

토큰 ID로 표시된 토큰의 현재 상태입니다.

설명 프레임워크 속성:

속성 이름 속성 값
형식 int
액세스 유형 가져오기
토큰/{ID}/TokenInfo/Type
범위 에디션 적용 가능한 OS
✅ 장치
❌ 사용자
✅ 프로
✅ Enterprise
✅ Education
✅ Windows SE
✅ IoT Enterprise/IoT Enterprise LTSC
✅Windows 10 버전 1903 [10.0.18362] 이상
./Vendor/MSFT/ApplicationControl/Tokens/{ID}/TokenInfo/Type

토큰 ID로 표시된 토큰의 유형입니다.

설명 프레임워크 속성:

속성 이름 속성 값
형식 int
액세스 유형 가져오기

IsAuthorized, IsDeployed 및 IsEffective 값

다음 표에서는 IsAuthorized, IsDeployed 및 IsEffective 노드의 다양한 값을 기반으로 이 정책의 결과를 제공합니다.

Isauthorized IsDeployed IsEffective 결과
True True True 정책이 현재 실행 중이며 적용 중입니다.
True True False 정책을 적용하려면 다시 부팅이 필요합니다.
True False True CI에서 언로드하려면 정책을 다시 부팅해야 합니다.
False True True 연결할 수 없습니다.
True False False *연결할 수 없습니다.
False True False *연결할 수 없습니다.
False False True 연결할 수 없습니다.
False False False *연결할 수 없습니다.

* 유효한 중간 상태를 표시합니다. 그러나 MDM 트랜잭션이 이 상태 구성을 초래하면 가 END_COMMAND_PROCESSING 실패합니다.

Microsoft Intune 사용 지침

Configuration Manager Intune 독립 실행형 또는 하이브리드 관리를 사용하여 ApplicationControl CSP를 통해 사용자 지정 정책을 배포하는 고객의 경우 Microsoft Intune 사용하여 Windows Defender 애플리케이션 제어 정책 배포를 참조하세요.

일반 MDM 서버 사용 지침

Intune 사용하지 않고 ApplicationControl CSP를 사용하려면 다음을 수행해야 합니다.

  1. 1903년 이전 시스템의 경우 또는 <PolicyTypeID> 정책 xml <PolicyID> 에서 찾을 수 있는 생성된 정책의 GUID를 알고 있습니다.
  2. 배포하기 위해 cmdlet을 ConvertFrom-CIPolicy 사용하여 정책을 이진 형식으로 변환합니다. 이진 정책은 서명되거나 서명되지 않을 수 있습니다.
  3. 명령줄 도구를 사용하여 certutil -encode 정책 노드(이진 정책 표현의 Base64로 인코딩된 Blob)를 만듭니다.

다음은 샘플 certutil 호출입니다.

certutil  -encode WinSiPolicy.p7b WinSiPolicy.cer

certutil을 사용하는 대안은 다음 PowerShell 호출을 사용하는 것입니다.

[Convert]::toBase64String($(Get-Content -Encoding Byte -ReadCount 0 -Path <bin file>))

정책 배포

CSP를 사용하여 새 기본 정책을 배포하려면 Base64로 인코딩된 정책 노드를 {Data}로 사용하여 ./Vendor/MSFT/ApplicationControl/Policies/Policy GUID/Policy 에서 ADD를 수행합니다. 아래 예제 1의 형식 섹션을 참조하세요.

기본 정책 및 추가 정책을 배포하려면 다음을 수행합니다.

  1. 기본 정책의 GUID 및 정책 데이터와 함께 Base64로 인코딩된 정책 노드를 {Data}로 사용하여 ./Vendor/MSFT/ApplicationControl/Policies/Policy GUID/ Policy에서 ADD를 수행합니다.
  2. 각 기본 또는 추가 정책(자체 GUID 및 데이터 포함)에 대해 반복합니다.

다음 예제에서는 두 개의 기본 정책 및 추가 정책의 배포를 보여 줍니다(이미 보완하는 기본 정책을 지정하고 ADD에 반영할 필요가 없음).

예제 1: 첫 번째 기본 정책 추가

<Add>
    <CmdID>1</CmdID>
    <Item>
        <Target>
            <LocURI>./Vendor/MSFT/ApplicationControl/Policies/{Base1GUID}/Policy</LocURI>
        </Target>
        <Meta>
             <Format xmlns="syncml:metinf">b64</Format>
        </Meta>
        <Data> {Base1Data} </Data>
    </Item>
</Add>

예제 2: 두 번째 기본 정책 추가

<Add>
    <CmdID>1</CmdID>
    <Item>
        <Target>
            <LocURI>./Vendor/MSFT/ApplicationControl/Policies/{Base2GUID}/Policy</LocURI>
        </Target>
        <Meta>
            <Format xmlns="syncml:metinf">b64</Format>
        </Meta>
        <Data> {Base2Data} </Data>
    </Item>
</Add>

예제 3: 추가 정책 추가

<Add>
    <CmdID>1</CmdID>
    <Item>
        <Target>
            <LocURI>./Vendor/MSFT/ApplicationControl/Policies/{Supplemental1GUID}/Policy</LocURI>
        </Target>
        <Meta>
            <Format xmlns="syncml:metinf">b64</Format>
        </Meta>
        <Data> {Supplemental1Data} </Data>
    </Item>
</Add>

정책 가져오기

배포된 정책의 GUID를 사용하여 GET을 수행하여 정책 자체 또는 관련 정보를 심문/검사합니다.

다음 표에서는 다른 노드에서 Get 작업의 결과를 표시합니다.

노드 결과 가져오기
./Vendor/MSFT/ApplicationControl/Policies/Policy GUID/Policy 원시 p7b
./Vendor/MSFT/ApplicationControl/Policies/Policy GUID/PolicyInfo/Version 정책 버전
./Vendor/MSFT/ApplicationControl/Policies/Policy GUID/PolicyInfo/IsEffective 정책이 적용되고 있나요?
./Vendor/MSFT/ApplicationControl/Policies/Policy GUID/PolicyInfo/IsDeployed 시스템의 정책인가요?
./Vendor/MSFT/ApplicationControl/Policies/Policy GUID/PolicyInfo/IsAuthorized 시스템에 권한이 부여된 정책인가요?
./Vendor/MSFT/ApplicationControl/Policies/Policy GUID/PolicyInfo/Status 배포에 성공했습니다.
./Vendor/MSFT/ApplicationControl/Policies/Policy GUID/PolicyInfo/FriendlyName 정책당 식별 이름

Get 명령의 예는 다음과 같습니다.

 <Get>
    <CmdID>1</CmdID>
        <Item>
            <Target>
                <LocURI>./Vendor/MSFT/ApplicationControl/Policies/{PolicyGUID}/Policy</LocURI>
            </Target>
        </Item>
 </Get>

정책 삭제

다시 부팅하지 않은 삭제

삭제 시 ApplicationControl CSP를 통해 배포된 정책은 시스템에서 제거되지만 다음 재부팅까지 계속 적용됩니다. 기능적으로 재부팅 없는 삭제를 수행하려면 먼저 기존 정책을 모두 허용 정책(C:\Windows\schemas\CodeIntegrity\ExamplePolicies\AllowAll.xml 있음)으로 바꾼 다음 업데이트된 정책을 삭제합니다. 이 시퀀스는 즉시 모든 항목이 차단되는 것을 방지하고 다음 다시 부팅 시 정책을 완전히 비활성화합니다.

서명되지 않은 정책

서명되지 않은 정책을 삭제하려면 ./Vendor/MSFT/ApplicationControl/Policies/Policy GUID/Policy에서 DELETE를 수행합니다.

서명된 정책

참고

기본적으로 서명된 정책은 서명된 다른 정책으로만 대체할 수 있습니다. 따라서 ./Vendor/MSFT/ApplicationControl/Policies/Policy GUID/Policy 에서 DELETE를 수행하는 것으로는 서명된 정책을 삭제하기에 충분하지 않습니다.

서명된 정책을 삭제하려면 다음을 수행합니다.

  1. 서명되지 않은 정책을 허용하는 서명된 업데이트로 대체합니다.
  2. 서명되지 않은 모든 허용 정책을 사용하여 다른 업데이트를 배포합니다.
  3. 삭제를 수행합니다.

Delete 명령의 예는 다음과 같습니다.

   <Delete>
     <CmdID>1</CmdID>
        <Item>
            <Target>
                  <LocURI>./Vendor/MSFT/ApplicationControl/Policies/{PolicyGUID}/Policy</LocURI>
            </Target>
        </Item>
   </Delete>

PowerShell 및 WMI 브리지 사용 지침

ApplicationControl CSP는 PowerShell에서 로컬로 또는 WMI 브리지 공급자를 사용하여 Configuration Manager 작업 순서 스크립팅을 통해 관리할 수도 있습니다.

WMI 브리지 사용을 위한 설정

  1. WDAC 정책을 Base64로 변환합니다.

  2. 로컬 시스템 컨텍스트에서 PowerShell을 엽니다(PSExec 또는 이와 유사한 항목).

  3. WMI 인터페이스 사용:

    $namespace = "root\cimv2\mdm\dmmap"
    $policyClassName = "MDM_ApplicationControl_Policies01_01"
    $policyBase64 = "<base64policy>"
    

WMI 브리지를 통해 정책 배포

다음 명령을 실행합니다. PolicyID는 정책 xml에서 찾을 수 있는 GUID이며 중괄호 없이 여기에서 사용해야 합니다.

New-CimInstance -Namespace $namespace -ClassName $policyClassName -Property @{ParentID="./Vendor/MSFT/ApplicationControl/Policies";InstanceID="<PolicyID>";Policy=$policyBase64}

WMI 브리지를 통해 모든 정책 쿼리

Get-CimInstance -Namespace $namespace -ClassName $policyClassName

구성 서비스 공급자 참조