Condividi tramite


Autenticare le app Go ai servizi di Azure durante lo sviluppo locale usando gli account per sviluppatori

Durante lo sviluppo locale, le applicazioni devono eseguire l'autenticazione in Azure per usare servizi di Azure diversi. Eseguire l'autenticazione in locale usando uno di questi approcci:

Questo articolo illustra come eseguire l'autenticazione usando un account per sviluppatore con gli strumenti supportati dalla libreria di identità di Azure. Nelle sezioni seguenti si apprenderà:

  • Come usare i gruppi di Microsoft Entra per gestire in modo efficiente le autorizzazioni per più account per sviluppatori.
  • Come assegnare ruoli agli account sviluppatore per limitare le autorizzazioni.
  • Come accedere agli strumenti di sviluppo locali supportati.
  • Come eseguire l'autenticazione usando un account sviluppatore dal codice dell'app.

Strumenti di sviluppo supportati per l'autenticazione

Affinché un'app esegua l'autenticazione in Azure durante lo sviluppo locale usando le credenziali di Azure dello sviluppatore, lo sviluppatore deve accedere ad Azure da uno degli strumenti di sviluppo seguenti:

  • Azure CLI
  • CLI per sviluppatori di Azure
  • Azure PowerShell

La libreria di identità di Azure può rilevare che lo sviluppatore ha eseguito l'accesso da uno di questi strumenti. La libreria può quindi ottenere il token di accesso di Microsoft Entra tramite lo strumento per autenticare l'app in Azure come utente connesso.

Questo approccio sfrutta gli account Azure esistenti dello sviluppatore per semplificare il processo di autenticazione. Tuttavia, l'account di uno sviluppatore ha probabilmente più autorizzazioni rispetto a quelle richieste dall'app, quindi supera le autorizzazioni eseguite dall'app nell'ambiente di produzione. In alternativa, è possibile creare principali del servizio dell'applicazione da usare durante lo sviluppo locale, che possono essere configurati per avere solo l'accesso necessario all'app.

Creare un gruppo Microsoft Entra per lo sviluppo locale

Creare un gruppo Microsoft Entra per incapsulare i ruoli (autorizzazioni) necessari per lo sviluppo locale dell'app, anziché assegnare i ruoli a singoli oggetti principali del servizio. Questo approccio offre i vantaggi seguenti:

  • Ogni sviluppatore ha gli stessi ruoli assegnati a livello di gruppo.
  • Se è necessario un nuovo ruolo per l'app, è sufficiente aggiungerlo al gruppo per l'app.
  • Se un nuovo sviluppatore si aggiunge al team, viene creata una nuova entità servizio dell'applicazione per lo sviluppatore e aggiunta al gruppo, assicurando che lo sviluppatore disponga delle autorizzazioni appropriate per lavorare sull'app.
  1. Passare alla pagina di panoramica di Microsoft Entra ID nel portale di Azure.

  2. Selezionare Tutti i gruppi dal menu a sinistra.

  3. Nella pagina Gruppi selezionare Nuovo gruppo.

  4. Nella pagina Nuovo gruppo, compila i seguenti campi del modulo:

    • Tipo di gruppo: selezionare Security.
    • Nome gruppo: immettere un nome per il gruppo che include un riferimento al nome dell'app o dell'ambiente.
    • Descrizione gruppo: immettere una descrizione che spiega lo scopo del gruppo.

    Screenshot che mostra come creare un gruppo nel portale di Azure.

  5. Seleziona il link Nessun membro selezionato nella sezione Membri per aggiungere membri al gruppo.

  6. Nel pannello fluttuante che si apre, cercare il service principal creato in precedenza e selezionarlo nei risultati filtrati. Scegliere il pulsante Seleziona nella parte inferiore del pannello per confermare la selezione.

  7. Selezionare Crea nella parte inferiore della pagina Nuovo gruppo per creare il gruppo e tornare alla pagina Tutti i gruppi . Se il nuovo gruppo non è elencato, attendere un attimo e aggiornare la pagina.

Assegnare ruoli al gruppo

Successivamente, determinare i ruoli (autorizzazioni) necessari per l'app in base alle risorse e assegnare tali ruoli al gruppo Microsoft Entra creato. Ai gruppi può essere assegnato un ruolo nell'ambito della risorsa, del gruppo di risorse o della sottoscrizione. Questo esempio illustra come assegnare ruoli nell'ambito del gruppo di risorse, poiché la maggior parte delle app raggruppa tutte le risorse di Azure in un singolo gruppo di risorse.

  1. Nel portale di Azure passare alla pagina Panoramica del gruppo di risorse che contiene l'app.

  2. Selezionare Access control (IAM) dal menu di navigazione a sinistra.

  3. Nella pagina Controllo di accesso (IAM) selezionare + Aggiungi e quindi scegliere Aggiungi assegnazione di ruolo dal menu a discesa. Nella pagina Aggiungi assegnazione di ruolo sono disponibili diverse schede per configurare e assegnare ruoli.

  4. Nella scheda Ruolo usare la casella di ricerca per individuare il ruolo da assegnare. Selezionare il ruolo e quindi scegliere Avanti.

  5. Nella scheda Membri :

    • Per il valore Assegna l'accesso a, selezionare Utente, gruppo o entità servizio.
    • Per il valore Membri scegliere + Seleziona membri per aprire il pannello a comparsa Seleziona membri .
    • Cercare il gruppo Microsoft Entra creato in precedenza e selezionarlo nei risultati filtrati. Scegliere Selezionare per selezionare il gruppo e chiudere il pannello a comparsa.
    • Selezionare Rivedi e assegna nella parte inferiore della scheda Membri .

    Screenshot che mostra come assegnare un ruolo al gruppo Microsoft Entra.

  6. Nella scheda Rivedi e assegna selezionare Rivedi e assegna nella parte inferiore della pagina.

Accedere ad Azure con gli strumenti per sviluppatori

Accedere quindi ad Azure usando uno dei diversi strumenti di sviluppo che possono essere usati per eseguire l'autenticazione nell'ambiente di sviluppo. L'account autenticato deve esistere anche nel gruppo Microsoft Entra creato e configurato in precedenza.

Gli sviluppatori possono usare l'interfaccia della riga di comando di Azure per l'autenticazione. Le app che usano DefaultAzureCredential o AzureCLICredential possono quindi usare questo account per autenticare le richieste di app.

Per eseguire l'autenticazione con l'interfaccia della riga di comando di Azure, eseguire il az login comando . In un sistema con un Web browser predefinito, l'interfaccia della riga di comando di Azure avvia il browser per autenticare l'utente.

az login

Per i sistemi senza un Web browser predefinito, il comando az login usa il flusso di autenticazione del codice del dispositivo. L'utente può anche forzare Azure CLI a utilizzare il flusso di codice dispositivo anziché avviare un browser specificando l'argomento --use-device-code.

az login --use-device-code

Eseguire l'autenticazione ai servizi di Azure dall'app

Il pacchetto azidentity fornisce varie credenziali adattate al supporto di diversi scenari e flussi di autenticazione di Microsoft Entra. I passaggi successivi illustrano come usare DefaultAzureCredential quando si lavora con i principal di servizio in locale e in produzione.

Implementare il codice

Per autenticare gli oggetti client di Azure SDK in Azure, l'applicazione deve usare la DefaultAzureCredential classe . In questo scenario verifica DefaultAzureCredential in sequenza se lo sviluppatore ha eseguito l'accesso ad Azure usando l'interfaccia della riga di comando di Azure o l'interfaccia della riga di comando per sviluppatori di Azure. Se lo sviluppatore ha eseguito l'accesso ad Azure usando uno di questi strumenti, le credenziali usate per accedere allo strumento verranno usate dall'app per l'autenticazione in Azure.

Aggiungere prima di tutto il pacchetto azidentity all'applicazione.

go get github.com/Azure/azure-sdk-for-go/sdk/azidentity

Successivamente, per qualsiasi codice Go che crea un oggetto client di Azure SDK nell'app, è necessario:

  1. Importare il pacchetto azidentity.
  2. Creare un'istanza di tipo DefaultAzureCredential.
  3. Passare l'istanza di tipo DefaultAzureCredential al costruttore del client Azure SDK.

Un esempio di questi passaggi è illustrato nel segmento di codice seguente.

import (
	"context"

	"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
	"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"
)

const (
	account       = "https://<replace_with_your_storage_account_name>.blob.core.windows.net/"
	containerName = "sample-container"
	blobName      = "sample-blob"
	sampleFile    = "path/to/sample/file"
)

func main() {
	// create a credential
	cred, err := azidentity.NewDefaultAzureCredential(nil)
	if err != nil {
	  // TODO: handle error
	}
	
	// create a client for the specified storage account
	client, err := azblob.NewClient(account, cred, nil)
	if err != nil {
	  // TODO: handle error
	}
	
	// TODO: perform some action with the azblob Client
	// _, err = client.DownloadFile(context.TODO(), <containerName>, <blobName>, <target_file>, <DownloadFileOptions>)
}