Punti chiave
- Crea un inventario completo di team e canali con i cmdlet PowerShell nativi per una visibilità accurata e in tempo reale.
- Estrai dai log di audit di Microsoft Purview la cronologia di creazione e modifica dei canali come prova di conformità.
- Analizza l’utilizzo dello spazio di archiviazione tramite l’API Graph per individuare punti critici dei dati e andamenti di crescita.
- Correla inventario, audit e dati di archiviazione per segnalare i problemi ad alto rischio, come i canali inattivi di grandi dimensioni.
- Mantieni una pianificazione automatizzata e la conservazione delle prove per dimostrare un monitoraggio continuo della conformità.
- Rendi operativi i risultati indirizzando i problemi ai flussi di lavoro di risoluzione e generando report di governance.
Una crescita incontrollata di Microsoft Teams può generare lacune di sicurezza e problemi di conformità quando i canali si moltiplicano senza un controllo adeguato. Un audit di Teams sistematico, basato sugli strumenti PowerShell nativi, porta alla luce questi rischi nascosti e allinea l’ambiente di collaborazione ai criteri di conservazione.
Questa guida ti accompagna nella creazione di un processo di audit ripetibile che unisce inventario dei canali, log delle attività e analisi dello spazio di archiviazione per una governance continua.
Come usare PowerShell per l’audit di Microsoft Teams
Gli audit periodici con PowerShell offrono una visibilità essenziale sull’ambiente Teams in termini di sicurezza e gestione.
📌Situazione d’uso: esegui gli audit durante le verifiche di conformità, dopo un incidente di sicurezza, prima di una migrazione o quando devi affrontare la proliferazione dei canali. È particolarmente utile per gli MSP che gestiscono più tenant di clienti diversi.
📌Prerequisiti: prima di procedere, assicurati di disporre di quanto segue:
- Modulo PowerShell di Microsoft Teams con autorizzazioni di amministratore
- Accesso ai log di audit di Microsoft Purview
- PowerShell 7 su Windows 11 e un archivio sicuro per le esportazioni
- Facoltativo: autorizzazioni Graph per il reporting sullo spazio di archiviazione
Una volta pronti questi elementi, segui i passaggi riportati di seguito.
Passaggio 1: elenca team e canali
Inizia l’audit di Microsoft Teams creando un inventario completo di tutti i team e i canali.
- Connettiti a Teams PowerShell ed esporta tutti i team:
Connect-MicrosoftTeamsGet-Team | Select-Object DisplayName, GroupId, Visibility | Export-CSV "C:\TeamsAudit\AllTeams.csv" -NoTypeInformation
- Questo comando si connette all’ambiente Teams e raccoglie in un file CSV tutti i dettagli essenziali, come nome del team, ID univoco e impostazioni di privacy. Ricordati di sostituire il percorso file di esempio, C:\TeamsAudit\AllTeams.csv, con il tuo
- Elenca tutti i canali e classificane le tipologie (ad esempio standard, privato, condiviso):
$AllTeams = Get-Teamforeach ($Team in $AllTeams) {Get-TeamChannel -GroupId $Team.GroupId | Select-Object TeamName, DisplayName, MembershipType, Description | Export-CSV "C:\TeamsAudit\AllChannels.csv" -Append -NoTypeInformation}
- Per i canali privati, rileva i proprietari in modo da individuare gli spazi orfani con Get-TeamChannelUser.
Questo metodo utilizza cmdlet PowerShell nativi per ottenere dati accurati e in tempo reale sull’ambiente Teams. Al termine avrai una base di partenza per l’analisi dello spazio di archiviazione e il monitoraggio delle attività.
Passaggio 2: estrai le attività dei canali dai log di audit di Microsoft Purview
I log di audit forniscono prove fondamentali su chi ha creato, modificato o eliminato i canali di Teams e in quale momento.
- Connettiti a Exchange Online e cerca le attività dei canali di Teams:
- Installa il modulo, se non è già presente:
Install-Module ExchangeOnlineManagement -Scope CurrentUser -Force
- Connettiti a PowerShell di Microsoft Purview (Compliance):
Connect -IPPSSession
- Estrai gli eventi di audit dei canali di Teams degli ultimi 30 giorni:
$AuditResults = Search-UnifiedAuditLog '-StartDate (Get-Date).AddDays (-30) '-EndDate (Get-Date) '-RecordType MicrosoftTeams '-Operations "ChannelCreated","ChannelUpdated","ChannelDeleted" '-ResultSize 5000
- Esporta i risultati per l’analisi:
$AuditResults |Select-Object CreationDate, UserIds, Operations, AuditData |Export-Csv "C:\TeamsAudit\ChannelActivities.csv" -NoTypeInformation
Write-Host "Audit export complete. File saved to "C:\TeamsAudit\ChannelActivities.csv"
- Esporta i dati di audit rilevanti per l’analisi:
$AuditResults | Select-Object CreationDate, UserIds, Operations, AuditData | Export-CSV "C:\TeamsAudit\ChannelActivities.csv" -NoTypeInformation
- Documenta i parametri di ricerca, l’intervallo temporale e il numero di risultati come prova di conformità.
Questo metodo interroga il log di audit unificato di Microsoft, che registra automaticamente tutti gli eventi del ciclo di vita dei canali nel tenant. Usa questo approccio quando devi indagare su incidenti specifici o dimostrare la conformità ai criteri di governance dei dati.
Dopo l’estrazione avrai un registro con marca temporale di tutte le modifiche ai canali, pronto per essere correlato all’inventario dei team e completare la documentazione della pista di audit.
Passaggio 3: aggiungi il contesto dello spazio di archiviazione con l’API Graph
Capire come viene utilizzato lo spazio di archiviazione completa l’audit di Teams, perché mette in evidenza i punti critici dei dati e gli andamenti di crescita.
- Crea una registrazione app in Azure con le autorizzazioni applicative Sites.Read.All.
- Connettiti a Microsoft Graph e recupera le metriche di archiviazione:
- Installa il modulo Microsoft Graph se non è presente:
if (-not (Get-Module -ListAvailable -Name Microsoft.Graph)) {Install-Module Microsoft.Graph -Scope CurrentUser -Force}
- Connettiti a Microsoft Graph (solo app, certificato):
Connect-MgGraph -ClientId "your-client-id" -TenantId "your-tenant-id" -CertificateThumbprint "your-cert-thumbprint" | Out-Null
- Recupera tutti i gruppi di Microsoft 365 abilitati per Teams:
$teams = Get-MgGroup -All | Where-Object { $_.ResourceProvisioningOptions -contains "Team" }$results = New-Object System.Collections.Generic.List[object]foreach ($team in $teams) {try {$drive = Get-MgGroupDrive -GroupId $team.Id$site = Get-MgGroupSite -GroupId $team.Id | Select-Object -First 1$usedPercent = if ($drive?.Quota?.Total) { [math]::Round(($drive.Quota.Used / $drive.Quota.Total) * 100, 2) } else { $null }$results.Add([PSCustomObject]@{TeamName = $team.DisplayNameSiteUrl = $site?.WebUrlTotalBytes = $drive?.Quota?.TotalUsedBytes = $drive?.Quota?.UsedUsedPercent = $usedPercentState = $drive?.Quota?.State})}catch {$results.Add([PSCustomObject]@{TeamName = $team.DisplayNameSiteUrl = $nullTotalBytes = $nullUsedBytes = $nullUsedPercent = $nullState = "error: $($_.Exception.Message)"})}}$exportFolder = "C:\TeamsAudit"if (-not (Test-Path $exportFolder)) { New-Item -Path $exportFolder -ItemType Directory | Out-Null }$csvPath = Join-Path $exportFolder "TeamStorage.csv"$results | Export-Csv -Path $csvPath -NoTypeInformation -Encoding UTF8Write-Host "Storage metrics export complete: $csvPath"
- Esporta i dati di archiviazione dei canali, inclusi gli URL di SharePoint e le metriche di utilizzo, per individuare crescite rapide o conflitti con i criteri di conservazione.
Questo metodo interroga lo spazio di archiviazione SharePoint sottostante che alimenta ogni canale di Teams, fornendo dati dimensionali accurati anche quando un canale viene rinominato. Usa questo approccio quando devi analizzare i costi di archiviazione, pianificare migrazioni o individuare archivi.
Unire le metriche di archiviazione agli eventi di audit crea un sistema di prioritizzazione efficace per i canali da rivedere e completa il flusso di lavoro di reporting sui canali di Teams.
Passaggio 4: correla i dati e segnala i problemi
Correlare i risultati dell’audit trasforma i dati grezzi in indicazioni concrete per la gestione dei canali di Teams.
- Unisci inventario, eventi di audit e dati di archiviazione usando l’ID del team e i nomi dei canali come chiavi primarie.
- Segnala le condizioni ad alto rischio con i filtri di PowerShell:
- Individua i canali inattivi che occupano molto spazio:
$InactiveLargeChannels = $ChannelData | Where-Object {$_.LastActivity -lt (Get-Date).AddDays(-90) -and $_.StorageUsed -gt 1GB}
- Questo script individua i canali rimasti inattivi negli ultimi 90 giorni che occupano comunque più di 1 GB di spazio.
- Individua i canali con attività di creazione/eliminazione frequenti:
$VolatileChannels = $AuditResults | Group-Object ChannelId | Where-Object Count -gt 10
- Questo codice raggruppa gli eventi di audit per canale e segnala i canali con più di 10 eventi registrati, evidenziando quelli che subiscono modifiche insolitamente frequenti.
- Assegna un responsabile della risoluzione e una data di scadenza per ogni problema segnalato.
Questa correlazione incrocia più fonti di dati per far emergere schemi che un’analisi a una sola dimensione non rileverebbe. Usa questo approccio quando ti prepari a un audit di conformità o quando introduci una governance proattiva.
Al termine della correlazione avrai un elenco di problemi dei canali ordinato per priorità e con responsabilità chiare, così da poter procedere a una risoluzione sistematica e mantenere nel tempo la conformità dell’audit di Microsoft Teams.
Passaggio 5: esporta, pianifica e conserva le prove
Una documentazione adeguata trasforma l’audit da controllo una tantum a strategia di conformità continua.
- Esporta report standardizzati che includano contesto del tenant, data dell’audit e risultati:
$ExportData = [PSCustomObject]@{Tenant = "Contoso"AuditDate = Get-Date -Format "yyyy-MM-dd"TeamsCount = $AllTeams.CountChannelsCount = $AllChannels.CountIssuesFlagged = $FlaggedIssues.Count}$ExportData | Export-CSV "C:\TeamsAudit\AuditSummary_$(Get-Date -Format 'yyyyMMdd').csv" -NoTypeInformation
- Questo codice crea un riepilogo dell’audit su una sola riga (nome del tenant, data dell’audit, numero di team, numero di canali e numero di problemi segnalati) e lo salva nel file C:\TeamsAudit\AuditSummary_YYYYMMDD.csv.
- Mantieni log di esecuzione che tracciano tempi di esecuzione, numero di record ed errori.
- Pianifica esecuzioni automatizzate con l’Utilità di pianificazione di Windows o con il tuo strumento RMM:
- Scansioni settimanali dell’inventario
- Estrazioni di audit complete su base mensile
- Conservazione minima di 12 mesi per tutti gli artefatti
Questo approccio sistematico produce prove datate e versionate che dimostrano un monitoraggio continuo della conformità. Usa questo metodo quando ti prepari ad audit normativi o quando implementi una governance di lungo periodo.
Una volta implementato, disporrai di una pista di audit verificabile che soddisfa i requisiti di conformità e fornisce dati storici per l’analisi degli andamenti e la pianificazione delle capacità.
Passaggio 6: agisci sui risultati dell’audit
Trasformare i risultati dell’audit in flussi di lavoro concreti fa sì che la gestione dei canali di Microsoft Teams porti un valore reale al business.
- Indirizza gli elementi segnalati ai team competenti:
- Proliferazione dei canali > flusso di lavoro di pulizia
- Lacune nella conservazione > team di revisione delle policy
- Canali inattivi di grandi dimensioni > processo di archiviazione
- Crea un processo di apertura ticket per i canali senza proprietario, individuando i problemi critici.
- Documenta risoluzioni ed eccezioni nei report di governance mensili destinati alla direzione.
Questa fase operativa integra i risultati dell’audit nei flussi di lavoro IT esistenti, garantendo che i problemi vengano assegnati e monitorati e non semplicemente rilevati. Usa questo approccio quando imposti una governance continuativa o quando devi dimostrare la conformità agli stakeholder.
Una volta implementato, chiuderai il ciclo dell’audit con risoluzioni documentate, trasformando i dati grezzi in miglioramenti misurabili nella gestione dell’ambiente Teams.
Rendi operativo l’audit di Microsoft Teams con l’automazione di NinjaOne
NinjaOne trasforma il tuo flusso di lavoro di audit in PowerShell in una soluzione automatizzata e pronta per contesti enterprise.
- Distribuisci e pianifica gli script di audit tramite la libreria di automazione di NinjaOne.
- Conserva le credenziali in modo sicuro con la gestione delle credenziali di NinjaOne per l’accesso degli account di servizio.
- Configura attivatori automatici di ticket per:
- Canali senza proprietario che richiedono un’assegnazione
- Canali inattivi di grandi dimensioni da archiviare
- Modifiche frequenti alla configurazione che indicano instabilità
Questa integrazione sfrutta la capacità di NinjaOne di inviare script agli endpoint e di archiviare le credenziali in modo sicuro, eliminando gli interventi manuali e mantenendo integra la pista di audit. Usa questo approccio quando gestisci Teams su più clienti o quando serve un reporting di livello dirigenziale.
Guida rapida
NinjaOne può eseguire l’audit dei canali di Microsoft Teams tramite PowerShell. Ecco come:
- Installa i moduli necessari:
Assicurati di avere installato i moduli PowerShell MicrosoftTeams e ExchangeOnlineManagement.
- Connettiti a Microsoft 365:
powershell
Connect-MicrosoftTeams
- Recupera i log di audit:
Usa il cmdlet Search-UnifiedAuditLog per recuperare i record di audit relativi alle attività dei canali di Teams:
powershell
Filtra ed esporta i dati:
Filtra i risultati per ottenere i dettagli sulle creazioni dei canali ed esportali in un file CSV:
powershell
$auditRecords | Select-Object
@{Name='ChannelName';Expression={$_.Parameters['ChannelName']}},
@{Name='CreatedBy';Expression={$_.Parameters['CreatedBy']}},
@{Name='CreatedTime';Expression={$_.CreatedTime}} |
Export-Csv -Path "C:\TeamsChannelAudit.csv" -NoTypeInformation
Conformità continua grazie all’automazione dell’audit di Microsoft Teams
Un audit completo di Teams unisce inventario dei canali, log delle attività di Purview e analitiche sull’archiviazione per trasformare una proliferazione caotica in una collaborazione governata.
Automatizzando questo processo con PowerShell e pianificando esecuzioni periodiche, mantieni una visibilità continua che affronta in modo proattivo rischi di sicurezza e requisiti di conformità.
Questo approccio rigoroso mantiene l’ambiente Teams ottimizzato nel lungo periodo sia per la produttività sia per la governance.
Argomenti correlati:
