Autenticazione di Azure SDK per Go con un'entità servizio
In questa esercitazione si userà Azure SDK for Go per eseguire l'autenticazione in Azure con un'entità servizio di Azure usando un segreto o un certificato.
Le entità servizio di Azure definiscono i criteri di accesso e le autorizzazioni in un tenant di Microsoft Entra. Abilitazione di funzionalità di base come l'autenticazione durante l'accesso e l'autorizzazione durante l'accesso alle risorse. Rimozione della necessità di usare account personali per accedere alle risorse di Azure. Il modulo Azure Identity di Azure SDK per Go offre un modo pratico per eseguire l'autenticazione con Azure usando un'entità servizio usando variabili di ambiente, un segreto o un certificato
Seguire questa esercitazione per creare ed eseguire l'autenticazione con Azure SDK per Go usando un'entità servizio.
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. Configurare l'ambiente
Prima di iniziare, creare un nuovo gruppo di risorse e un'istanza dell'insieme di credenziali delle chiavi.
az group create --name go-on-azure --location eastus
az keyvault create --location eastus --name `<keyVaultName>` --resource-group go-on-azure
Sostituire <keyVaultName>
con un nome univoco globale. Prendere nota anche dell'oggetto Id
dell'output, che verrà usato per l'ambito dell'account del servizio.
2. Creare un'entità servizio di Azure
Usare una delle tecniche seguenti per creare un'entità servizio di Azure:
- Opzione 1: Creare un'entità servizio di Azure con un segreto
- Opzione 2: Creare un'entità servizio di Azure con un certificato
Per altre informazioni sulle entità servizio di Azure, vedere Oggetto entità servizio.
Opzione 1: Creare un'entità servizio di Azure con un segreto
Eseguire i comandi seguenti per creare un'entità servizio di Azure.
az ad sp create-for-rbac --name `<servicePrincipalName>` --role Contributor --scope <resourceGroupId>
Sostituire <servicePrincipalName>
e <resourceGroupId>
con i valori appropriati.
Assicurarsi di copiare il valore della password . Non è possibile recuperarlo. Se si dimentica la password, reimpostare le credenziali dell'entità servizio.
Opzione 2: Creare un'entità servizio di Azure con un certificato
az ad sp create-for-rbac --name <servicePrincipal> --create-cert --role Contributor --scope <resourceGroupId>
Sostituire <servicePrincipalName>
e <resourceGroupId>
con i valori appropriati.
3. Eseguire l'autenticazione in Azure con un'entità servizio
DefaultAzureCredential
Usando , è possibile evitare di scrivere codice specifico dell'ambiente per l'autenticazione in Azure.
Usare per configurare le credenziali dell'entità DefaultAzureCredential
servizio definendo le variabili di ambiente.
Scegliere una delle opzioni seguenti per configurare le credenziali dell'entità servizio:
- Opzione 1: Eseguire l'autenticazione con un segreto
- Opzione 2: Eseguire l'autenticazione con un certificato
Per altre informazioni su DefaultAzureCredential
, vedere Autenticazione di Azure con Azure SDK per Go
Opzione 1: Eseguire l'autenticazione con un segreto
Definire le variabili di ambiente seguenti:
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>"
Opzione 2: Eseguire l'autenticazione con un certificato
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_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>"
Usare DefaultAzureCredential per autenticare ResourceClient
Usare la NewDefaultAzureCredential
funzione del modulo Identità di Azure per autenticare un oggetto ResourceClient.
cred, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
log.Fatalf("failed to obtain a credential: %v", err)
}
4. Codice di esempio
Usare l'esempio di codice seguente per verificare che l'entità servizio esegua l'autenticazione in Azure e disponga delle autorizzazioni appropriate per il gruppo di risorse.
Creare una nuova directory denominata
go-on-azure
nella home directory.mkdir ~/go-on-azure
Passare alla
go-on-azure
directory.cd ~/go-on-azure
Eseguire
go mod init
per creare il filego.mod
.go mod init go-on-azure
Eseguire
go get
per installare i moduli Go necessari.go get "github.com/Azure/azure-sdk-for-go/sdk/azidentity" go get "github.com/Azure/azure-sdk-for-go/sdk/keyvault/azsecrets"
Creare un file denominato
main.go
e aggiungere il codice seguente.package main import ( "context" "fmt" "log" "os" "github.com/Azure/azure-sdk-for-go/sdk/azidentity" "github.com/Azure/azure-sdk-for-go/sdk/keyvault/azsecrets" ) func createSecret(name, value string) { keyVaultName := os.Getenv("KEY_VAULT_NAME") keyVaultUrl := fmt.Sprintf("https://%s.vault.azure.net/", keyVaultName) cred, err := azidentity.NewDefaultAzureCredential(nil) if err != nil { log.Fatalf("failed to obtain a credential: %v", err) } client, err := azsecrets.NewClient(keyVaultUrl, cred, nil) if err != nil { log.Fatalf("failed to create a client: %v", err) } resp, err := client.SetSecret(context.TODO(), name, value, nil) if err != nil { log.Fatalf("failed to create a secret: %v", err) } fmt.Printf("Name: %s, Value: %s\n", *resp.ID, *resp.Value) } func main() { createSecret("ExamplePassword", "hVFkk965BuUv") }
Creare una variabile di ambiente denominata
KEY_VAULT_NAME
. Impostare il valore della variabile di ambiente sul nome dell'insieme di credenziali delle chiavi di Azure creato in precedenza.export KEY_VAULT_NAME=<KeyVaultName>
Sostituire
<KeyVaultName>
con il nome dell'istanza di Azure Key Vault.Eseguire il
go run
comando per creare il nuovo segreto dell'insieme di credenziali delle chiavi.go run main.go
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