Gestire e ripristinare l’estensione MDE su Azure Arc con una console PowerShell e reportistica Excel

Le infrastrutture ibride al giorno d’oggi sono molteplici, e poter collezionare log o sfruttare le potenzialità del Cloud anche sui sistemi on-prem è diventato un must per le organizzazioni, questo per rispondere in modo sempre più veloce e puntuale ad attacchi informatici sempre più sofisticati.

Per rispondere a queste esigenze esiste l’Agent di Azure Arc che permette di estendere le potenzialità del cloud a sistemi che risultano on-prem, ma non solo in quanto aiuta le organizzazioni a poter sfruttare anche la log collection verso il siem di casa Redmond e sfruttare eventualmente le funzionalità avanzate di sicurezza offerte da Defender for Cloud.

A tal proposito vi riporto due articoli, che avevo scritto per la community inerenti alla log collection di sistemi on-prem e a come poter sfruttare le potenzialità di Defender for Cloud sui server per eseguire onboarding di Defender for Server:

Cosa è Azure Arc?

Azure Arc semplifica la governance e la gestione offrendo una piattaforma di gestione multicloud e locale coerente per:

  • Gestire insieme l’intero ambiente proiettando le risorse non Azure e/o locali esistenti in Azure Resource Manager.
  • Gestire macchine virtuali, cluster Kubernetes e database come se fossero in esecuzione in Azure.
  • Usare i servizi e le funzionalità di gestione di Azure familiari, indipendentemente dalla posizione in cui si trovano le risorse.
  • Continuare a usare le operazioni ITOps tradizionali introducendo le procedure DevOps per supportare nuovi modelli nativi del cloud nell’ambiente in uso.
  • Configurare percorsi personalizzati come livello di astrazione sopra i cluster Kubernetes abilitati per Azure Arc e le estensioni del cluster

Figura 1: Architettura di Azure Arc

Quali sono i vantaggi principali?

Alcuni degli scenari principali supportati da Azure Arc sono:

  • Implementare inventario, gestione, governance e sicurezza coerenti per i server nell’ambiente in uso
  • Configurare estensioni per le macchine virtuali per usare i servizi offerti da Azure (il nostro caso)
  • Gestione e governance dei cluster Kubernetes su larga scala
  • Usare GitOps per distribuire configurazioni in uno o più cluster da repository Git
  • Conformità e configurazione zero-touch per i cluster Kubernetes tramite Criteri di Azure
  • Eseguire i servizi dati di Azure in qualsiasi ambiente Kubernetes come se fosse in esecuzione in Azure (in particolare Istanza gestita di SQL di Azure, con vantaggi come aggiornamenti, aggiornamenti, sicurezza e monitoraggio). Usare la scalabilità elastica e applicare gli aggiornamenti senza tempi di inattività dell’applicazione, anche senza connessione continua ad Azure
  • Esperienza unificata che consente di visualizzare le risorse con abilitazione di Azure Arc sia che si usi il portale di Azure, l’interfaccia della riga di comando di Azure, Azure PowerShell o l’API REST di Azure

Quanto costa questo servizio?

Server abilitati per Azure Arc

La seguente funzionalità del piano di controllo di Azure Arc è disponibile senza costi aggiuntivi:

  • Organizzazione delle risorse tramite i gruppi di gestione di Azure e tag
  • Ricerca e indicizzazione tramite Azure Resource Graph
  • Accesso e sicurezza tramite il controllo degli accessi in base al ruolo di Azure
  • Ambienti e automazione tramite i modelli e le estensioni

Tutti i servizi di Azure usati nei server abilitati per Azure Arc, ad esempio Microsoft Defender for Cloud o Monitoraggio di Azure, verranno addebitati in base ai prezzi per tale servizio. Per altre informazioni, vedere la pagina dei prezzi di Azure

Per eventuali approfondimenti sul servizio di Azure Arc vi riporto il link di riferimento Azure Arc overview – Azure Arc | Microsoft Learn

Dopo avervi fornito un’infarinatura generale del servizio di Azure Arc io ho eseguito l’onboarding di una macchina Virtuale Onprem, sul mio Hyper-V con l’intenzione di utilizzare Defender for Cloud per abilitare Defender for Server.

Figura 2: Macchina Onprem che risulta essere onbordata in Azure Arc e con estensione Defender “Not Enabled”

Figura 3: Estensione di Defender in Errore

Scenario reale

Per uno scenario lavorativo, mi sono trovato davanti ad un Deploy con diverse migliaia di Endpoint con l’estensione di Defender in errore, e mi sono detto come posso tramite un’unica interfaccia eseguire un Retry massivo selezionando il resources group in cui risiedono le risorse di Arc?

Certo, potevo accedere al portale di Arc entrare nella macchina disinstallare l’estensione e attendere che Azure Arc ritentasse per vedere poi l’esito, ma mi serviva qualcosa che permetteva a me di eseguire operazione di uninstall e retry quando volevo.

Pensate dover eseguire questa operazione su 2000 Endpoint, ho pertanto predisposto uno script custom per cercare di risolvere, quantomeno parzialmente questo “problema”, certo, nel mio ambiente di demo c’è solo una macchina in errore perché ho voluto replicare il problema sul mio ambiente, ma lo ho utilizzato in produzione e mi ha fatto risparmiare veramente diverso tempo.

L’articolo quindi verterà proprio sull’uso di questo script Custom, che ho voluto riportare all’interno del mio repository GitHub

NB: Specifico che eventuali dispositivi Windows 10 vengono “esclusi” in quanto l’onboarding verso Defender for Endpoint deve essere effettuato tramite la modalità per Client

La prima cosa che dovrete fare è scaricare il contenuto del repository di Github Gaudium1991/MDE-Arc-Medic

Figura 4: Download del pacchetto contenente script dal repository GitHub

Figura 5: Scegliete dove “scompattare” il file zip, nel mio caso nella cartella c:/service

Ora, aprite PowerShell, nel mio caso userò la versione 7, e posizionatevi all’interno della cartella in cui avete estratto il contenuto del file zip

Figura 6: Posizionamento tramite PowerShell all’interno della cartella estratta

Ora, una volta che avrete i permessi per accedere alla Subscription, che sono indicati all’interno del file Readme.md (nel mio caso sono Owner della subscription) recuperate TenantID e SubscriptionID di dove risiedono le vostre risorse Azure Arc

Figura 7: Permessi necessari presenti all’interno del file Readme.md

Ora accediamo al portale di Microsoft Azure per recuperare i due ID necessari all’utilizzo dello script

Figura 8: Selezioniamo la Subscription e annotiamoci il SubscriptionID, ci servirà negli steps successivi

Ora non ci resta che recuperare il TenatID

Figura 9: Recuperiamo il TenantID

Ora che abbiamo entrambi i parametri possiamo eseguire lo script

Figura 10: Esecuzione script effettiva

Ora attendere qualche secondo per permettere allo script di caricare l’interfaccia Grafica nel mio caso ci sono voluti circa 15 secondi

Figura 11: Inserire TenantID e SubscriptionID e successivamente cliccare su Connect

Figura 12: Richiesta di Login con account con permessi necessari visti in precedenza

Figura 13: Tutte le attività vengono tracciate in modo grafico sullo script

Figura 14: Selezionate il Resources Group in cui sono presenti le vostre risorse Azure Arc, nel mio caso RG-VM-Extended

Figura 15: Selezioniamo la macchina con l’estensione in errore

Figura 16: Processo iniziato, prima rimuove l’estensione e poi tenta il reinstall

Figura 17: Processo iniziato di Deletion

Figura 18: Dopo qualche minuto dal retry l’estensione ora risulta correttamente installata

Se avete tante macchine su cui avete reinstallato l’estensione e vedere quelle che magari sono ancora instato di Failed potete eseguire un Export

    Figura 19: Esecuzione Export in Excel

Figura 20: Export in Excel che vi indica diverse informazioni dandovi evidenza anche delle macchine fallite o success su differenti Tab di Excel

Ora vorrei spiegarvi anche gli altri comandi che è possibile eseguire direttamente dall’interfaccia:

  • Analyze ALL RGs: Senza selezionare il singolo resources group analizza tutte le macchine Azure Arc presenti in tutte le Subscription Azure a cui l’account ha accesso
  • Dry-run (whatif): Esegue l’attività in modalità Audit, ovvero vi fornisce evidenza di come sarebbe finita la disinstallazione e la reinstallazione senza effettivamente farla, utile su un largo numero di macchine
  • Start ALL Elegible: Senza selezionare il singolo host esegue l’attività su tutte le macchina disponibili a video
  • Search Hosts: permette di cercare un host specifico dalla lista per poi poterlo selezionare

Conclusioni

La gestione dell’estensione Microsoft Defender for Endpoint su parchi server Azure Arc di grandi dimensioni può diventare rapidamente un’attività onerosa, soprattutto quando le estensioni finiscono in stato Failed o non risultano correttamente onboardate. Con ArcMedic ho voluto trasformare un’attività ripetitiva e soggetta a errori in un processo controllato, parallelo e verificabile, mettendo l’IT Admin nella condizione di intervenire su decine di macchine senza perdere il controllo di cosa accade su ciascuna. Lo strumento nasce dall’esperienza sul campo e resta volutamente trasparente nel suo funzionamento, così da poter essere adattato alle specificità di ogni ambiente. Spero possa far risparmiare tempo a chi si trova ad affrontare gli stessi scenari, e invito la community a contribuire con segnalazioni e miglioramenti.