L’autenticazione multi-fattore (MFA) è un pilastro fondamentale della sicurezza moderna, ma può rappresentare un ostacolo per le utenze di servizio utilizzate in script di automazione, applicazioni e processi batch. Immagina di dover automatizzare il provisioning di nuovi utenti in Active Directory tramite un’applicazione che utilizza un’utenza di servizio. Richiedere l’MFA per questa utenza interromperebbe l’automazione, rendendo il processo inefficiente e complesso. Microsoft Entra ID offre ora la possibilità di bypassare selettivamente l’MFA per queste utenze, consentendo di mantenere un elevato livello di sicurezza per gli utenti umani, senza però bloccare l’automazione. In questo tutorial, esploreremo come configurare questa funzionalità, i prerequisiti necessari e gli errori comuni che potresti incontrare. Imparerai a bilanciare sicurezza e operatività, ottimizzando i tuoi processi IT. Quando ho configurato questo in una PA con 2.000 endpoint, ho visto un miglioramento notevole nell’efficienza dei processi di automazione, senza compromettere la postura di sicurezza complessiva.
Prerequisiti
- Un tenant di Microsoft Entra ID con licenza P1 o superiore.
- Account con ruolo di Global Administrator o Security Administrator in Entra ID.
- Modulo Azure AD PowerShell installato.
- Utenza di servizio esistente in Entra ID che necessita di bypassare l’MFA.
Configurazione del Conditional Access Policy per Bypass MFA
Il metodo principale per bypassare l’MFA per le utenze di servizio è tramite una policy di Conditional Access. Questo ci permette di definire condizioni specifiche in cui l’MFA non è richiesta, basandoci su criteri come l’utenza, la posizione o l’applicazione.
Creazione di un Gruppo per le Utenze di Servizio
Il primo passo è creare un gruppo in Entra ID che conterrà tutte le utenze di servizio a cui vogliamo applicare il bypass dell’MFA. Questo semplifica la gestione delle policy.
- Accedi all’Azure Portal e vai su “Gruppi”.
- Clicca su “Nuovo gruppo”.
- Seleziona “Security” come tipo di gruppo.
- Inserisci un nome descrittivo, ad esempio “UtenzeServizio-MFA-Bypass”.
- Aggiungi le utenze di servizio desiderate come membri del gruppo.
{{IMAGE: azure active directory group creation security type}}
Questo gruppo sarà utilizzato nella policy di Conditional Access per identificare le utenze a cui applicare il bypass MFA. Raggruppare le utenze semplifica la gestione centralizzata e riduce il rischio di errori di configurazione.
Creazione della Policy di Conditional Access
Ora creiamo la policy che esclude il gruppo di utenze di servizio dall’MFA.
- Accedi all’Azure Portal e vai su “Microsoft Entra ID” > “Security” > “Conditional Access”.
- Clicca su “Nuova policy”.
- Assegna un nome alla policy, ad esempio “Bypass MFA per Utenze di Servizio”.
- Nella sezione “Assignments”, seleziona “Users or workload identities”.
- In “Include”, seleziona “Select users and groups” e scegli il gruppo creato in precedenza (“UtenzeServizio-MFA-Bypass”).
- Nella sezione “Cloud apps or actions”, seleziona “All cloud apps”. Questo significa che la policy si applicherà a tutte le applicazioni cloud.
- Nella sezione “Conditions”, puoi specificare condizioni aggiuntive come la posizione (escludere solo determinate reti) o il tipo di dispositivo.
- Nella sezione “Access controls”, seleziona “Grant”.
- Scegli “Grant access” e deseleziona tutte le opzioni di MFA (es. “Require multi-factor authentication”).
- In “Grant”, seleziona “Require one of the selected controls” e assicurati che nessuna opzione sia selezionata. Questo è fondamentale per bypassare l’MFA.
- Imposta “Enable policy” su “On”.
{{IMAGE: azure conditional access policy configuration grant access}}
Questa configurazione indica che, per le utenze nel gruppo specificato, l’accesso sarà concesso senza richiedere l’MFA. È importante valutare attentamente le condizioni aggiuntive per bilanciare sicurezza e operatività.
Verifica della Configurazione
Dopo aver creato la policy, è fondamentale verificarne il corretto funzionamento.
- Accedi a una risorsa di Azure (es. Azure Portal) con una delle utenze di servizio incluse nel gruppo.
- Verifica che l’accesso avvenga senza richiedere l’MFA.
- Controlla i log di accesso in Entra ID per confermare che la policy sia stata applicata correttamente.
Per controllare i log di accesso:
- Vai su “Microsoft Entra ID” > “Monitoring” > “Sign-in logs”.
- Filtra per l’utenza di servizio utilizzata per il test.
- Verifica che il risultato della policy di Conditional Access sia “Success”.
# Esempio di output nei log di accesso:
# Conditional Access: Success
# Policy name: Bypass MFA per Utenze di Servizio
Un risultato positivo indica che la policy è attiva e funziona come previsto. In caso contrario, verifica attentamente la configurazione della policy e l’appartenenza al gruppo.
Utilizzo di Named Locations per Restringere l’Accesso
Per aumentare la sicurezza, puoi combinare il bypass MFA con le Named Locations. Questo ti permette di definire intervalli di indirizzi IP attendibili da cui le utenze di servizio possono accedere, limitando il rischio di accessi non autorizzati da posizioni sconosciute.
Creazione di una Named Location
- Accedi all’Azure Portal e vai su “Microsoft Entra ID” > “Security” > “Named locations”.
- Clicca su “Nuova location”.
- Inserisci un nome descrittivo, ad esempio “IP-UtenzeServizio-Affidabili”.
- Seleziona “IP ranges” e inserisci gli indirizzi IP dei server o delle reti da cui le utenze di servizio accederanno.
- Clicca su “Crea”.
{{IMAGE: azure named location ip ranges configuration}}
Modifica della Policy di Conditional Access
Ora modifichiamo la policy creata in precedenza per includere la Named Location.
- Vai su “Microsoft Entra ID” > “Security” > “Conditional Access” e seleziona la policy “Bypass MFA per Utenze di Servizio”.
- Nella sezione “Conditions”, seleziona “Locations”.
- In “Configure”, imposta su “Yes”.
- In “Include”, seleziona la Named Location creata (“IP-UtenzeServizio-Affidabili”). Puoi anche escludere determinate location, se necessario.
- Salva la policy.
Con questa configurazione, l’MFA sarà bypassata solo se l’accesso avviene dagli indirizzi IP specificati nella Named Location, aggiungendo un ulteriore livello di sicurezza.
Automazione con PowerShell
La configurazione delle policy di Conditional Access può essere automatizzata tramite PowerShell. Questo è particolarmente utile in ambienti complessi con molte utenze di servizio.
Installazione del Modulo Azure AD PowerShell
Se non lo hai già fatto, installa il modulo Azure AD PowerShell.
Install-Module -Name AzureAD -Force
Connessione a Azure AD
Connetti la tua sessione PowerShell a Azure AD.
Connect-AzureAD
Ti verrà richiesto di autenticarti con un account con privilegi di Global Administrator.
Creazione della Policy con PowerShell
Utilizza i seguenti comandi per creare la policy di Conditional Access.
# Definisci le variabili
$PolicyName = "Bypass MFA per Utenze di Servizio (PowerShell)"
$GroupObjectId = "<ObjectID del gruppo UtenzeServizio-MFA-Bypass>"
$LocationId = "<ObjectID della Named Location IP-UtenzeServizio-Affidabili>"
# Crea l'oggetto della policy
$ConditionalAccessPolicy = New-Object -TypeName Microsoft.Open.MSGraph.Model.ConditionalAccessPolicy
$ConditionalAccessPolicy.DisplayName = $PolicyName
$ConditionalAccessPolicy.State = "Enabled"
# Definisci le condizioni
$Conditions = New-Object -TypeName Microsoft.Open.MSGraph.Model.ConditionalAccessConditionSet
$Conditions.Users = New-Object -TypeName Microsoft.Open.MSGraph.Model.ConditionalAccessUserCondition
$Conditions.Users.IncludeGroups = $GroupObjectId
$Conditions.Applications = New-Object -TypeName Microsoft.Open.MSGraph.Model.ConditionalAccessApplicationCondition
$Conditions.Applications.IncludeApplications = "All"
$Conditions.Locations = New-Object -TypeName Microsoft.Open.MSGraph.Model.ConditionalAccessLocationCondition
$Conditions.Locations.IncludeLocations = $LocationId
# Definisci i controlli di accesso
$GrantControls = New-Object -TypeName Microsoft.Open.MSGraph.Model.ConditionalAccessGrantControls
$GrantControls.GrantAccess = New-Object -TypeName Microsoft.Open.MSGraph.Model.ConditionalAccessGrantControlsGrantAccess
$GrantControls.GrantAccess.ODataType = "#Microsoft.Open.MSGraph.Model.ConditionalAccessGrantControlsGrantAccess"
$ConditionalAccessPolicy.GrantControls = $GrantControls
# Assegna le condizioni e i controlli di accesso alla policy
$ConditionalAccessPolicy.Conditions = $Conditions
# Crea la policy
New-AzureADMSConditionalAccessPolicy -Policy $ConditionalAccessPolicy
Assicurati di sostituire e con i valori corretti. Puoi trovare gli Object ID nel portale di Azure.
{{IMAGE: powershell console output example}}
Questo script automatizza la creazione della policy, riducendo il rischio di errori manuali e accelerando il processo di configurazione.
Errori comuni e risoluzione
- MFA ancora richiesta dopo l’applicazione della policy: Verifica che l’utenza di servizio sia effettivamente membro del gruppo corretto. Controlla anche che la policy sia abilitata e che non ci siano altre policy di Conditional Access che sovrascrivono la configurazione. L’ordine delle policy è importante: la policy più specifica ha la precedenza.
- Errore durante la creazione della policy con PowerShell: Assicurati di aver installato correttamente il modulo Azure AD PowerShell e di essere connesso con un account con privilegi sufficienti. Verifica anche la sintassi dei comandi e che gli Object ID siano corretti.
- Accesso bloccato da posizioni non definite nella Named Location: Controlla che gli indirizzi IP utilizzati dalle utenze di servizio siano inclusi nella Named Location e che la policy sia configurata correttamente per includere la Named Location.
Conclusione
In questo tutorial, hai imparato a bypassare selettivamente l’MFA per le utenze di servizio in Microsoft Entra ID, utilizzando le policy di Conditional Access e le Named Locations. Abbiamo visto come creare un gruppo di utenze, configurare una policy per escludere il gruppo dall’MFA e automatizzare il processo con PowerShell. Ricorda che ogni modifica alla configurazione di sicurezza deve essere attentamente valutata e testata per garantire che non comprometta la postura di sicurezza complessiva. Bilanciare sicurezza e operatività è fondamentale per un’infrastruttura IT efficiente e protetta. Hai domande o suggerimenti? Lascia un commento qui sotto!