Guida all'Integrazione Sicura: Configurazione "Bring Your Own App" (BYOA) per Microsoft 365
Questa guida spiega come collegare in modo sicuro Backup Monitor a una singola casella di posta di Microsoft 365, applicando rigorosamente il principio del Least Privilege (privilegi minimi).
A differenza delle integrazioni OAuth standard, che richiedono l'accesso in lettura all'intero tenant, questo metodo sfrutta il modello Role-Based Access Control (RBAC) for Applications introdotto nativamente in Exchange Online. Questo approccio permette agli amministratori di limitare l'accesso ai dati a specifiche caselle di posta in modo granulare, ignorando le assegnazioni di ruolo generali di Microsoft Entra ID.
Creando l'App direttamente nel tuo tenant, il sistema accederà unicamente all'interno del perimetro (scope) esatto che hai definito, garantendo un isolamento reale e una sicurezza di livello enterprise.
Prerequisiti
- Diritti di Amministratore Globale o Amministratore di Exchange nel tenant Microsoft 365.
- Modulo PowerShell
ExchangeOnlineManagementinstallato sul proprio PC (guida all'installazione). - L'indirizzo email della casella specifica da monitorare.
Step 1: Creazione dell'App in Microsoft Entra ID
In questa fase creeremo l'"identità" che Backup Monitor utilizzerà per autenticarsi, senza assegnarle alcun permesso globale.
- Accedi al Microsoft Entra admin center con privilegi di amministratore.
- Nel menu a sinistra, seleziona Registrazioni app e clicca su Nuova registrazione.

- Nel modulo che si apre, compila i seguenti campi:
- Nome: Inserisci un nome riconoscibile (es.
Backup Monitor-Access). - Tipi di account supportati: Scegli Solo tenant singolo.
- URI di reindirizzamento: Lascia vuoto questo campo.
- Clicca su Registra.
- Nome: Inserisci un nome riconoscibile (es.
- Nella sezione Panoramica dell'App appena creata, copia e metti al sicuro i campi ID applicazione (client) e ID della directory (tenant) (frecce rosse nell'immagine). Fatto ciò, clicca sul link sotto "Applicazione gestita nella directory locale" (freccia verde nell'immagine).

- Ti troverai nella pagina dell'Applicazione Aziendale (Enterprise Application): copia e salva il campo ID Oggetto.

- Come ultimo passaggio, è necessario generare un Segreto client per permettere a Backup Monitor di autenticarsi. Torna alla pagina della tua App e naviga in Certificati e segreti > Segreti client > Nuovo segreto client.
- Inserisci una descrizione (es.
Backup Monitor-Secret) e scegli una scadenza (consigliata: 24 mesi). - Clicca su Aggiungi.
- ⚠️ IMPORTANTE: Copia e salva immediatamente il Valore (Value) del segreto generato. Per motivi di sicurezza, Microsoft non te lo mostrerà più in seguito.

- Inserisci una descrizione (es.
Step 2: Configurazione del recinto (Scope) tramite PowerShell
In questo passaggio definiremo i limiti di accesso per l'App utilizzando i meccanismi di Application RBAC in Exchange Online. Lo script eseguirà tre operazioni fondamentali per "blindare" l'accesso:
New-ServicePrincipal: Registra l'identità dell'applicazione aziendale (creata nello Step 1 in Entra ID) all'interno dell'infrastruttura di Exchange Online.New-ManagementScope: Crea un perimetro direzionale logico ("recinto") all'interno della tua organizzazione. Sfrutta un filtro rigoroso per assicurarsi che comprenda unicamente l'indirizzo email specificato.New-ManagementRoleAssignment: Assegna il permesso specifico di lettura dei dati (Application Mail.Read) all'applicazione, vincolandone però il raggio di azione esclusivamente al perimetro creato al punto precedente. L'App non avrà alcuna visibilità sul resto dell'organizzazione.
Apri PowerShell come Amministratore ed esegui il seguente script, facendo attenzione a sostituire le prime 4 variabili con i tuoi dati reali:
# 1. Connettiti a Exchange Online
Connect-ExchangeOnline
# --- INSERISCI I TUOI DATI QUI SOTTO ---
$AppId = "INSERISCI_APPLICATION_CLIENT_ID"
$ObjectId = "INSERISCI_SERVICE_PRINCIPAL_OBJECT_ID"
$DisplayName = "Backup Monitor-Access"
$MailboxToMonitor = "INSERISCI_EMAIL_DA_MONITORARE"
# --------------------------------------
# 2. Crea il Service Principal in Exchange Online
Write-Host "Registrazione dell'App in Exchange Online..."
New-ServicePrincipal -AppId $AppId -ObjectId $ObjectId -DisplayName $DisplayName
# 3. Crea il recinto di sicurezza (Management Scope) puntato alla singola casella
Write-Host "Creazione del perimetro di sicurezza per la casella $MailboxToMonitor..."
$ScopeName = "Backup Monitor-Scope-$MailboxToMonitor"
New-ManagementScope -Name $ScopeName -RecipientRestrictionFilter "PrimarySmtpAddress -eq '$MailboxToMonitor'"
# 4. Assegna il ruolo di lettura (Application Mail.Read) limitato al recinto creato
Write-Host "Assegnazione dei permessi restrittivi in corso..."
New-ManagementRoleAssignment -App $AppId -Role "Application Mail.Read" -CustomResourceScope $ScopeName
Write-Host "Configurazione completata con successo!"
🚨 Risoluzione dei problemi frequenti 🚨
1. Errore durante la connessione a Exchange Online (macOS / Linux)
Se utilizzi macOS o Linux e ricevi un errore di tipo System.PlatformNotSupportedException durante l'esecuzione di Connect-ExchangeOnline, significa che PowerShell non riesce ad aprire automaticamente il browser di sistema. Usa l'autenticazione basata su dispositivo aggiungendo il parametro -Device:
Connect-ExchangeOnline -Device
Il terminale ti fornirà un codice e un link. Apri il link nel browser, inserisci il codice e completa l'accesso.
2. Errore durante la creazione del Management Scope
Se il comando New-ManagementScope fallisce con il messaggio "Il comando che si è tentato di eseguire non è al momento consentito nell'organizzazione", significa che il tuo tenant Microsoft 365 si trova in uno stato compresso (dehydrated) per ottimizzare le risorse.
Per risolvere:
- Esegui il comando richiesto per "idratare" il tenant e abilitare le personalizzazioni:
Enable-OrganizationCustomization - Attendi. Questa operazione viene elaborata in background sui server Microsoft e non è istantanea. La propagazione globale richiede generalmente dai 15 ai 60 minuti (in alcuni casi anche di più).
- Se riprovando a lanciare il comando ricevi il messaggio "L'operazione non è necessaria. L'organizzazione è già abilitata per la personalizzazione", significa che il processo è in corso ma non si è ancora allineato sul nodo a cui sei connesso.
Come verificare se l'attesa è finita? Invece di procedere per tentativi, puoi controllare lo stato di allineamento del tuo tenant con questo comando:
Get-OrganizationConfig | Format-List IsDehydrated
- Se il risultato è
True: I server Microsoft stanno ancora elaborando la richiesta. Continua ad attendere. - Se il risultato è
False: I server si sono allineati. Puoi procedere in sicurezza ri-eseguendo il comandoNew-ManagementScopee, subito dopo,New-ManagementRoleAssignment.
3. Il paradosso di Exchange: IsDehydrated è False, ma il comando fallisce ancora
Potrebbe capitarti una situazione in cui Get-OrganizationConfig ti restituisce IsDehydrated : False (confermando che il tenant è pronto), ma New-ManagementScope continua a bloccarsi chiedendoti di eseguire Enable-OrganizationCustomization (che a sua volta ti risponde "L'organizzazione è già abilitata").
Questo accade a causa di un noto ritardo di sincronizzazione (split-brain) nei datacenter Microsoft: il database centrale sa che la funzione è attiva, ma i microservizi che gestiscono i permessi non hanno ancora ricevuto l'aggiornamento.
Come risolvere:
- Opzione 1 (Ufficiale): Attendere. La propagazione completa può richiedere dalle 2 alle 24 ore. Spesso è sufficiente riprovare il giorno successivo.
- Opzione 2 (Workaround opzionale): "Il Trucco del Sistemista". Se hai urgenza di completare la configurazione, esiste un espediente non ufficiale che spesso sblocca la situazione forzando la sincronizzazione del tenant. Consiste nel creare ed eliminare un gruppo di distribuzione fittizio. Esegui questi comandi (sostituendo l'indirizzo email con uno del tuo dominio):
New-DistributionGroup -Name "GruppoTestSync" -PrimarySmtpAddress "testsync@tuodominio.it"
Remove-DistributionGroup -Identity "GruppoTestSync" -Confirm:$false
Nota bene: Essendo una procedura non ufficiale, potrebbe non funzionare nel 100% dei casi. Dopo averla eseguita, attendi 2-3 minuti e riprova a lanciare il comando New-ManagementScope.
Ricorda di attendere la propagazione globale: Anche dopo aver completato tutti i passaggi, è importante ricordare che le modifiche apportate al tenant Microsoft 365 (soprattutto quelle relative a permessi e ruoli) richiedono un certo tempo per essere propagate su tutti i nodi globali. In genere, questo processo richiede dai 15 ai 60 minuti, ma in alcuni casi può estendersire fino a 24 ore. Se riscontri problemi di accesso o permessi, attendi pazientemente e riprova dopo un po' di tempo.
Step 3: Collegamento a Backup Monitor
Ora che il tuo tenant è configurato e l'accesso è blindato, non resta che fornire a Backup Monitor le credenziali per leggere quella specifica casella.
- Accedi al portale di Backup Monitor.
- Naviga nella sezione Impostazioni per configurare la casella email.
- Seleziona l'opzione Microsoft 365 OAuth.
- Clicca su Enterprise (BYOA).
- Inserisci i dati raccolti durante lo Step 1:
- Tenant ID
- Client ID (Application ID)
- Client Secret (Il Valore che hai salvato in precedenza)
- Email da monitorare
- Salva le impostazioni ed esegui un test di connessione.
L'infrastruttura di Microsoft bloccherà alla radice qualsiasi tentativo da parte dell'App di leggere caselle diverse da quella indicata nel tuo perimetro di sicurezza. Se in futuro desideri revocare definitivamente l'accesso, ti basterà eliminare la "Registrazione app" dal tuo Microsoft Entra ID.