TECHTARGET

PowerShell: come monitorare le appartenenze ai gruppi e i comportamenti irregolari

PowerShell ha degli automatismi che consentono di creare report nelle appartenenze a gruppi locali su un server e gruppi di sicurezza in Active Directory per tenere sotto controllo eventuali comportamenti non conformi.

Pubblicato il 25 Lug 2023

PowerShell cover

PowerShell è sia un motore di automazione object-oriented che un linguaggio di scripting con una shell della riga di comando interattiva. Lo sviluppo è di Microsoft, che ha lavorato alla progettazione per aiutare i professionisti IT a configurare i sistemi e automatizzare le attività amministrative. Basato sul framework .NET, PowerShell funziona con gli oggetti, a differenza della maggior parte delle shell associate alle righe di comando che sono basate sul testo. Impiegato sia nei dipartimenti IT che in entità esterne, come i provider di servizi gestiti, PowerShell funge da strumento di automazione per gli amministratori di sistema grazie alle sue capacità di scripting.

Powershell: non solo per Windows ma anche per Linux e iOs

Inizialmente nato come offerta proprietaria disponibile solo su Windows, nel 2016 Microsoft ha deciso di sdoganare PowerShell, rendendolo disponibile su Linux e macOS. La soluzione consente sia di automatizzare le attività di sistema, come l’elaborazione batch, che di creare strumenti di gestione per le implementazioni più comuni. Il linguaggio offre diversi modi per automatizzare le attività, tramite:

  • cmdlet, che sono classi .NET molto piccole che appaiono come comandi di sistema
  • script, che sono combinazioni di cmdlet e logica associat;
  • eseguibili, che sono strumenti autonomi
  • istanza di classi .NET standard

Gli amministratori possono utilizzare PowerShell per gestire un’ampia gamma di attività come, ad esempio, estrarre informazioni sui sistemi operativi, come qual è la versione specifica e quali sono i livelli di service pack.

Perché Powershell fa la differenza

Come programma, PowerShell consente di impartire comandi al sistema e di aprire programmi da un terminale senza utilizzare l’interfaccia grafica di Windows. Nel novero delle funzionalità di PowerShell rientra il controllo delle appartenenze ai gruppi con privilegi che è un’attività importante che il programma può gestire con il minimo sforzo.

Gestire i membri dei gruppi, come gli amministratori di dominio in Active Directory o il gruppo di amministratori locali su un server può essere relativamente semplice negli ambienti piccoli. Tuttavia, in ambienti più ampi in cui molte persone hanno accesso amministrativo a questi gruppi, la gestione diventa più problematica. Con PowerShell basta scrivere uno script per monitorare, o addirittura imporre, l’appartenenza a questi gruppi. Sia nel caso dei server Windows che per Active Directory, l’approccio alla gestione di questi gruppi è simile. Come spiegano gli esperti, per farlo è necessario:

  • mantenere un elenco dei gruppi da monitorare
  • ottenere i membri di ciascun gruppo
  • verificare eventuali modifiche dall’ultima volta che lo script è stato eseguito

Come raccogliere le appartenenze a gruppi locali su Windows Server

Su un server locale, considerando come sia possibile espandere la propria copertura ad altri gruppi regolando lo script di conseguenza, l’elenco dei gruppi è un’attività piuttosto semplice. Per entrare più nel dettaglio gli specialisti prendono come esempio due casi: quello del gruppo amministratori e quello del gruppo degli utenti desktop remoti.

Avviare lo script con una variabile per contenere i gruppi, quindi aggiungi un ciclo foreach (quello che consente agli amministratori di scorrere un array e specificare il nome della variabile per ogni elemento) per visualizzare ciascuno di quei gruppi, restituendo la loro appartenenza al gruppo.

È possibile anche prendere quegli abbonamenti e inviarli come rapporto via e-mail, usando PowerShell per monitorare le appartenenze ai gruppi e inviare notifiche in caso di modifiche.

Per farlo, è necessario esportare le appartenenze in un file CSV e quindi caricarlo per confrontare l’esecuzione precedente con l’esecuzione corrente, usando due cicli foreach aggiuntivi: il primo cercherà gli utenti che sono stati aggiunti e il secondo cercherà gli utenti che sono stati rimossi.

Lo script emetterà gli utenti correnti in un file CSV che verrà utilizzato per confrontare l’appartenenza al gruppo corrente con uno stato precedente. Il passaggio successivo aggiunge la notifica. Sono disponibili molte opzioni, come ad esempio il comando Send-MailMessage, ma questa esercitazione per instradare la notifica utilizzerà le app per la logica di Azure.

Per farlo bisogna creare una funzione e includerla nella parte superiore dello script, come segue:

A seguire è necessario generare l’HTML e chiamare quella funzione nel ciclo foreach.

Di seguito, invece, un esempio dell’e-mail che indica che un utente è stato aggiunto al gruppo di utenti desktop remoto.

Di seguito lo script da trascrivere e salvare in un percorso locale su ciascun server, per richiamarlo periodicamente nel caso di un’attività pianificata.

Perché monitorare le appartenenze ai gruppi con uno script di PowerShell?

A detta degli esperti, PowerShell potrebbe non avere il fascino di un prodotto di monitoraggio sofisticato ma, una volta che gli amministratori si son presi del tempo per per imparare a scrivere e gestire i vari script si rivela un ottimo supporto di lavoro. Una versione più sofisticata dello script può consentire persino di rimuovere gli utenti che non dovrebbero più essere nel gruppo o aggiungere utenti che sono stati rimossi accidentalmente. PowerShell è sufficientemente flessibile per gestire queste attività, liberando tempo e risorse dei team IT.

Valuta la qualità di questo articolo

La tua opinione è importante per noi!

Articoli correlati

Articolo 1 di 4