Script di individuazione della conformità personalizzati per Microsoft Intune

Prima di poter usare impostazioni personalizzate per la conformità con Microsoft Intune, è necessario definire uno script per l'individuazione delle impostazioni di conformità personalizzate nei dispositivi. Lo script usato dipende dalla piattaforma:

  • I dispositivi Windows usano uno script di PowerShell
  • I dispositivi Linux possono eseguire script in qualsiasi lingua purché l'interprete corrispondente sia installato e configurato nel dispositivo

Lo script viene distribuito nei dispositivi come parte dei criteri di conformità personalizzati. Quando viene eseguita la conformità, lo script individua le impostazioni definite dal file JSON fornito anche tramite criteri di conformità personalizzati.

Tutti gli script di individuazione:

  • Vengono aggiunti a Intune prima di creare criteri di conformità. Dopo l'aggiunta, gli script sono disponibili per la selezione quando si creano criteri di conformità con impostazioni personalizzate.
    • Ogni script di individuazione può essere usato solo con un criterio di conformità e ogni criterio di conformità può includere solo uno script di individuazione.
    • Gli script di individuazione assegnati a un criterio di conformità non possono essere eliminati fino a quando lo script non è stato assegnato dai criteri.
  • Eseguire in un dispositivo che riceve i criteri di conformità. Lo script valuta le condizioni del file JSON caricato durante la creazione di criteri di conformità personalizzati.
  • Identificare una o più impostazioni, come definito nel codice JSON, e restituire un elenco di valori individuati per tali impostazioni. Un singolo script può essere assegnato a ogni criterio e supporta l'individuazione di più impostazioni.

Inoltre, lo script di PowerShell per Windows:

  • Deve essere compresso per restituire risultati in una singola riga.
  • Ad esempio: $hash = @{ Manufacturer = $WMI_ComputerSystem.Manufacturer; BiosVersion = $WMI_BIOS.SMBIOSBIOSVersion; TPMChipPresent = $TPM.TPMPresent} deve includere la riga seguente alla fine dello script: return $hash | ConvertTo-Json -Compress

Limiti

Gli script scritti devono essere entro i limiti seguenti per restituire correttamente i dati di conformità a Intune:

  • Gli script non possono essere maggiori di 1 megabyte (MB) ciascuno.
  • L'output generato da ogni script non può essere maggiore di 1 MB.
  • Gli script devono avere un tempo di esecuzione limitato:
    • In Linux l'esecuzione degli script deve richiedere cinque minuti o meno.
    • In Windows l'esecuzione degli script deve richiedere 10 minuti o meno.

Script di individuazione di esempio per Windows

L'esempio seguente è uno script di PowerShell di esempio che è possibile usare per i dispositivi 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

Di seguito è riportato un esempio dell'output dello script di esempio precedente:

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

Script di individuazione di esempio per Linux

Nota

Gli script di individuazione in Linux vengono eseguiti nel contesto dell'utente e, di conseguenza, non possono controllare le impostazioni a livello di sistema che richiedono l'elevazione. Un esempio di questo è il state/hash del /etc/sudoers file.

Gli script di individuazione per Linux possono chiamare qualsiasi interpeter che soddisfi i requisiti. Assicurarsi che l'interprete scelto sia installato e configurato correttamente nel dispositivo di destinazione prima della distribuzione dello script. Per specificare l'intepreter per uno script, includere una riga di shebang nella parte superiore dello script, che indica il percorso del file binario dell'interprete.

Ad esempio, se lo script deve usare la shell Bash come interprete, aggiungere la riga seguente nella parte superiore dello script:

[ !/bin/bash ]

Se si vuole usare Python per lo script, indicare dove è installato l'interprete. Ad esempio, aggiungere quanto segue all'inizio dello script: [ !/usr/bin/python3 ] o [ !/usr/bin/env python ]

Procedura consigliata: l'implementazione di meccanismi di terminazione normale negli script consente di gestire scenari come interruzioni o segnali di annullamento. Memorizzando nella cache e gestendo correttamente questi segnali, lo script può eseguire attività di pulizia ed esistere normalmente, assicurando che le risorse vengano rilasciate correttamente. Ad esempio, è possibile intercettare segnali specifici come SIGINT (segnale di interruzione) o SIGTERM (segnale di terminazione) e definire azioni personalizzate da eseguire quando questi segnali vengono ricevuti. Queste azioni possono includere la chiusura di file aperti, il rilascio di blocchi acquisiti o la pulizia delle risorse temporanee. La gestione corretta dei segnali consente di mantenere l'integrità dello script e migliorare l'esperienza utente complessiva.

Per altre informazioni, potrebbero essere utili le guide seguenti:

Aggiungere uno script di individuazione a Intune

Prima di distribuire lo script nell'ambiente di produzione, testarlo in un ambiente isolato per assicurarsi che la sintassi usata si comporti come previsto.

  1. Accedere Microsoft Intune'interfaccia di amministrazione e passare a Endpoint security>Device compliance>Scripts>Add>(scegliere la piattaforma).

  2. In Informazioni di base specificare un nome.

  3. In Impostazioni aggiungere lo script allo script di rilevamento. Esaminare attentamente lo script. Intune non convalida lo script per errori di sintassi o programmatici.

  4. Solo per Windows : in Impostazioni configurare il comportamento seguente per lo script di PowerShell:

    • Eseguire questo script usando le credenziali di accesso : per impostazione predefinita, lo script viene eseguito nel contesto di sistema nel dispositivo. Impostare questo valore su Sì per eseguirlo nel contesto dell'utente connesso. Se l'utente non è connesso, per impostazione predefinita lo script torna al contesto di sistema.
    • Applicare il controllo della firma dello script : per altre informazioni, vedere about_Signing nella documentazione di PowerShell.
    • Eseguire lo script nell'host PowerShell a 64 bit : per impostazione predefinita, lo script viene eseguito usando l'host PowerShell a 32 bit. Impostare questo valore su per forzare l'esecuzione dello script usando invece l'host a 64 bit.
  5. Completare il processo di creazione dello script. Lo script è ora visibile nel riquadro Script dell'interfaccia di amministrazione Microsoft Intune ed è disponibile per la selezione durante la configurazione dei criteri di conformità.

Si noti inoltre che il flusso di lavoro per il caricamento di questi script nell'interfaccia di amministrazione Microsoft Intune al momento non supporta i tag di ambito. È necessario avere come destinazione il tag di ambito predefinito per creare, modificare o visualizzare script di individuazione della conformità personalizzati.

Passaggi successivi