Partager via


Authentifier les applications Go auprès des services Azure pendant le développement local à l’aide de comptes de développeur

Pendant le développement local, les applications doivent s’authentifier auprès d’Azure pour utiliser différents services Azure. Authentifiez-vous localement à l’aide de l’une des approches suivantes :

Cet article explique comment s’authentifier à l’aide d’un compte de développeur avec des outils pris en charge par la bibliothèque Azure Identity. Dans les sections suivantes, vous allez apprendre :

  • Comment utiliser des groupes Microsoft Entra pour gérer efficacement les autorisations pour plusieurs comptes de développeur.
  • Comment attribuer des rôles à des comptes de développeurs pour définir les autorisations.
  • Comment se connecter aux outils de développement locaux pris en charge.
  • Comment s’authentifier à l’aide d’un compte de développeur à partir de votre code d’application.

Outils de développement pris en charge pour l’authentification

Pour qu’une application s’authentifie auprès d’Azure pendant le développement local à l’aide des informations d’identification Azure du développeur, le développeur doit être connecté à Azure à partir de l’un des outils de développement suivants :

  • Azure CLI
  • Interface en ligne de commande Azure pour les développeurs
  • Azure PowerShell

La bibliothèque Azure Identity peut détecter que le développeur est connecté à partir de l’un de ces outils. La bibliothèque peut ensuite obtenir le jeton d’accès Microsoft Entra via l’outil pour authentifier l’application auprès d’Azure en tant qu’utilisateur connecté.

Cette approche tire parti des comptes Azure existants du développeur pour simplifier le processus d’authentification. Toutefois, le compte d’un développeur a probablement plus d’autorisations que nécessaire par l’application, ce qui dépasse les autorisations avec laquelle l’application s’exécute en production. En guise d’alternative, vous pouvez créer des principaux de service d’application à utiliser pendant le développement local, qui peuvent être limités aux seuls besoins de l’application.

Créer un groupe Microsoft Entra pour le développement local

Créez un groupe Microsoft Entra pour encapsuler les rôles (autorisations) dont l’application a besoin dans le développement local plutôt que d’affecter les rôles à des objets de principal de service individuels. Cette approche offre les avantages suivants :

  • Chaque développeur a les mêmes rôles attribués au niveau du groupe.
  • Si un nouveau rôle est nécessaire pour l’application, il doit uniquement être ajouté au groupe de l’application.
  • Si un nouveau développeur rejoint l’équipe, un nouveau principal du service d’application est créé pour le développeur et ajouté au groupe, ce qui garantit que le développeur dispose des autorisations appropriées pour travailler sur l’application.
  1. Accédez à la page de vue d’ensemble Microsoft Entra ID dans le portail Azure.

  2. Sélectionnez Tous les groupes dans le menu de gauche.

  3. Dans la page Groupes , sélectionnez Nouveau groupe.

  4. Dans la page Nouveau groupe , renseignez les champs de formulaire suivants :

    • type de groupe: sélectionnez la sécurité .
    • Nom du groupe : entrez un nom pour le groupe qui inclut une référence à l’application ou au nom de l’environnement.
    • Description du groupe : entrez une description qui explique l’objectif du groupe.

    capture d’écran A montrant comment créer un groupe dans le portail Azure.

  5. Sélectionnez le lien Aucun membre sélectionné sous Membres pour ajouter des membres au groupe.

  6. Dans le volet volant qui s’ouvre, recherchez le principal de service que vous avez créé précédemment et sélectionnez-le dans les résultats filtrés. Choisissez le bouton Sélectionner en bas du panneau pour confirmer votre sélection.

  7. Sélectionnez Créer en bas de la page Nouveau groupe pour créer le groupe et revenir à la page Tous les groupes . Si vous ne voyez pas le nouveau groupe répertorié, attendez un instant et actualisez la page.

Attribuer des rôles au groupe

Ensuite, déterminez les rôles (autorisations) dont votre application a besoin sur les ressources et attribuez ces rôles au groupe Microsoft Entra que vous avez créé. Les groupes peuvent être affectés à un rôle au niveau de la ressource, du groupe de ressources ou de l’étendue de l’abonnement. Cet exemple montre comment attribuer des rôles à l’étendue du groupe de ressources, car la plupart des applications regroupent toutes leurs ressources Azure dans un seul groupe de ressources.

  1. Dans le portail Azure, accédez à la page Vue d’ensemble du groupe de ressources qui contient votre application.

  2. Dans le menu de navigation de gauche, sélectionnez Contrôle d’accès (IAM) .

  3. Dans la page Contrôle d’accès (IAM), sélectionnez + Ajouter , puis choisissez Ajouter une attribution de rôle dans le menu déroulant. La page Ajouter une attribution de rôle fournit plusieurs onglets pour configurer et attribuer des rôles.

  4. Sous l’onglet Rôle , utilisez la zone de recherche pour localiser le rôle que vous souhaitez attribuer. Sélectionnez le rôle, puis choisissez Suivant.

  5. Sous l’onglet Membres :

    • Pour la valeur Attribuer l’accès à, sélectionnez Utilisateur, groupe ou principal de service.
    • Pour la valeur Membres , choisissez + Sélectionner des membres pour ouvrir le volet volant Sélectionner des membres .
    • Recherchez le groupe Microsoft Entra que vous avez créé précédemment et sélectionnez-le dans les résultats filtrés. Choisissez Sélectionner pour choisir le groupe et fermer le volet déroulant.
    • Sélectionnez Vérifier + affecter en bas de l’onglet Membres .

    Une capture d’écran montrant comment attribuer un rôle au groupe Microsoft Entra.

  6. Sous l’onglet Révision + affectation , sélectionnez Vérifier + affecter en bas de la page.

Connectez-vous à Azure à l’aide d’outils de développement

Ensuite, connectez-vous à Azure à l’aide de l’un des outils de développement que vous pouvez utiliser pour effectuer l’authentification dans votre environnement de développement. Le compte que vous authentifiez doit également exister dans le groupe Microsoft Entra que vous avez créé et configuré précédemment.

Les développeurs peuvent utiliser Azure CLI pour s’authentifier. Les applications qui utilisent DefaultAzureCredential ou AzureCLICredential peuvent ensuite utiliser ce compte pour authentifier les demandes d’application.

Pour vous authentifier auprès d’Azure CLI, exécutez la az login commande. Sur un système avec un navigateur web par défaut, Azure CLI lance le navigateur pour authentifier l’utilisateur.

az login

Pour les systèmes sans navigateur web par défaut, la commande az login utilise le flux d’authentification du code d’appareil. Vous pouvez également spécifier l’argument --use-device-code pour forcer Azure CLI à utiliser le flux de code d’appareil au lieu de lancer un navigateur.

az login --use-device-code

S’authentifier auprès des services Azure à partir de votre application

Le package azidentity fournit différentes informations d’identification adaptées à la prise en charge de différents scénarios et flux d’authentification Microsoft Entra. Les étapes suivantes montrent comment utiliser DefaultAzureCredential lors de l’utilisation des principaux de service localement et en production.

Implémenter le code

Pour authentifier les objets clients du Kit de développement logiciel (SDK) Azure sur Azure, votre application doit utiliser la classe DefaultAzureCredential. Dans ce scénario, DefaultAzureCredential vérifie de manière séquentielle si le développeur s’est connecté à Azure à l’aide d’Azure CLI ou d’Azure Developer CLI. Si le développeur se connecte à Azure à l’aide de l’un de ces outils, l’application utilise les informations d’identification pour l’authentification.

DefaultAzureCredential est une séquence ordonnée de mécanismes pour l’authentification auprès de Microsoft Entra ID. Chaque mécanisme d’authentification est un type implémentant l’interface TokenCredential et est appelé informations d’identification. DefaultAzureCredential Vérifie séquentiellement si le développeur s’est connecté à Azure à l’aide d’Azure CLI ou d’Azure Developer CLI. Si le développeur se connecte à Azure à l’aide de l’un de ces outils, l’application utilise les informations d’identification pour l’authentification. Pour plus d’informations sur la personnalisation de la chaîne d’informations d’identification, consultez Comment personnaliser DefaultAzureCredential.

  1. Ajoutez le azidentity package à votre application.

    go get github.com/Azure/azure-sdk-for-go/sdk/azidentity
    
  2. Pour tout code Go qui crée un objet client azure SDK dans votre application, vous souhaitez :

    1. Importez le package azidentity.
    2. Utilisez DefaultAzureCredential ou AzureCLICredential pour créer une instance d’informations d’identification. Par exemple:
    • Pour utiliser DefaultAzureCredential, définissez la variable AZURE_TOKEN_CREDENTIALS d’environnement sur dev ce qui indique que l’application est en cours d’exécution dans un environnement de développement. Pour plus d’informations, consultez Comment personnaliser DefaultAzureCredential.

      // Environment variable AZURE_TOKEN_CREDENTIALS=dev or a specific developer tool credential value
      cred, err := azidentity.NewDefaultAzureCredential(nil)
      
    • Vous pouvez également utiliser des informations d’identification spécifiques telles que AzureCLICredential, AzureDeveloperCLICredentialou AzurePowerShellCredential pour vous authentifier à l’aide de l’utilisateur connecté pour un outil de développement spécifique.

      cred, err := azidentity.NewAzureCLICredential(nil)
      // or cred, err := azidentity.NewAzureDeveloperCLICredential(nil)
      // or cred, err := azidentity.NewAzurePowerShellCredential(nil)
      
    1. Transmettez l’instance d’informations d’identification au constructeur client du Kit de développement logiciel (SDK) Azure.

Un exemple de ces étapes est illustré dans le segment de code suivant.

import (
	"context"

	"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
	"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"
)

const (
	account       = "https://<replace_with_your_storage_account_name>.blob.core.windows.net/"
	containerName = "sample-container"
	blobName      = "sample-blob"
	sampleFile    = "path/to/sample/file"
)

func main() {
	// create a credential
	cred, err := azidentity.NewDefaultAzureCredential(nil)
	// or cred, err := azidentity.NewAzureCLICredential(nil)
	// or cred, err := azidentity.NewAzureDeveloperCLICredential(nil)
	// or cred, err := azidentity.NewAzurePowerShellCredential(nil)
	if err != nil {
	  // TODO: handle error
	}
	
	// create a client for the specified storage account
	client, err := azblob.NewClient(account, cred, nil)
	if err != nil {
	  // TODO: handle error
	}
	
	// TODO: perform some action with the azblob Client
	// _, err = client.DownloadFile(context.TODO(), <containerName>, <blobName>, <target_file>, <DownloadFileOptions>)
}