Scripts de deteção de conformidade personalizados para o Microsoft Intune

Antes de poder utilizar definições personalizadas para conformidade com o Microsoft Intune, tem de definir um script que possa detetar as definições de conformidade personalizadas que estão disponíveis nos dispositivos. O script que utilizar depende da plataforma:

  • Os dispositivos Windows utilizam um script do PowerShell.
  • Os dispositivos Linux podem executar scripts em qualquer idioma, desde que o interpretador correspondente seja instalado e configurado no dispositivo.

O script de deteção é implementado nos dispositivos como parte das suas políticas de conformidade personalizadas. Quando a conformidade é executada num dispositivo, o script deteta as definições que são definidas pelo ficheiro JSON que também fornece através da política de conformidade personalizada.

Todos os scripts de deteção:

  • São adicionados ao Intune antes de criar uma política de conformidade. Depois de serem adicionados, os scripts estão disponíveis para selecionar quando cria uma política de conformidade com definições personalizadas.
    • Cada script de deteção só pode ser utilizado com uma política de conformidade e cada política de conformidade só pode incluir um script de deteção.
    • Os scripts de deteção atribuídos a uma política de conformidade não podem ser eliminados até que o script não seja atribuído à política.
  • Execute num dispositivo que recebe a política de conformidade. O script avalia as condições do ficheiro JSON que carrega ao criar uma política de conformidade personalizada.
  • Identifique uma ou mais definições, conforme definido no JSON, e devolva uma lista de valores detetados para essas definições. Um único script pode ser atribuído a cada política e suporta a deteção de várias definições.

Além disso, o script do PowerShell para Windows:

  • Tem de ser comprimido para os resultados de saída numa única linha.
  • Por exemplo: $hash = @{ Manufacturer = $WMI_ComputerSystem.Manufacturer; BiosVersion = $WMI_BIOS.SMBIOSBIOSVersion; TPMChipPresent = $TPM.TPMPresent} tem de incluir a seguinte linha no final do script: return $hash | ConvertTo-Json -Compress

Limites

Os scripts que escrever têm de estar dentro dos seguintes limites para que os dados de compatibilidade sejam devolvidos com êxito ao Intune:

  • Os scripts não podem ter mais de 1 megabyte (MB) cada.
  • O resultado gerado por cada script não pode ser superior a 1 MB.
  • Os scripts têm de ter um tempo de execução limitado:
    • No Linux, os scripts têm de demorar cinco minutos ou menos a serem executados.
    • No Windows, os scripts têm de demorar 10 minutos ou menos a serem executados.

Script de deteção de exemplo para Windows

O exemplo seguinte é um script do PowerShell de exemplo que pode utilizar para dispositivos Windows:

$WMI_ComputerSystem = Get-WMIObject -class Win32_ComputerSystem
$WMI_BIOS = Get-WMIObject -class Win32_BIOS 
$TPM = Get-Tpm

$hash = @{ Manufacturer = $WMI_ComputerSystem.Manufacturer; BiosVersion = $WMI_BIOS.SMBIOSBIOSVersion; TPMChipPresent = $TPM.TPMPresent}
return $hash | ConvertTo-Json -Compress

Segue-se um exemplo da saída do script de exemplo do Windows:

{"BiosVersion":"1.24","Manufacturer":"Microsoft Corporation","TPMChipPresent":true}

Script de deteção de exemplo para Linux

Observação

Os scripts de deteção no Linux são executados no contexto do Utilizador e, como tal, não podem verificar as definições ao nível do sistema que requerem elevação. Um exemplo disto é o state/hash do /etc/sudoers ficheiro.

Os scripts de deteção para Linux podem chamar qualquer intérprete que cumpra os seus requisitos. Certifique-se de que o interpretador escolhido está corretamente instalado e configurado no dispositivo de destino antes de o script ser implementado. Para especificar o interpretador para um script, inclua uma linha shebang na parte superior do script, indicando o caminho para o binário do intérprete.

Por exemplo, se o script deve utilizar a shell do Bash como interpretador, adicione a seguinte linha na parte superior do script:

[ !/bin/bash ]

Se quiser utilizar o Python para o script, indique onde o interpretador está instalado. Por exemplo, adicione o seguinte à parte superior do script: [ !/usr/bin/python3 ] ou [ !/usr/bin/env python ]

Melhor prática recomendada: para permitir que os scripts processem cenários como interrupções ou sinais de cancelamento, implemente mecanismos de terminação corretos. Quando um script coloca em cache e processa corretamente estes sinais, o script pode executar tarefas de limpeza e existir corretamente, garantindo que os recursos são libertados corretamente. Por exemplo, pode detetar sinais específicos, como SIGINT (sinal de interrupção) ou SIGTERM (sinal de terminação) e definir ações personalizadas a executar quando estes sinais são recebidos. Estas ações podem incluir fechar ficheiros abertos, libertar bloqueios adquiridos ou limpar recursos temporários. O processamento adequado de sinais ajuda a manter a integridade do script e a melhorar a experiência geral do utilizador.

Para obter mais informações, veja o Guia de Exemplos de Conformidade Personalizada do Linux no Intune .

Adicionar um script de deteção ao Intune

Antes de implementar o script na produção, teste-o num ambiente isolado para garantir que a sintaxe que utiliza se comporta conforme esperado.

  1. Inicie sessão no centro de administração do Microsoft Intune e aceda a Segurança > do ponto finalScripts>deconformidade> do dispositivo Adicionar>(escolha a sua plataforma).

  2. Em Informações Básicas, forneça um Nome.

  3. Em Definições, adicione o script ao Script de deteção. Reveja cuidadosamente o script. O Intune não valida o script para erros programáticos ou de sintaxe.

  4. Apenas para Windows – nas Definições, configure o seguinte comportamento para o script do PowerShell:

    • Execute este script com as credenciais com sessão iniciada – por predefinição, o script é executado no contexto do Sistema no dispositivo. Defina este valor como Sim para que seja executado no contexto do utilizador com sessão iniciada. Se o utilizador não tiver sessão iniciada, o script volta à predefinição para o contexto do Sistema.
    • Impor verificação de assinatura de script – para obter mais informações, veja about_Signing na documentação do PowerShell.
    • Executar script no Anfitrião do PowerShell de 64 bits – por predefinição, o script é executado com o anfitrião do PowerShell de 32 bits. Defina este valor como Sim para forçar o script a ser executado com o anfitrião de 64 bits.
  5. Conclua o processo de criação do script. O script está agora visível no painel Scripts do centro de administração do Microsoft Intune e está disponível para selecionar ao configurar políticas de conformidade.

Uma vez que o fluxo de trabalho para carregar estes scripts para o centro de administração do Microsoft Intune não suporta etiquetas de âmbito, tem de lhe ser atribuída a etiqueta de âmbito predefinida para criar, editar ou ver scripts de deteção de conformidade personalizados.

Próximas etapas