Autenticazione con Azure SDK per Go (legacy)
Importante
Questo articolo si applica alla versione legacy di Azure SDK per Go. Per l'autenticazione ai moduli più recenti, usare il pacchetto Di identità di Azure.
Azure SDK per Go offre più modalità di autenticazione in Azure. Questi tipi di autenticazione vengono richiamati tramite diversi metodi di autenticazione. Questo articolo illustra i tipi e i metodi disponibili e mostra come scegliere l'approccio ottimale per l'applicazione.
Metodi e tipi di autenticazione disponibili
Azure SDK per Go offre diversi tipi di autenticazione che usano set di credenziali diversi. Ogni tipo di autenticazione è disponibile tramite metodi di autenticazione diversi, ovvero secondo il modo in cui l'SDK riceve le credenziali come input. La tabella seguente descrive i tipi di autenticazione e le situazioni in cui sono consigliati per l'uso da parte dell'applicazione.
Tipo di autenticazione | Consigliato quando... |
---|---|
Autenticazione basata su certificati | Si dispone di un certificato X509 configurato per un utente di Microsoft Entra o un'entità servizio. Per altre informazioni, vedere Introduzione all'autenticazione basata su certificati in Microsoft Entra ID. |
Credenziali del client | Si dispone di un'entità servizio configurata per l'applicazione o una classe di applicazioni a cui questa appartiene. Per altre informazioni, vedere Creare un'entità servizio con l'interfaccia della riga di comando di Azure. |
Identità gestite per le risorse di Azure | L'applicazione viene eseguita in una risorsa di Azure che è stata configurata con un'identità gestita. Per altre informazioni, vedere l'articolo relativo alle identità gestite per le risorse di Azure. |
Token dispositivo | L'applicazione è stata progettata solo per l'utilizzo interattivo. Gli utenti possono avere l'autenticazione a più fattori abilitata. Gli utenti hanno accesso a un Web browser per eseguire l'accesso. Per altre informazioni, vedere Uso dell'autenticazione tramite token dispositivo. |
Nome utente e password | È disponibile un'applicazione interattiva che non può usare alcun altro metodo di autenticazione. Gli utenti non hanno l'autenticazione a più fattori abilitata per l'accesso a Microsoft Entra. |
Punti chiave
- Se si usa un tipo di autenticazione diverso dalle credenziali client, l'applicazione deve essere registrata in Microsoft Entra ID. Per informazioni su come, vedere Integrazione di applicazioni con Microsoft Entra ID.
- A meno che non si abbiano esigenze particolari, evitare l'autenticazione con nome utente/password. In situazioni in cui l'accesso basato sull'utente è appropriato, in genere è possibile usare l'autenticazione del token del dispositivo.
Questi tipi di autenticazione sono disponibili tramite metodi diversi.
- L'autenticazione basata su ambiente legge le credenziali direttamente dall'ambiente del programma.
- L'autenticazione basata su file carica un file contenente le credenziali dell'entità servizio.
- L'autenticazione basata su client usa un oggetto nel codice e chiede all'utente di fornire le credenziali durante l'esecuzione del programma.
- L'autenticazione tramite token dispositivo richiede l'accesso interattivo degli utenti tramite un Web browser con un token.
Tutte le funzioni e i tipi di autenticazione sono disponibili nel pacchetto github.com/Azure/go-autorest/autorest/azure/auth .
Nota
A meno che non si abbiano esigenze particolari, evitare l'autenticazione basata su client. Questo metodo di autenticazione incoraggia procedure non valide. In particolare, l'autenticazione basata su client spinge a impostare le credenziali come hardcoded. La scrittura di codici personalizzati per l'autenticazione potrà essere anche interrotta in versioni future di SDK qualora i requisiti di autenticazione cambino.
Usare l'autenticazione basata su ambiente
Se si esegue l'applicazione in un contesto controllato, l'autenticazione basata su ambiente è una scelta naturale. Con questo metodo di autenticazione è possibile configurare l'ambiente shell prima di eseguire l'applicazione. In fase di esecuzione Go SDK legge tali variabili di ambiente per l'autenticazione in Azure.
L'autenticazione basata sull'ambiente include il supporto per tutti i tipi di autenticazione ad eccezione dei token del dispositivo, valutati nell'ordine seguente:
- Credenziali del client
- Autenticazione basata su certificati
- Nome utente e password
- Identità gestite per le risorse di Azure
Se un tipo di autenticazione ha valori non configurati o viene rifiutato, l'SDK prova automaticamente il tipo di autenticazione successivo. Quando non sono disponibili altri tipi, l'SDK restituisce un errore.
La tabella seguente illustra in dettaglio le variabili di ambiente che devono essere impostate per ogni tipo di autenticazione supportato dall'autenticazione basata su ambiente.
Tipo di autenticazione | Variabile di ambiente | Descrizione |
---|---|---|
Credenziali del client | AZURE_TENANT_ID |
ID del tenant di Active Directory a cui appartiene l'entità servizio. |
AZURE_CLIENT_ID |
Nome o ID dell'entità servizio. | |
AZURE_CLIENT_SECRET |
Segreto associato all'entità servizio. | |
Certificate | AZURE_TENANT_ID |
ID del tenant di Active Directory che viene registrato con il certificato. |
AZURE_CLIENT_ID |
ID client dell'applicazione associato al certificato. | |
AZURE_CERTIFICATE_PATH |
Percorso del file di certificato client. | |
AZURE_CERTIFICATE_PASSWORD |
Password del certificato client. | |
Nome utente/password | AZURE_TENANT_ID |
ID del tenant di Active Directory a cui appartiene l'utente. |
AZURE_CLIENT_ID |
ID client dell'applicazione. | |
AZURE_USERNAME |
Nome utente con cui accedere. | |
AZURE_PASSWORD |
Password con cui accedere. | |
Identità gestita | Non sono necessarie credenziali per l'autenticazione con identità gestita. L'applicazione deve essere eseguita in una risorsa di Azure configurata per l'uso delle identità gestite. Per informazioni dettagliate, vedere l'articolo relativo alle identità gestite per le risorse di Azure. |
Per connettersi a un endpoint di gestione o cloud diverso dal cloud pubblico di Azure, impostare anche le variabili di ambiente seguenti. I motivi più comuni per impostarle includono l'uso di Azure Stack, un cloud in un'area geografica diversa o il modello di distribuzione classica.
Variabile di ambiente | Descrizione |
---|---|
AZURE_ENVIRONMENT |
Nome dell'ambiente cloud a cui connettersi. |
AZURE_AD_RESOURCE |
ID di risorsa di Active Directory da usare durante la connessione, come URI per l'endpoint di gestione. |
Quando si usa l'autenticazione basata su ambiente, chiamare la funzione NewAuthorizerFromEnvironment per ottenere l'oggetto provider di autorizzazioni. Questo oggetto viene quindi impostato sulla proprietà Authorizer
dei client per consentire loro l'accesso ad Azure.
import "github.com/Azure/go-autorest/autorest/azure/auth"
authorizer, err := auth.NewAuthorizerFromEnvironment()
Autenticazione in Azure Stack
Per autenticarsi in Azure Stack, è necessario impostare le variabili seguenti:
Variabile di ambiente | Descrizione |
---|---|
AZURE_AD_ENDPOINT |
Endpoint di Active Directory. |
AZURE_AD_RESOURCE |
ID risorsa di Active Directory. |
Queste variabili possono essere recuperate dalle informazioni sui metadati di Azure Stack. Per recuperare i metadati, aprire un Web browser nel proprio ambiente di Azure Stack e utilizzare l'URL: (ResourceManagerURL)/metadata/endpoints?api-version=1.0
ResourceManagerURL
varia in base al nome dell'area, al nome del computer e al nome di dominio completo esterno (FQDN) della distribuzione di Azure Stack:
Ambiente | ResourceManagerURL |
---|---|
Kit di sviluppo | https://management.local.azurestack.external/ |
Sistemi integrati | https://management.(region).ext-(machine-name).(FQDN) |
Per altre informazioni su come usare Azure SDK per Go in Azure Stack, vedere Usare profili di versioni delle API con Go in Azure Stack
Usare l'autenticazione basata su file
L'autenticazione basata su file usa un formato di file generato dall'interfaccia della riga di comando di Azure. È possibile creare facilmente questo file quando si crea una nuova entità servizio con il parametro --sdk-auth
. Se si intende usare l'autenticazione basata su file, assicurarsi che questo argomento venga fornito quando si crea un'entità servizio. Poiché l'interfaccia della riga di comando stampa l'output in stdout
, reindirizzare l'output verso un file.
az ad sp create-for-rbac --role Contributor \
--scopes /subscriptions/<subscription_id> \
--sdk-auth > azure.auth
Impostare la variabile di ambiente AZURE_AUTH_LOCATION
in cui si trova il file di autorizzazione. Questa variabile di ambiente viene letta dall'applicazione e le credenziali contenute in essa vengono analizzate. Se è necessario selezionare il file di autorizzazione in fase di runtime, modificare l'ambiente del programma tramite la funzione os.Setenv.
Per caricare le informazioni di autenticazione, chiamare la funzione NewAuthorizerFromFile. A differenza dell'autorizzazione basata su ambiente, l'autorizzazione basata su file richiede un endpoint di risorse.
import "github.com/Azure/go-autorest/autorest/azure/auth"
authorizer, err := NewAuthorizerFromFile(azure.PublicCloud.ResourceManagerEndpoint)
Per altre informazioni sull'uso delle entità servizio e sulla gestione delle relative autorizzazioni di accesso, vedere Creare un'entità servizio con l'interfaccia della riga di comando di Azure.
Uso dell'autenticazione tramite token dispositivo
Se si vuole che gli utenti accedano in modo interattivo, l'autenticazione tramite token dispositivo è l'approccio ottimale. Questo flusso di autenticazione passa all'utente un token da incollare in un sito di accesso Microsoft, in cui quindi esegue l'autenticazione con un account Microsoft Entra. Questo metodo di autenticazione supporta gli account in cui è abilitata l'autenticazione a più fattori, a differenza dell'autenticazione standard di nome utente/password.
Per usare l'autenticazione tramite token dispositivo, creare un provider di autorizzazioni DeviceFlowConfig con la funzione NewDeviceFlowConfig. Chiamare il provider di autorizzazioni nell'oggetto risultante per avviare il processo di autenticazione. L'autenticazione tramite flusso del dispositivo blocca l'esecuzione del programma fino a quando non è stato completato l'intero flusso di autenticazione.
import "github.com/Azure/go-autorest/autorest/azure/auth"
deviceConfig := auth.NewDeviceFlowConfig(applicationID, tenantID)
authorizer, err := deviceConfig.Authorizer()
Usare un client di autenticazione
Se è necessario un tipo di autenticazione specifico e si è disposti a far eseguire al programma il caricamento delle informazioni di autenticazione da parte dell'utente, è possibile usare qualsiasi client conforme all'interfaccia auth.AuthorizerConfig. Usare un tipo che implementa questa interfaccia nelle situazioni seguenti:
- Scrittura di un programma interattivo
- Uso di file di configurazione specializzati
- Presenza di un requisito che impedisce l'uso di un metodo di autenticazione predefinito
Avviso
Mai impostare come hardcoded le credenziali di Azure in un'applicazione. L'inserimento di informazioni riservate in un file binario dell'applicazione rende più semplice per un utente malintenzionato estrarle, indipendentemente dal fatto che l'applicazione sia in esecuzione o meno. In questo modo vengono messe a rischio tutte le risorse di Azure per cui sono autorizzate le credenziali!
Nella tabella seguente sono elencati i tipi conformi all'interfaccia AuthorizerConfig
nell'SDK.
Tipo di autenticazione | Tipo di provider di autorizzazioni |
---|---|
Autenticazione basata su certificati | ClientCertificateConfig |
Credenziali del client | ClientCredentialsConfig |
Identità gestite per le risorse di Azure | MSIConfig |
Nome utente e password | UsernamePasswordConfig |
Creare un autenticatore con la rispettiva funzione New
associata e quindi chiamare Authorize
nell'oggetto risultante per eseguire l'autenticazione. Ad esempio, per usare l'autenticazione basata su certificati:
import "github.com/Azure/go-autorest/autorest/azure/auth"
certificateAuthorizer := auth.NewClientCertificateConfig(certificatePath, certificatePassword, clientID, tenantID)
authorizerToken, err := certificateAuthorizer.Authorizer()
Passaggi successivi
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per