Autenticazione solo app per script automatici nel modulo EXO V2

Nota

Con le funzionalità e le procedure descritte in questo articolo è richiesta la versione 2.0.3 o successiva del modulo EXO V2. Per le istruzioni su come installare o aggiornare la versione del modulo, vedere installare e gestire il modulo EXO V2.

Gli scenari di controllo e creazione di report in Exchange Online spesso includono script che vengono eseguiti automaticamente. Nella maggior parte dei casi, questi script automatici accedono a PowerShell di Exchange Online usando l'autenticazione di base (nome utente e password). Anche se la connessione a PowerShell di Exchange Online usa l'autenticazione moderna, le credenziali vengono archiviate in un file locale o in un insieme di credenziali segreto accessibile in fase di esecuzione.

Dato che l'archiviazione delle credenziali utente localmente non è una pratica sicura, questa funzionalità viene rilasciata per supportare gli scenari correlati all'autenticazione di script automatici tramite applicazioni di AzureAD e certificati autofirmati.

Gli esempi seguenti illustrano come usare il modulo di PowerShell V2 di Exchange Online con l'autenticazione solo app:

  • Connettersi usando un certificato locale:

    Connect-ExchangeOnline -CertificateFilePath "C:\Users\johndoe\Desktop\automation-cert.pfx" -CertificatePassword (ConvertTo-SecureString -String "<MyPassword>" -AsPlainText -Force) -AppID "36ee4c6c-0812-40a2-b820-b22ebd02bce3" -Organization "contosoelectronics.onmicrosoft.com"
    
  • Connettersi usando un certificato di identificazione personale:

    Connect-ExchangeOnline -CertificateThumbPrint "012THISISADEMOTHUMBPRINT" -AppID "36ee4c6c-0812-40a2-b820-b22ebd02bce3" -Organization "contosoelectronics.onmicrosoft.com"
    

    Se si usa il parametro Certificato di identificazione personale, il certificato deve essere installato nel computer in cui è in esecuzione il comando. Il certificato deve essere installato nell'archivio certificati utente.

  • Connetti utilizzando un oggetto certificato:

    Connect-ExchangeOnline -Certificate <%X509Certificate2 Object%> -AppID "36ee4c6c-0812-40a2-b820-b22ebd02bce3" -Organization "contosoelectronics.onmicrosoft.com"
    

    Se si usa il parametro Certificato, non è necessario installare il certificato nel computer in cui si esegue il comando. Questo parametro è applicabile agli scenari in cui l'oggetto certificato viene archiviato in modalità remota e recuperato in fase di runtime durante l'esecuzione dello script.

Suggerimento

  • Nei comandi Connect-ExchangeOnline, assicurarsi di usare un dominio .onmicrosoft.com con il valore del parametro Organization. In caso contrario, si potrebbero riscontrare problemi di autorizzazione criptici quando vengono eseguiti comandi nel contesto dell'app.

  • L'autenticazione solo app non supporta la delega. Lo scripting automatico negli scenari di delega è supportato dal Modello di sicurezza app. Per altre informazioni, fare clic qui.

Come funziona?

Il modulo EXO V2 usa l'Active Directory Authentication Library per raccogliere un token solo app usando l'ID applicazione, l'ID tenant (organizzazione) e il certificato di identificazione personale. L'oggetto applicazione per cui è stato eseguito il provisioning in Azure AD dispone di un ruolo della directory, che viene restituito nel token di accesso. Exchange Online configura la sessione RBAC usando le informazioni del ruolo della directory disponibili nel token.

Configurare l'autenticazione solo app

Per l'autenticazione usando gli oggetti applicazione è necessaria una procedura di onboarding iniziale. L'applicazione e l'entità servizio vengono usati in modo intercambiabile, ma un'applicazione è simile a un oggetto classe, mentre un'entità servizio è come un'istanza della classe. Per altre informazioni, vedere Oggetti applicazione ed entità servizio in Azure Active Directory.

Per informazioni dettagliate sulla creazione di applicazioni in Azure AD, vedere https://aka.ms/azuread-app.

  1. Registrare l'applicazione in Azure AD.

  2. Assegnare autorizzazioni API di Exchange Online all'applicazione.

    Un oggetto applicazione dispone dell'autorizzazione predefinita User.Read. Perché l'oggetto applicazione possa accedere alle risorse di Exchange Online, è necessario che disponga dell'autorizzazione dell'applicazione Exchange.ManageAsApp.

  3. Generare un certificato autofirmato

    • Per l'autenticazione solo app in Azure AD, in genere si usa un certificato per richiedere l'accesso. Chiunque disponga del certificato e della chiave privata può usare l'app e le autorizzazioni concesse all'app.

    • Creare e configurare un certificato X.509 autofirmato, che verrà usato per autenticare l'applicazione in Azure AD, nell'ambito della richiesta del token di accesso solo app.

    • Si tratta di una procedura simile alla creazione di una password per gli account utente. Il certificato può essere autofirmato. Vedere la sezione Appendice più avanti in questo articolo per istruzioni su come generare certificati in PowerShell.

      Nota

      Crittografia: i certificati Next Generation (CNG) non sono supportati per l'autenticazione solo app con Exchange. I certificati CNG vengono creati per impostazione predefinita nelle versioni moderne di Windows. È necessario usare un certificato di un provider chiave CSP. La sezione Appendice copre due metodi supportati per la creazione di un certificato CSP.

  4. Allegare il certificato all'applicazione Azure AD

  5. Assegnare ruoli di Azure AD all'applicazione

    È necessario che siano assegnati i ruoli RBAC appropriati per l'applicazione. Dato che il provisioning delle app avviene in Azure AD, è possibile usare qualsiasi altro ruolo predefinito. Di seguito sono elencati i ruoli supportati:

    • Amministratore globale
    • Amministratore di conformità
    • Ruolo con autorizzazioni di lettura per la sicurezza
    • Amministratore della sicurezza
    • Amministratore del supporto tecnico
    • Amministratore di Exchange
    • Ruolo con autorizzazioni di lettura globali

Appendice

Passaggio 1: registrare l'applicazione in Azure AD

Nota: in caso di problemi, controllare le autorizzazioni necessarie per verificare che l'account possa creare l'identità.

  1. Aprire il portale di Azure AD su https://portal.azure.com/.

  2. In Gestire Azure Active Directory, fare clic su Visualizza.

    Fare clic su Visualizza nel portale di Azure AD in Gestisci Azure Active Directory

  3. Nella pagina Panoramica, in Gestisci, selezionare Registrazione app.

    Selezionare Registrazioni app

  4. Nella pagina Registrazioni app fare clic su Nuova registrazione.

    Selezionare Nuova registrazione nella pagina Registrazioni app

    Nella pagina Registrare un'applicazione, configurare le seguenti impostazioni:

    • Nome: inserire un nome descrittivo. Ad esempio, ExO PowerShell CBA.

    • Tipi di account supportati: verificare che sia selezionato Account solo nella directory dell'organizzazione (solo<YourOrganizationName> - tenant singolo).

    • URI di reindirizzamento (facoltativo): nella prima casella verificare che Web sia selezionato. Nella seconda casella immettere l'URI a cui viene inviato il token di accesso.

      Si noti che non è possibile creare credenziali per applicazioni native, perché non è possibile usare questo tipo per le applicazioni automatizzate.

      Registrare un'applicazione

    Al termine, fare clic su Registra.

  5. Uscire dalla pagina dell'app che verrà riaperta in seguito. La vedrai nel passaggio successivo.

Passaggio 2: assegnare autorizzazioni API all'applicazione

Nota

Le procedure descritte in questa sezione sostituiscono tutte le autorizzazioni predefinite che erano state configurate automaticamente per la nuova app. Per l'app non sono necessarie le autorizzazioni predefinite che sono state sostituite.

  1. Nella pagina dell'app in Gestione, selezionare Manifesto.

    Selezionare Manifesto nella pagina delle proprietà dell'applicazione

  2. Nella pagina Manifesto trovare la voce requiredResourceAccess (alla riga o intorno alla riga 44).

    Modificare i valori resourceAppId, resourceAccess, ide type come illustrato nel frammento di codice seguente:

    "requiredResourceAccess": [
       {
          "resourceAppId": "00000002-0000-0ff1-ce00-000000000000",
          "resourceAccess": [
             {
                "id": "dc50a0fb-09a3-484d-be87-e023b12c6440",
                "type": "Role"
             }
          ]
       }
    ],
    

    Al termine, fare clic su Salva.

  3. Sempre nella pagina Manifesto, in Gestione, selezionare Autorizzazioni API.

    Selezionare Autorizzazioni API nella pagina delle proprietà dell'applicazione

    Nella pagina Autorizzazioni API eseguire la seguente procedura:

    • Nome API/Autorizzazioni: verificare che il valore Exchange.ManageAsApp sia mostrato.

    • Stato: il valore errato è Non consentito a <Organization> e tale valore deve essere modificato.

      Autorizzazioni API originali errate

      Selezionare Concedi accesso come amministratore a <Organization>, leggere la finestra di dialogo e fare clic su .

      Il valore dello stato ora dovrebbe essere Concesso a <Organization>.

      Accesso come amministratore garantito

  4. Chiudere la pagina Autorizzazioni API (non la scheda del browser) per tornare alla pagina Registrazioni app. Tale pagina verrà usata in un passaggio successivo.

Passaggio 3: generare un certificato autofirmato

Creare un certificato x.509 autofirmato usando uno dei metodi seguenti:

  • (Consigliato) Usare i cmdlet New-SelfSignedCertificate, Export-Certificate e Export-PfxCertificate in una sessione di Windows PowerShell con privilegi elevati (eseguita come amministratore) per richiedere un certificato autofirmato ed esportarlo in .cer e .pfx (SHA1 per impostazione predefinita). Ad esempio:

    # Create certificate
    $mycert = New-SelfSignedCertificate -DnsName "contoso.org" -CertStoreLocation "cert:\LocalMachine\My" -NotAfter (Get-Date).AddYears(1) -KeySpec KeyExchange
    
    # Export certificate to .pfx file
    $mycert | Export-PfxCertificate -FilePath mycert.pfx -Password $(ConvertTo-SecureString -String "P@ssw0Rd1234" -AsPlainText -Force)
    
    # Export certificate to .cer file
    $mycert | Export-Certificate -FilePath mycert.cer
    
  • Usare lo script Create-SelfSignedCertificate per generare certificati SHA1.

    .\Create-SelfSignedCertificate.ps1 -CommonName "MyCompanyName" -StartDate 2021-01-06 -EndDate 2022-01-06
    

Passaggio 4: allegare il certificato all'applicazione Azure AD

Dopo aver registrato il certificato con l'applicazione, è possibile usare la chiave privata (file con estensione.pfx) o l'identificazione personale per l'autenticazione.

  1. Sulla pagina di Registrazione delle app alla fine del Passaggio 2 selezionare l’applicazione.

    Se è necessario tornare alla pagina Registrazione delle app, procedere come segue:

    1. Aprire il portale di Azure AD su https://portal.azure.com/.
    2. In Gestire Azure Active Directory, fare clic su Visualizza.
    3. In Gestisci, selezionare Registrazioni app.

    La pagina Registrazione delle app in cui viene selezionata l’app

  2. Nella pagina dell’applicazione, in Gestisci selezionare Certificati e segreti.

    Selezionare Certificati e segreti nella pagina delle proprietà dell'applicazione

  3. Nella pagina Certificati e segreti, fare clic su Carica certificato.

    Selezionare Carica certificato nella pagina Certificati e segreti

    Nella finestra di dialogo visualizzata, passare al certificato autofirmato (file .cer) creato nel Passaggio 3.

    Passare al certificato e fare clic su Aggiungi

    Al termine, fare clic su Aggiungi.

    Il certificato SharePointSSL verrà visualizzato nella sezione Certificati.

    Pagina dell'applicazione che mostra che il certificato è stato aggiunto

  4. Chiudere la pagina Certificati e segreti e la pagina Registrazioni app e tornare alla pagina https://portal.azure.com/ principale. Tale pagina verrà usata nel passaggio successivo.

Passaggio 5: assegnare ruoli di Azure AD all'applicazione

In Azure AD sono disponibili più di 50 ruoli amministratore. Per l'autenticazione solo app in Exchange Online, attualmente sono supportati i ruoli menzionati in precedenza:

  • Amministratore globale
  • Amministratore di conformità
  • Ruolo con autorizzazioni di lettura per la sicurezza
  • Amministratore della sicurezza
  • Amministratore del supporto tecnico
  • Amministratore di Exchange
  • Ruolo con autorizzazioni di lettura globali

Per istruzioni generali sull'assegnazione di ruoli in Azure AD, vedere Visualizzare e assegnare ruoli di amministratore in Azure Active Directory.

  1. Nel portale Azure AD su https://portal.azure.com/, in Gestisci Azure Active Directory, fare clic su Visualizza.

    Visualizza nel portale Azure AD, in Gestire Azure Active Directory.

  2. Nella pagina Panoramica, in Gestisci, selezionare Ruoli e amministratori.

    Selezionare Ruoli e amministratori nella pagina Panoramica

  3. Nella pagina Ruoli e amministratori trovare e selezionare uno dei ruoli supportati facendo clic nome del ruolo (non sulla casella di controllo) nei risultati.

    Trovare e selezionare un ruolo supportato facendo clic sul nome del ruolo

  4. Nella pagina Assegnazioni, fare clic su Aggiungi assegnazioni.

    Selezionare Aggiungi assegnazioni nella pagina di assegnazioni del ruolo.

  5. Nel riquadro a comparsa Aggiungi assegnazioni trovare e selezionare l’app creata nel Passaggio 1.

    Trovare e selezionare l'app nel riquadro a comparsa Aggiungi assegnazioni

    Al termine, fare clic su Aggiungi.

  6. Nella pagina Assegnazioni verificare che sia stato assegnato un ruolo all’app.

    La pagina delle assegnazioni di ruolo dopo aver aggiunto il ruolo all’app