Autenticazione di Azure con il modulo Azure Identity per Go
In questa esercitazione viene usato il tipo DefaultAzureCredential del modulo Identità di Azure per Go per l'autenticazione in Azure. Il modulo Identità di Azure offre diversi tipi di credenziali incentrati su OAuth con Microsoft Entra ID.
DefaultAzureCredential
semplifica l'autenticazione combinando tipi di credenziali di uso comune. Concatena i tipi di credenziali usati per autenticare le applicazioni distribuite in Azure con tipi di credenziali usati per l'autenticazione in un ambiente di sviluppo.
Prerequisiti
- Sottoscrizione di Azure: se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.
- Vai installato: versione 1.18 o successiva
1. Installare il modulo Azure Identity per Go
Eseguire il comando seguente per scaricare il modulo azidentity :
go get -u github.com/Azure/azure-sdk-for-go/sdk/azidentity
2. Eseguire l'autenticazione con Azure
Usare per eseguire l'autenticazione DefaultAzureCredential
in Azure con una delle tecniche seguenti:
- Opzione 1: Definire le variabili di ambiente
- Opzione 2: Usare l'identità del carico di lavoro
- Opzione 3: Usare un'identità gestita
- Opzione 4: Accedere con l'interfaccia della riga di comando di Azure
Per altre informazioni sui diversi tipi di credenziali, vedere Tipi di credenziali.
Opzione 1: Definire le variabili di ambiente
DefaultAzureCredential
usa il EnvironmentCredential
tipo per configurare l'autenticazione usando variabili di ambiente che supportano tre tipi di autenticazione. Scegliere tra i tipi di autenticazione seguenti e definire le variabili di ambiente appropriate.
Entità servizio con un segreto
Nome variabile | Valore |
---|---|
AZURE_CLIENT_ID |
ID applicazione di un'entità servizio di Azure |
AZURE_TENANT_ID |
ID del tenant Microsoft Entra dell'applicazione |
AZURE_CLIENT_SECRET |
Password dell'entità servizio di Azure |
export AZURE_TENANT_ID="<active_directory_tenant_id"
export AZURE_CLIENT_ID="<service_principal_appid>"
export AZURE_CLIENT_SECRET="<service_principal_password>"
Entità servizio con certificato
Nome variabile | Valore |
---|---|
AZURE_CLIENT_ID |
ID di un'applicazione Microsoft Entra |
AZURE_TENANT_ID |
ID del tenant Microsoft Entra dell'applicazione |
AZURE_CLIENT_CERTIFICATE_PATH |
Percorso di un file di certificato con chiave privata (senza protezione password) |
export AZURE_TENANT_ID="<active_directory_tenant_id>"
export AZURE_CLIENT_ID="<service_principal_appid>"
export AZURE_CLIENT_CERTIFICATE_PATH="<azure_client_certificate_path>"
Nome utente e password
Nome variabile | Valore |
---|---|
AZURE_CLIENT_ID |
ID di un'applicazione Microsoft Entra |
AZURE_USERNAME |
Un nome utente (in genere un indirizzo di posta elettronica) |
AZURE_PASSWORD |
Password dell'utente |
export AZURE_CLIENT_ID="<service_principal_appid>"
export AZURE_USERNAME="<azure_username>"
export AZURE_PASSWORD="<azure_user_password>"
La configurazione viene tentata nell'ordine precedente. Ad esempio, se i valori per un segreto client e un certificato sono entrambi presenti, viene usato il segreto client.
Opzione 2: Usare l'identità del carico di lavoro
ID dei carichi di lavoro di Microsoft Entra consente ai pod in un cluster Kubernetes di usare un'identità Kubernetes (account del servizio). Viene rilasciato un token Kubernetes e la federazione OIDC consente alle applicazioni Kubernetes di accedere in modo sicuro alle risorse di Azure con Microsoft Entra ID.
Se le variabili di ambiente necessarie per EnvironmentCredential
non sono presenti, DefaultAzureCredential
tenta di eseguire l'autenticazione usando WorkloadIdentityCredential. WorkloadIdentityCredential
tenta di leggere la configurazione dell'entità servizio dalle variabili di ambiente impostate dal webhook identità del carico di lavoro.
Opzione 3: Usare un'identità gestita
Le identità gestite eliminano la necessità per gli sviluppatori di gestire credenziali. Connettendosi alle risorse che supportano l'autenticazione di Microsoft Entra, le applicazioni possono usare i token Di Microsoft Entra anziché le credenziali.
Se le variabili di ambiente necessarie per WorkloadIdentityCredential
non sono presenti, DefaultAzureCredential
tenta di eseguire l'autenticazione usando ManagedIdentityCredential.
Se si usa un'identità gestita assegnata dall'utente, eseguire il comando seguente per impostare la AZURE_CLIENT_ID
variabile di ambiente.
export AZURE_CLIENT_ID="<user_assigned_managed_identity_client_id>"
Opzione 4: Accedere con l'interfaccia della riga di comando di Azure
Per ridurre l'attrito nello sviluppo locale, DefaultAzureCredential
è possibile eseguire l'autenticazione come utente connesso all'interfaccia della riga di comando di Azure.
Eseguire il comando seguente per accedere all'interfaccia della riga di comando di Azure:
az login
L'autenticazione dell'interfaccia della riga di comando di Azure non è consigliata per le applicazioni in esecuzione in Azure.
3. Usare DefaultAzureCredential per autenticare ResourceClient
Creare un nuovo modulo Go di esempio denominato azure-auth
per testare l'autenticazione in Azure con DefaultAzureCredential
:
Creare una directory per testare ed eseguire il codice Go di esempio, quindi passare a tale directory.
Eseguire go mod init per creare un modulo:
go mod init azure-auth
Eseguire go per scaricare, compilare e installare i moduli necessari per Azure SDK per Go:
go get "github.com/Azure/azure-sdk-for-go/sdk/azidentity" go get "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/subscription/armsubscription"
Creare un file denominato
main.go
e inserire il codice seguente:package main import ( "context" "github.com/Azure/azure-sdk-for-go/sdk/azidentity" "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/subscription/armsubscription" ) const subscriptionID = "<subscription ID>" func main() { cred, err := azidentity.NewDefaultAzureCredential(nil) if err != nil { // TODO: handle error } // Azure SDK Resource Management clients accept the credential as a parameter. // The client will authenticate with the credential as necessary. client, err := armsubscription.NewSubscriptionsClient(cred, nil) if err != nil { // TODO: handle error } _, err = client.Get(context.TODO(), subscriptionID, nil) if err != nil { // TODO: handle error } }
Sostituire
<subscription ID>
con l'ID della sottoscrizione.Eseguire
go run
per compilare ed eseguire l'applicazione:go run .
Eseguire l'autenticazione in Azure con DefaultAzureCredential
Usare il codice seguente nell'applicazione per eseguire l'autenticazione in Azure con il modulo Azure Identity usando DefaultAzureCredential
:
// This credential type checks environment variables for configuration.
cred, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
// handle error
}
// Azure Resource Management clients accept the credential as a parameter
client, err := armresources.NewClient("<subscriptionId>", cred, nil)
if err != nil {
// handle error
}
Risoluzione dei problemi
Per indicazioni sulla risoluzione degli errori da tipi di credenziali specifici, vedere la guida alla risoluzione dei problemi.
Passaggi successivi
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: nel corso del 2024 verranno dismessi i problemi di GitHub come meccanismo di feedback per il contenuto e verranno sostituiti con un nuovo sistema di feedback. Per altre informazioni, vedere:Invia e visualizza il feedback per