Authentification avec Azure SDK pour Go en utilisant une identité managée
Dans ce tutoriel, vous allez configurer une machine virtuelle Azure avec une identité managée pour vous authentifier auprès d’Azure à l’aide du Kit de développement logiciel (SDK) Azure pour Go.
Les identités managées éliminent la nécessité pour les développeurs de gérer les informations d’identification en fournissant une identité directement à une ressource Azure. Les autorisations attribuées à l’identité accordent à la ressource un accès à d’autres ressources Azure qui prennent en charge les identités managées. Suppression de l’obligation pour vous de passer des informations d’identification à votre application.
Suivez ce tutoriel pour affecter une identité managée à une machine virtuelle et vous authentifier auprès d’Azure en utilisant une identité managée.
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, vous devez configurer votre environnement.
Déployer une machine virtuelle
Déployez une machine virtuelle sur Azure. Vous allez exécuter le code Go pour créer une clé secrète dans le coffre de clés Azure à partir de cette machine virtuelle.
Création d’un groupe de ressources Azure.
az group create --name go-on-azure --location eastus
Définissez le paramètre
--location
sur la valeur appropriée pour votre environnement.Créez la machine virtuelle Azure.
az vm create \ --resource-group go-on-azure \ --name go-on-azure-vm \ --image canonical:ubuntuserver:19.04:latest \ --admin-username azureuser \ --admin-password <password>
Remplacez
<password>
par votre mot de passe.
Pour plus d’informations sur les autres services qui prennent en charge les identités managées, consultez Services qui prennent en charge les identités managées pour les ressources Azure.
Déployer une instance Key Vault
Créez une instance Azure Key Vault en exécutant la commande suivante :
az keyvault create --location eastus --name `<keyVaultName>` --resource-group go-on-azure
Remplacez <keyVaultName>
par un nom global unique.
2. Créer une identité managée
Deux types d’identités managées sont pris en charge dans Azure : les identités affectées par le système et les identités affectées par l’utilisateur.
Les identités affectées par le système sont directement attachées à une ressource Azure et limitées à cette seule ressource. Les identités affectées par l’utilisateur sont des ressources autonomes qui peuvent être affectées à une ou plusieurs ressources Azure.
Pour plus d’informations sur la différence entre les identités affectées par le système et celles affectées par l’utilisateur, consultez Types d’identités managées.
Choisissez l’une des options suivantes :
- Option 1 : Créer une identité managée affectée par le système
- Option 2 : Créer une identité managée affectée par l’utilisateur
Option 1 : Créer une identité managée affectée par le système
Exécutez les commandes suivantes pour créer une identité managée affectée par le système :
az vm identity assign -g go-on-azure -n go-on-azure-vm
Option 2 : Créer une identité managée affectée par l’utilisateur
Exécutez les commandes suivantes pour créer une identité managée affectée par l’utilisateur :
az identity create -g go-on-azure -n GoUserIdentity
az vm identity assign -g go-on-azure -n go-on-azure-vm --identities <UserIdentityId>
Remplacez <UserIdentityId>
par l’ID de l’identité de l’utilisateur managé.
Pour plus d’informations, consultez Configurer des identités managées pour des ressources Azure sur une machine virtuelle Azure en utilisant Azure CLI.
3. Attribuer un rôle à l’identité managée
Après avoir créé une identité managée, vous attribuez des rôles pour accorder à l’identité des autorisations d’accès à d’autres ressources Azure. Dans ce tutoriel, vous allez attribuer le rôle intégré Key Vault Contributor
à l’identité managée afin que l’application Go puisse créer une clé secrète dans l’instance de coffre de clés.
Choisissez l’une des options suivantes :
- Option 1 : Attribuer un rôle à une identité affectée par le système
- Option 2 : Attribuer un rôle à une identité affectée par l’utilisateur
Option 1 : Attribuer un rôle à une identité affectée par le système
Exécutez les commandes suivantes pour attribuer le rôle Key Vault Contributor
à l’identité managée affectée par le système :
#output system identity principal ID
az vm identity show --name go-on-azure-vm --resource-group go-on-azure --query 'principalId' -o tsv
#output key vault ID
scope=$(az keyvault show --name go-on-azure-kv --query id -o tsv)
az role assignment create --assignee '<principalId>' --role 'Key Vault Contributor' --scope '<keyVaultId>'
Option 2 : Attribuer un rôle à une identité affectée par l’utilisateur
Utilisez les commandes suivantes pour attribuer le rôle Key Vault Contributor
à l’identité managée affectée par l’utilisateur :
#output user identity principal ID
az identity show --resource-group go-on-azure --name GoUserIdentity --query 'principalId' -o tsv
#output key vault ID
az keyvault show --name go-on-azure-kv --query id -o tsv
az role assignment create --assignee '<principalId>' --role 'Key Vault Contributor' --scope '<keyVaultId>'
Pour plus d’informations sur les rôles intégrés, consultez Rôles intégrés d’Azure.
4. Créer une clé secrète de coffre de clés avec Go
Ensuite, connectez-vous avec SSH à la machine virtuelle Azure, installez Go, puis générez le package Go.
Installer Go sur la machine virtuelle
Obtenez l’adresse IP publique de la machine virtuelle Azure.
az vm show -d -g go-on-azure -n go-on-azure-vm --query publicIps -o tsv
Connectez-vous avec SSH à la machine virtuelle.
ssh azureuser@<public-ip>
Remplacez
<public-ip>
par l’adresse IP publique de la machine virtuelle Azure.Installer Go
sudo add-apt-repository ppa:longsleep/golang-backports; sudo apt update; sudo apt install golang-go -y
Créer le package Go
Créez un répertoire nommé
go-on-azure
dans votre répertoire de base.mkidr ~/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
main.go
et copiez-y 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() { keyVaultName := os.Getenv("KEY_VAULT_NAME") secretName := "quickstart-secret" secretValue := "createdWithGO" 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(), secretName, secretValue, 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() }
Avant d’exécuter le code, 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. Remplacez <KeyVaultName>
par le nom de votre instance Azure Key Vault.
export KEY_VAULT_NAME=<KeyVaultName>
Ensuite, exécutez go run
la commande pour créer un secret key vault.
go run main.go
Vérifiez que la clé secrète du coffre de clés a été créée en utilisant Azure PowerShell, Azure CLI ou le portail Azure.
É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