Authentification Azure SDK pour Go avec un principal de service
Dans ce tutoriel, vous allez utiliser Azure SDK pour Go pour vous authentifier auprès d’Azure avec un principal de service Azure en utilisant une clé secrète ou un certificat.
Les principaux de service Azure définissent la stratégie d’accès et les autorisations dans un locataire Microsoft Entra. Activation des fonctionnalités de base, comme l’authentification lors de la connexion et l’autorisation lors de l’accès aux ressources. Suppression de la nécessité d’utiliser des comptes personnels pour accéder à des ressources Azure. Le module Identité Azure d’Azure SDK pour Go offre un moyen pratique de s’authentifier auprès d’Azure en utilisant un principal de service avec des variables d’environnement, une clé secrète ou un certificat.
Suivez ce tutoriel pour créer et vous authentifier avec Azure SDK pour Go en utilisant un principal de service.
Prérequis
- Abonnement Azure : Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.
- Go installé : Version 1.18 ou ultérieure
1. Configurer votre environnement
Avant de commencer, créez un groupe de ressources et une instance de coffre de clés.
az group create --name go-on-azure --location eastus
az keyvault create --location eastus --name `<keyVaultName>` --resource-group go-on-azure
Remplacez <keyVaultName>
par un nom global unique. Prenez également note de Id
la sortie, vous l’utiliserez pour l’étendue du compte de service.
2. Créer un principal de service Azure
Utilisez une des techniques suivantes pour créer un principal de service Azure :
- Option 1 : Créer un principal de service Azure avec une clé secrète
- Option 2 : Créer un principal de service Azure avec un certificat
Pour en savoir plus sur les principaux de service Azure, consultez Objet Principal de service.
Option 1 : Créer un principal de service Azure avec une clé secrète
Exécutez les commandes suivantes pour créer un principal de service Azure.
az ad sp create-for-rbac --name `<servicePrincipalName>` --role Contributor --scope <resourceGroupId>
Remplacez <servicePrincipalName>
et <resourceGroupId>
par les valeurs appropriées.
N’oubliez pas de copier la valeur de mot de passe, car elle ne peut pas être récupérée ultérieurement. Si vous oubliez le mot de passe, effectuez une réinitialisation des informations d’identification du principal du service.
Option 2 : Créer un principal de service Azure avec un certificat
az ad sp create-for-rbac --name <servicePrincipal> --create-cert --role Contributor --scope <resourceGroupId>
Remplacez <servicePrincipalName>
et <resourceGroupId>
par les valeurs appropriées.
3. S’authentifier auprès d’Azure avec un principal de service
En utilisant DefaultAzureCredential
, vous pouvez éviter d’écrire du code spécifique à l’environnement pour l’authentification auprès d’Azure.
Utilisez DefaultAzureCredential
pour configurer les informations d’identification de votre principal de service en définissant des variables d’environnement.
Choisissez une des options suivantes pour configurer les informations d’identification de votre principal de service :
Pour plus d’informations sur DefaultAzureCredential
, consultez Authentification Azure avec Azure SDK pour Go
Option 1 : S’authentifier avec une clé secrète
Définissez les variables d’environnement suivantes :
Nom de la variable | Valeur |
---|---|
AZURE_CLIENT_ID |
ID d’application d’un principal de service Azure |
AZURE_TENANT_ID |
ID du locataire Microsoft Entra de l’application |
AZURE_CLIENT_SECRET |
Mot de passe du principal de service Azure |
export AZURE_TENANT_ID="<active_directory_tenant_id"
export AZURE_CLIENT_ID="<service_principal_appid>"
export AZURE_CLIENT_SECRET="<service_principal_password>"
Option 2 : S’authentifier avec un certificat
Nom de la variable | Valeur |
---|---|
AZURE_CLIENT_ID |
ID d’application d’un principal de service Azure |
AZURE_TENANT_ID |
ID du locataire Microsoft Entra de l’application |
AZURE_CLIENT_CERTIFICATE_PATH |
Chemin vers un fichier de certificat incluant la clé privée (sans protection par mot de passe) |
export AZURE_TENANT_ID="<active_directory_tenant_id"
export AZURE_CLIENT_ID="<service_principal_appid>"
export AZURE_CLIENT_CERTIFICATE_PATH="<azure_client_certificate_path>"
Utiliser DefaultAzureCredential pour authentifier ResourceClient
Utilisez la fonction NewDefaultAzureCredential
du module Identité Azure pour authentifier un ResourceClient.
cred, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
log.Fatalf("failed to obtain a credential: %v", err)
}
4. Exemple de code
Utilisez l’exemple de code suivant pour vérifier que votre principal de service s’authentifie auprès d’Azure et qu’il dispose des autorisations appropriées pour le groupe de ressources.
Créez un répertoire appelé
go-on-azure
dans votre répertoire de base.mkdir ~/go-on-azure
Accédez au répertoire
go-on-azure
.cd ~/go-on-azure
Exécutez
go mod init
pour créer le fichiergo.mod
.go mod init go-on-azure
Exécutez
go get
pour installer les modules Go nécessaires.go get "github.com/Azure/azure-sdk-for-go/sdk/azidentity" go get "github.com/Azure/azure-sdk-for-go/sdk/keyvault/azsecrets"
Créez un fichier nommé
main.go
et ajoutez le code suivant.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") }
Créez une variable d’environnement nommée
KEY_VAULT_NAME
. Définissez la valeur de la variable d’environnement en spécifiant le nom du coffre Azure Key Vault créé précédemment.export KEY_VAULT_NAME=<KeyVaultName>
Remplacez
<KeyVaultName>
par le nom de votre instance Azure Key Vault.Exécutez la
go run
commande pour créer le secret du coffre de clés.go run main.go
Étapes suivantes
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour