CSP ApplicationControl
A tabela a seguir mostra a aplicabilidade de Windows:
| Edição | Windows 10 | Windows 11 |
|---|---|---|
| Home | Sim | Sim |
| Pro | Sim | Sim |
| Windows SE | Não | Sim |
| Negócios | Sim | Sim |
| Enterprise | Sim | Sim |
| Educação | Sim | Sim |
as políticas do WDAC (Controle de Aplicativos) do Windows Defender podem ser gerenciadas de um servidor MDM ou localmente usando o PowerShell por meio da Ponte WMI por meio do provedor de serviços de configuração (CSP) ApplicationControl. O CSP ApplicationControl foi adicionado Windows 10 versão 1903. Esse CSP fornece recursos de diagnóstico expandidos e suporte para várias políticas (introduzidas no Windows 10, versão 1903). Ele também fornece suporte para implantação de política sem reinicialização (introduzida no Windows 10, versão 1709). Ao contrário do CSP do AppLocker, o CSP do ApplicationControl detecta corretamente a presença da opção sem reinicialização e, consequentemente, não agenda uma reinicialização.
As políticas Windows Defender WDAC (Controle de Aplicativo) existentes implantadas usando o nó CodeIntegrity do AppLocker CSP agora podem ser implantadas usando o URI do CSP do ApplicationControl. Embora a implantação de política do WDAC por meio do CSP do AppLocker continue a ter suporte, todo o novo trabalho de recurso será feito somente no CSP ApplicationControl.
O exemplo a seguir mostra o CSP ApplicationControl no formato de árvore.
./Vendor/MSFT
ApplicationControl
----Policies
--------Policy GUID
------------Policy
------------PolicyInfo
----------------Version
----------------IsEffective
----------------IsDeployed
----------------IsAuthorized
----------------Status
----------------FriendlyName
------------Token
----------------TokenID
----Tokens
--------ID
------------Token
------------TokenInfo
----------------Status
------------PolicyIDs
----------------Policy GUID
----TenantID
----DeviceID
./Vendor/MSFT/ApplicationControl
Define o nó raiz para o CSP ApplicationControl.
O escopo é permanente. A operação com suporte é Get.
ApplicationControl/Policies
Um nó interno que contém todas as políticas, cada uma identificada por seu GUID (identificador global exclusivo).
O escopo é permanente. A operação com suporte é Get.
ApplicationControl/Policies/POLICY GUID
O CSP ApplicationControl impõe que o segmento de "ID" de um determinado URI de política seja o mesmo GUID que a ID da política no blob de políticas. Cada nó guid de política contém um nó de política e um nó PolicyInfo correspondente.
O escopo é dinâmico. A operação com suporte é Get.
ApplicationControl/Policies/POLICY GUID/Policy
Esse nó é o binário de política em si, que é codificado como base64.
O escopo é dinâmico. As operações com suporte são Get, Add, Delete e Replace.
O tipo de valor é b64. O valor com suporte é um arquivo binário, convertido do arquivo XML de política pelo ConvertFrom-CIPolicy cmdlet.
O valor padrão está vazio.
ApplicationControl/Policies/Policy GUID/PolicyInfo
Um nó interno que contém os nós que descrevem a política indicada pelo GUID.
O escopo é dinâmico. A operação com suporte é Get.
ApplicationControl/Policies/Policy GUID/PolicyInfo/Version
Esse nó fornece a versão da política indicada pelo GUID. Armazenado como uma cadeia de caracteres, mas ao analisar usa um uint64 como o tipo de dados que o contém.
O escopo é dinâmico. A operação com suporte é Get.
O tipo de valor é char.
ApplicationControl/Policies/Policy GUID/PolicyInfo/IsEffective
Esse nó especifica se uma política é carregada pelo mecanismo de imposição e está em vigor em um sistema.
O escopo é dinâmico. A operação com suporte é Get.
O tipo de valor é booliano. Os valores com suporte são os seguintes:
- True – indica que a política é carregada pelo mecanismo de imposição e está em vigor em um sistema.
- False — indica que a política não é carregada pelo mecanismo de imposição e não está em vigor em um sistema. Esse valor é o valor padrão.
ApplicationControl/Policies/Policy GUID/PolicyInfo/IsDeployed
Esse nó especifica se uma política é implantada no sistema e está presente no computador físico.
O escopo é dinâmico. A operação com suporte é Get.
O tipo de valor é booliano. Os valores com suporte são os seguintes:
- True – indica que a política é implantada no sistema e está presente no computador físico.
- False — indica que a política não está implantada no sistema e não está presente no computador físico. Esse valor é o valor padrão.
ApplicationControl/Policies/Policy GUID/PolicyInfo/IsAuthorized
Esse nó especifica se a política está autorizada a ser carregada pelo mecanismo de imposição no sistema. Se não for autorizada, uma política não poderá entrar em vigor no sistema.
O escopo é dinâmico. A operação com suporte é Get.
O tipo de valor é booliano. Os valores com suporte são os seguintes:
- True — indica que a política está autorizada a ser carregada pelo mecanismo de imposição no sistema.
- False — indica que a política não está autorizada a ser carregada pelo mecanismo de imposição no sistema. Esse valor é o valor padrão.
A tabela a seguir fornece o resultado dessa política com base em valores diferentes de nós IsAuthorized, IsDeployed e IsEffective:
| Isauthorized | IsDeployed | IsEffective | Resultante |
|---|---|---|---|
| True | True | True | A política está em execução no momento e está em vigor. |
| True | True | False | A política requer que uma reinicialização entre em vigor. |
| True | False | True | A política requer uma reinicialização para descarregar da CI. |
| False | True | True | Não acessível. |
| True | False | False | *Não Acessível. |
| False | True | False | *Não Acessível. |
| False | False | True | Não acessível. |
| False | False | False | *Não Acessível. |
* indica um estado intermediário válido; no entanto, se uma transação MDM resultar nessa configuração de estado, END_COMMAND_PROCESSING isso resultará em uma falha.
ApplicationControl/Policies/Policy GUID/PolicyInfo/Status
Esse nó especifica se a implantação da política indicada pelo GUID foi bem-sucedida.
O escopo é dinâmico. A operação com suporte é Get.
Tipo de valor é número inteiro. O valor padrão é 0 = OK.
ApplicationControl/Policies/Policy GUID/PolicyInfo/FriendlyName
Esse nó fornece o nome amigável da política indicada pelo GUID da política.
O escopo é dinâmico. A operação com suporte é Get.
O tipo de valor é char.
Microsoft Endpoint Manager Intune de uso
Para clientes que usam Intune gerenciamento autônomo ou híbrido com o Microsoft Endpoint Configuration Manager para implantar políticas personalizadas por meio do CSP ApplicationControl, consulte Implantar políticas de Controle de Aplicativo do Windows Defender usando Microsoft Intune.
Diretrizes genéricas de uso do servidor MDM
Para usar o CSP ApplicationControl sem Intune, você deve:
- Conheça o GUID de uma política gerada, que pode ser encontrado no xml de política como
<PolicyID>ou<PolicyTypeID>para sistemas pré-1903. - Converta as políticas em formato binário usando o
ConvertFrom-CIPolicycmdlet para ser implantado. A política binária pode ser assinada ou não assinada. - Crie um nó de política (um blob codificado em Base64 da representação de política binária) usando a ferramenta
certutil -encodede linha de comando.
Veja abaixo um exemplo de invocação certutil:
certutil -encode WinSiPolicy.p7b WinSiPolicy.cer
Uma alternativa ao uso do certutil seria usar a seguinte invocação do PowerShell:
[Convert]::toBase64String($(Get-Content -Encoding Byte -ReadCount 0 -Path <bin file>))
Implantar políticas
Para implantar uma nova política base usando o CSP, execute um ADD em ./Vendor/MSFT/ApplicationControl/Policies/Policy GUID/Policy usando o nó de política codificado em Base64 como {Data}. Consulte a seção Formatar no Exemplo 1 abaixo.
Para implantar políticas básicas e complementares:
- Execute um ADD em ./Vendor/MSFT/ApplicationControl/Policies/Policy GUID/Policy usando o nó de política codificado em Base64 como {Data} com o GUID e os dados de política para a política base.
- Repita para cada política base ou complementar (com seu próprio GUID e dados).
O exemplo a seguir mostra a implantação de duas políticas base e uma política complementar (que já especifica a política base que ela complementa e não precisa disso refletida no ADD).
Exemplo 1: Adicionar a primeira política base
<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>
Exemplo 2: Adicionar segunda política base
<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>
Exemplo 3: Adicionar política complementar
<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>
Obter políticas
Execute um GET usando o GUID de uma política implantada para interrogar/inspecionar a própria política ou informações sobre ela.
A tabela a seguir exibe o resultado da operação Get em nós diferentes:
| Nós | Obter Resultados |
|---|---|
| ./Vendor/MSFT/ApplicationControl/Policies/Policy GUID/Policy | p7b bruto |
| ./Vendor/MSFT/ApplicationControl/Policies/Policy GUID/PolicyInfo/Version | Versão da política |
| ./Vendor/MSFT/ApplicationControl/Policies/Policy GUID/PolicyInfo/IsEffective | A política está em vigor |
| ./Vendor/MSFT/ApplicationControl/Policies/Policy GUID/PolicyInfo/IsDeployed | É a política no sistema |
| ./Vendor/MSFT/ApplicationControl/Policies/Policy GUID/PolicyInfo/IsAuthorized | É a política autorizada no sistema |
| ./Vendor/MSFT/ApplicationControl/Policies/Policy GUID/PolicyInfo/Status | A implantação foi bem-sucedida |
| ./Vendor/MSFT/ApplicationControl/Policies/Policy GUID/PolicyInfo/FriendlyName | Nome amigável de acordo com a política |
Um exemplo do comando Get é:
<Get>
<CmdID>1</CmdID>
<Item>
<Target>
<LocURI>./Vendor/MSFT/ApplicationControl/Policies/{PolicyGUID}/Policy</LocURI>
</Target>
</Item>
</Get>
Excluir políticas
Exclusão sem reinicialização
Após a exclusão, as políticas implantadas por meio do CSP ApplicationControl são removidas do sistema, mas permanecem em vigor até a próxima reinicialização. Para fazer uma exclusão sem reinicialização funcional, primeiro substitua a política existente por uma política Permitir Tudo (encontrada em C:\Windows\schemas\CodeIntegrity\ExamplePolicies\AllowAll.xml) e, em seguida, exclua a política atualizada. Essa sequência impedirá imediatamente que qualquer coisa seja bloqueada e desative totalmente a política na próxima reinicialização.
Políticas não assinadas
Para excluir uma política não assinada, execute um DELETE em ./Vendor/MSFT/ApplicationControl/Policies/Policy GUID/Policy.
Políticas assinadas
Observação
Uma política assinada por padrão só pode ser substituída por outra política assinada. Portanto, executar um DELETE em ./Vendor/MSFT/ApplicationControl/Policies/Policy GUID/Policy não é suficiente para excluir uma política assinada.
Para excluir uma política assinada:
- Substitua-o por uma atualização assinada, permitindo a política não assinada.
- Implante outra atualização com a política Permitir Tudo sem sinal.
- Executar exclusão.
Um exemplo de comando Delete é:
<Delete>
<CmdID>1</CmdID>
<Item>
<Target>
<LocURI>./Vendor/MSFT/ApplicationControl/Policies/{PolicyGUID}/Policy</LocURI>
</Target>
</Item>
</Delete>
Diretrizes de uso da ponte do PowerShell e WMI
O CSP applicationControl também pode ser gerenciado localmente do PowerShell ou por meio do script de sequência de tarefas do Configuration Manager usando o Provedor de Ponte WMI.
Configuração para usar a ponte WMI
Converta sua política do WDAC em Base64.
Abra o PowerShell no contexto do sistema local (por meio de PSExec ou algo semelhante).
Use a interface WMI:
$namespace = "root\cimv2\mdm\dmmap" $policyClassName = "MDM_AppControl_Policies" $policyBase64 = …
Implantando uma política por meio da ponte WMI
Execute o comando a seguir. PolicyID é um GUID que pode ser encontrado no xml de política e deve ser usado aqui sem chaves.
New-CimInstance -Namespace $namespace -ClassName $policyClassName -Property @{ParentID="./Vendor/MSFT/ApplicationControl/Policies";InstanceID="<PolicyID>";Policy=$policyBase64}
Consultando todas as políticas por meio da ponte WMI
Get-CimInstance -Namespace $namespace -ClassName $policyClassName
Tópicos relacionados
Comentários
Submeter e ver comentários