============================================================
 Microsoft Purview Compliance Toolkit — 10 script PowerShell
 SynSphere Italia · https://synsphere.it
============================================================

PREMESSA IMPORTANTE
  Nel portale di Microsoft Purview una misura CONFIGURATA e una misura che sta
  EFFETTIVAMENTE PROTEGGENDO qualcosa hanno lo stesso aspetto: una riga nell'elenco.
  Questo toolkit serve a separare le due cose. Non aggiunge configurazione al tenant:
  misura quella esistente e produce le evidenze da consegnare in un audit.

  I tre scarti che trova piu spesso, e che non generano alcun errore nel portale:
   1. una policy di conservazione il cui ambito reale non e quello che si crede;
   2. un'etichetta di riservatezza che esiste ma non e pubblicata, quindi non protegge;
   3. una policy DLP rimasta in simulazione, che registra gli eventi senza bloccare.

COSA C'E' DENTRO
  10 script PowerShell (codice originale SynSphere), tutti di SOLA LETTURA.

  01-Get-RetentionPolicyScope.ps1          Retention policy con l'ambito REALMENTE applicato
  02-Get-RetentionLabelsAndRules.ps1       Etichette di conservazione: durata, decorrenza, azione
  03-Get-SensitivityLabelsAndPolicies.ps1  Etichette di riservatezza: quali sono PUBBLICATE
  04-Get-DlpPolicies.ps1                   Policy DLP: stato, modalita, posizioni coperte
  05-Get-DlpRulesDetail.ps1                Regole DLP: cosa cercano e cosa fanno
  06-Get-DlpPoliciesInTestMode.ps1         Policy DLP mai promosse da simulazione  <-- INIZIA DA QUI
  07-Get-UnifiedAuditLogStatus.ps1         Log di controllo unificato: attivo o no
  08-Get-CustomSensitiveInfoTypes.ps1      Tipi info sensibile personalizzati, e quali sono usati
  09-Get-ComplianceSearchInventory.ps1     Ricerche eDiscovery presenti nel tenant
  10-Get-PurviewComplianceSummary.ps1      Cruscotto unico delle quattro aree

PREREQUISITI
  - PowerShell 5.1+ o PowerShell 7
  - Modulo ExchangeOnlineManagement v3.2.0+ :  Install-Module ExchangeOnlineManagement
    (fornisce sia Connect-IPPSSession sia Connect-ExchangeOnline)
  - Ruoli di sola lettura adeguati nel portale Microsoft Purview per le policy di
    conservazione, le etichette e il DLP; per il log di controllo un ruolo Exchange che
    consenta Get-AdminAuditLogConfig
  - Lo script 07 puo leggere le policy di conservazione del log solo con licenza adeguata
    (Audit Premium): se il cmdlet non e disponibile lo dichiara invece di dedurne l'assenza

CONTESTI DI CONNESSIONE (due, e NON sono interscambiabili)
  Connect-IPPSSession      -> 01, 02, 03, 04, 05, 06, 08, 09
  Connect-ExchangeOnline   -> 07
  Lo script 10 legge da entrambi ma NON apre connessioni da solo: connetti tu i due
  contesti prima di lanciarlo, e le sezioni non disponibili verranno dichiarate come tali.

  ATTENZIONE, E' LA TRAPPOLA PRINCIPALE DI QUESTA FAMIGLIA DI SCRIPT.
  I cmdlet di Purview esistono SOLO nella sessione Security & Compliance
  (Connect-IPPSSession) e non in quella di Exchange Online. Il caso peggiore e il
  contrario: la proprieta UnifiedAuditLogIngestionEnabled, se letta nella sessione
  Security & Compliance, NON da errore ma restituisce SEMPRE False (lo dichiara la
  documentazione Microsoft). Uno script che la legge nel contesto sbagliato riferisce
  "log di controllo disattivato" su un tenant dove il log e regolarmente attivo. Per
  questo lo script 07 si connette a Exchange Online, e in caso di dubbio va eseguito in
  una sessione nuova con la sola connessione a Exchange Online attiva.

USO RAPIDO
        Connect-IPPSSession
        .\06-Get-DlpPoliciesInTestMode.ps1
        .\01-Get-RetentionPolicyScope.ps1
        .\03-Get-SensitivityLabelsAndPolicies.ps1

        Connect-ExchangeOnline
        .\07-Get-UnifiedAuditLogStatus.ps1

        .\10-Get-PurviewComplianceSummary.ps1
  Tutti gli script sono di SOLA LETTURA: nessuno modifica la configurazione del tenant,
  nessuno avvia o esporta ricerche di eDiscovery. Ognuno produce un CSV UTF-8.

L'ORDINE CONSIGLIATO
  1. 10  fotografia d'insieme
  2. 06  cosa e rimasto in simulazione: il divario piu rapido da chiudere
  3. 07  se il log di controllo non e attivo, quello viene prima di tutto il resto
  4. 01  l'ambito della conservazione corrisponde a quello che l'azienda crede di avere?
  5. 03 e 08  il lavoro di classificazione e arrivato agli utenti o e rimasto in config?

NOTE IMPORTANTI
  - 01 usa sempre -DistributionDetail: senza quello switch la documentazione Microsoft
    avverte che DistributionStatus e le proprieta *Location sono INACCURATE. Il campo
    "Workload" invece elenca sempre tutti i workload possibili e non l'ambito reale:
    non usarlo per stimare la copertura.
  - 04 NON usa -DistributionDetail, al contrario: per il DLP la documentazione dichiara
    che DistributionResults e inaffidabile e soggetta a errori.
  - 06 classifica la simulazione sul prefisso del valore di Mode (Test*) e non su un
    elenco cablato: i valori possibili non sono documentati sulla pagina del cmdlet e sono
    cambiati nel tempo. Il valore grezzo resta comunque in colonna.
  - 08 riporta l'editore in colonna invece di filtrare sui tipi "non Microsoft": quella
    proprieta non e documentata, e un filtro cablato rischierebbe un elenco vuoto per una
    semplice differenza di stringa. Usa -SoloNonMicrosoft se il valore sul tuo tenant e
    quello atteso.
  - 09 produce un CSV che contiene le QUERY di ricerca: possono includere nomi di persone.
    Trattalo come documento riservato.

LICENZA
  Uso interno aziendale gratuito (no redistribuzione commerciale). Fornito "as is".

SUPPORTO
  Portare la configurazione di Purview da "presente" a "attiva e sostenibile", con le
  evidenze pronte per gli audit: https://synsphere.it/contattaci
============================================================
