Autenticazione App-only per script automatici nel modulo EXO V2

In questo articolo, parleremo della modalità di autenticazione App-only del nuovo modulo di Exchange Online denominato “EXO V2”. Gli scenari di auditing e reportistica di Exchange Online spesso includono script che vengono eseguiti automaticamente. Nella maggior parte dei casi, questi script automatici eseguono il login nel modulo Powershell utilizzando la Basic authentication (utente e password). Anche se come altri servizi di M365, l’utilizzo dei moduli di Exchange Online prevede la Modern Authentication, le credenziali fornite vengono archiviate in un file locale, in un insieme di credenziali o in un Vault al quale viene fatto accesso in fase di esecuzione dello script interessato.

L’archiviazione delle credenziali in un file locale non è una pratica sicura, per questa ragione viene rilasciata questa funzionalità per supportare scenari correlati all’autenticazione di script automatici tramite Applicazioni di Azure AD e certificati self-signed.

Il modulo EXO V2 (Exchange Online V2) utilizza l’Active Directory Authentication Library (ADAL) per sfruttare un token di autenticazione app-only basato sull’application id, l’ID del Tenant (Organizzazione) e il thumbprint del certificato fornito. All’oggetto Application registrato in Azure AD viene assegnato un ruolo nella directory (Exchange Administrator, Global Administrator, Teams Administrator ecc…),mi raccomando cercate di rispettare il modello del “Least Privilege“, il dettaglio del ruolo dell’Applicazione verrà inserito all’interno del token di autenticazione utilizzato dalla sessione di EXO V2. Exchange Online andrà a configurare la sessione basata su RBAC (ROLE-BASED ACCESS CONTROL) sfruttando le informazioni sul ruolo dell’applicazione presenti nel token.

Installazione Modulo Exchange Online V2

Set-ExecutionPolicy RemoteSigned
Install-Module -Name ExchangeOnlineManagement

Aggiornamento Modulo Exchange Online V2

Import-Module ExchangeOnlineManagement 
Get-Module ExchangeOnlineManagement
Update-Module -Name ExchangeOnlineManagement

Vediamo passo passo la configurazione necessaria all’utlizzo di questa modalità di autenticazione

Per la configurazione di questo tipo di autenticazione sarà necessario procedere come prima cosa alla registrazione di una nuova applicazione in Azure Active Directory. Per informazioni più dettagliate sulle applicazioni, vi rimando all’articolo ufficiale della casa di Redmond che descrive gli Oggetti applicazione ed entità servizio in Azure Active Directory.

Figura 1 – Registrazione nuova applicazione su Azure AD

Registriamo una nuova applicazione su Azure Active Directory.

Figura 2 – Dettaglio Applicazione “EXO Auth Powershell V2 Certificate” registrata

Figura 3 – Assegnazione autorizzazioni per accedere ad Exchange Online

Figura 4 – Assegnazione permessi applicazione

Figura 5 – Assegnazione autorizzazione Exchange.ManageAsApp

Assegnamo all’applicazione appena registrata le autorizzazioni necessarie per accedere ad Exchange Online, di default un oggetto applicazione dispone delle autorizzazioni User.Read. Perché l’oggetto applicazione possa accedere alle risorse di Exchange Online, si rende necessario che disponga dell’autorizzazione dell’applicazione Exchange.ManageAsApp.

Figura 6 – Assegnazione permessi di chiamata con privilegi amministrativi alle API di Exchange Online

Figura 7 – Permessi di chiamate alle API di Exchange con privilegi amministrativi

Figura 8 – Creazione certificato Self-Signed

Procediamo con la creazione di un nuovo certificato Self-Signed tramite lo script Create-SelfSignedCertificate.ps1 con i parametri che vedete nell’immagine soprastante.

.\Create-SelfSignedCertificate.ps1 -CommonName "MyCompanyName" -StartDate 2020-04-01 -EndDate 2022-04-01

Figura 9 – Upload del certificato appena creato nella sezione “Certificate & Secrets” dell’applicazione registrata su Azure AD

Figura 10 – Certificato caricato nei “secrets” dell’applicazione

Figura 11 – Assegnazione ruolo Exchange Administrator all’applicazione registrata

Figura 12 – Ruolo di Exchange Administrator assegnato all’applicazione

Figura 13 – Test autenticazione App-Only EXO V2

Eseguiamo un test di autenticazione utilizzando il nostro certificato Self-Signed e nessun set di credenziali per collegarci al modulo di powershell V2 di Exchange online tramite il seguente comando:

Connect-ExchangeOnline -CertificateFilePath "C:\Users\johndoe\Desktop\automation-cert.pfx" -CertificatePassword (ConvertTo-SecureString -String "<My Password>" -AsPlainText -Force) -AppID "36ee4c6c-0812-40a2-b820-b22ebd02bce3" -Organization "contosoelectronics.onmicrosoft.com"

Figura 14 – Esempio di una semplice cmdlet su Exchange Online una volta collegati

CONCLUSIONI

Molto spesso ci capita di avere la necessità di automatizzare svariati processi tramite task schedulati. Per permettere l’esecuzione di task schedulati con all’interno script che necessitano dell’autenticazione sui servizi di M365 ora possiamo evitare di utilizzare le classiche credenziali delle identità utente, ci basta un semplice certificato emesso appositamente per il task interessato . Con l’avvento di Microsoft Graph e delle Applicazioni di Azure AD ci viene permesso di utilizzare quella che possiamo definire USERLESS Authentication, questo come potete ben capire ci porta a proteggere uno degli elementi più delicati della nostra infrastruttura, le identità utente. Oltre ad Exchange Online, su M365 ci sono moltissimi altri servizi che ci permettono questo tipo di autenticazione, immaginate quindi la comodità di poter utilizzare una sola app che permette di aver accesso a tutti i servizi del nostro Tenant.

Stay Tuned on Technical365!!

Spread the love

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *