Authentification avec le Kit de développement logiciel (SDK) Azure pour Go (hérité)

Important

Cet article s’applique à la version héritée du Kit de développement logiciel (SDK) Azure pour Go. Pour l’authentification auprès des derniers modules , utilisez le package Azure Identity .

Azure SDK pour Go propose plusieurs modes d’authentification avec Azure. Ces types d’authentification sont appelés grâce à différentes méthodes d’authentification. Cet article aborde les types et méthodes d’authentification disponibles, et vous aide à déterminer celles adaptées pour votre application.

Méthodes et types d’authentification disponibles

Le Kit de développement logiciel (SDK) Azure pour Go offre différents types d’authentification, utilisant des informations d’identification différentes. Chaque type d’authentification est disponible via différentes méthodes d’authentification, qui correspondent à la façon dont le Kit de développement logiciel (SDK) accepte ces informations d’identification en tant qu’entrées. Le tableau suivant décrit les types d’authentification disponibles et les situations dans lesquelles leur utilisation est recommandée pour votre application.

Type d'authentification Recommandé lorsque...
Authentification par certificat Vous disposez d’un certificat X509 configuré pour un utilisateur ou un principal de service Microsoft Entra. Pour plus d’informations, consultez Prise en main de l’authentification basée sur des certificats dans l’ID Microsoft Entra.
Informations d’identification du client Vous avez un principal de service configuré pour cette application ou pour la classe d’applications à laquelle elle appartient. Pour en savoir plus, consultez Créer un principal du service avec Azure CLI 2.0.
Identités managées pour les ressources Azure Votre application s’exécute sur une ressource Azure qui a été configurée avec une identité managée. Pour en savoir plus, consultez Identités managées pour ressources Azure.
Jeton d’appareil Votre application est destinée à être utilisée de manière interactive uniquement. Les utilisateurs peuvent avoir activé l’authentification multifacteur. Les utilisateurs ont accès à un navigateur web pour se connecter. Pour plus d’informations, consultez Utilisation de l’authentification par jeton d’appareil.
Nom d’utilisateur/mot de passe Vous avez une application interactive qui ne peut pas utiliser d’autres méthodes d’authentification. Vos utilisateurs n’ont pas activé l’authentification multifacteur pour leur connexion Microsoft Entra.

Points clés

  • Si vous utilisez un type d’authentification autre que les informations d’identification du client, votre application doit être inscrite dans l’ID Microsoft Entra. Pour savoir comment procéder, consultez Intégration d’applications à l’ID Microsoft Entra.
  • Évitez l’authentification par nom d’utilisateur/mot de passe, à moins que vous n’ayez des exigences particulières. Dans les cas où la connexion basée sur l’utilisateur est appropriée, l’authentification par jeton d’appareil peut généralement être utilisée à la place.

Ces types d’authentification sont disponibles par le biais de différentes méthodes.

Toutes les fonctions et types d’authentification sont disponibles dans le package github.com/Azure/go-autorest/autorest/azure/auth .

Remarque

Évitez l’authentification basée sur le client, à moins que vous n’ayez des exigences particulières. Cette méthode d’authentification favorise les mauvaises pratiques. En utilisant l’authentification basée sur le client en particulier, il devient tentant de coder en dur les informations d’identification. L’écriture d’un code personnalisé pour l’authentification pourrait aussi s’interrompre sous les versions ultérieures du Kit de développement logiciel (SDK) si les exigences d’authentification sont modifiées.

Utiliser l’authentification basée sur l’environnement

Si vous exécutez votre application dans un environnement contrôlé, l’authentification basée sur l’environnement est un choix évident. Cette méthode d’authentification vous permet de configurer l’environnement de l’interpréteur de commandes avant l’exécution de votre application. Lors de l’exécution, le Kit de développement logiciel (SDK) Go lit ces variables d’environnement pour s’authentifier auprès d’Azure.

L’authentification basée sur l’environnement prend en charge tous les types d’authentification, à l’exception des jetons d’appareil, évalués dans l’ordre suivant :

  • Informations d’identification du client
  • Authentification par certificat
  • Nom d’utilisateur/mot de passe
  • Identités managées pour les ressources Azure

Si les valeurs d’un type d’authentification sont annulées ou s’il est refusé, le Kit de développement logiciel (SDK) essaie automatiquement d’utiliser le type d’authentification suivant. Quand tous les autres types d’authentification disponibles ont été testés, le Kit de développement logiciel (SDK) renvoie une erreur.

Le tableau suivant répertorie les variables d’environnement qui doivent être définies pour chaque type d’authentification pris en charge par l’authentification basée sur l’environnement.

Type d'authentification Variable d’environnement Description
Informations d’identification du client AZURE_TENANT_ID L’ID du locataire Active Directory auquel appartient le principal du service.
AZURE_CLIENT_ID Le nom ou ID du principal du service.
AZURE_CLIENT_SECRET Secret associé au principal du service.
Certificate AZURE_TENANT_ID L’ID du locataire Active Directory avec lequel le certificat est enregistré.
AZURE_CLIENT_ID L’ID client d’application associé au certificat.
AZURE_CERTIFICATE_PATH Le chemin d’accès au fichier de certificat client.
AZURE_CERTIFICATE_PASSWORD Le mot de passe du certificat client.
Nom d’utilisateur/mot de passe AZURE_TENANT_ID L’ID du locataire Active Directory auquel appartient l’utilisateur.
AZURE_CLIENT_ID L’ID du client d’application.
AZURE_USERNAME Le nom d’utilisateur avec lequel se connecter.
AZURE_PASSWORD Le mot de passe avec lequel se connecter.
Identité gérée Aucune information d’identification n’est nécessaire pour l’authentification avec identité managée. L’application doit être exécutée sur une ressource Azure configurée pour utiliser des identités managées. Pour plus d’informations, consultez Identités managées pour ressources Azure.

Pour vous connecter à un point de terminaison cloud ou de gestion autre que le cloud public Azure par défaut, définissez les variables d’environnement suivantes. Voici les raisons les plus courantes pour lesquelles vous devez les définir : si vous utilisez Azure Stack, un cloud dans une autre région géographique ou le modèle de déploiement classique.

Variable d’environnement Description
AZURE_ENVIRONMENT Le nom de l’environnement de cloud auquel se connecter.
AZURE_AD_RESOURCE L’ID de ressource Active Directory à utiliser pour vous connecter, comme une URI, à votre point de terminaison de gestion.

Lorsque vous utilisez l’authentification basée sur l’environnement, appelez la fonction NewAuthorizerFromEnvironmentafin d’obtenir votre objet d’agent d’autorisation. Cet objet est ensuite défini sur la propriété Authorizer des clients pour leur permettre d’accéder à Azure.

import "github.com/Azure/go-autorest/autorest/azure/auth"
authorizer, err := auth.NewAuthorizerFromEnvironment()

Authentification sur Azure Stack

Pour s’authentifier sur Azure Stack, vous devez définir les variables suivantes :

Variable d’environnement Description
AZURE_AD_ENDPOINT Le point de terminaison Active Directory.
AZURE_AD_RESOURCE L’ID de ressource Active Directory.

Ces variables peuvent être récupérés à partir des informations de métadonnées Azure Stack. Pour récupérer les métadonnées, ouvrez un navigateur web dans votre environnement Azure Stack et utilisez l’url : (ResourceManagerURL)/metadata/endpoints?api-version=1.0

L’élément ResourceManagerURL dépend du nom de la région, du nom de la machine, ainsi que du nom de domaine complet (FQDN) externe de votre déploiement Azure Stack :

Environnement ResourceManagerURL
Kit de développement https://management.local.azurestack.external/
Systèmes intégrés https://management.(region).ext-(machine-name).(FQDN)

Pour plus d’informations sur l’utilisation d’Azure SDK pour Go sur Azure Stack, consultez Utilisez des profils de version des API avec Go dans Azure Stack

Utiliser l’authentification basée sur un fichier

L’authentification basée sur un fichier utilise un format de fichier généré par Azure CLI. Vous pouvez facilement créer ce fichier lors de la création d’un principal de service avec le paramètre --sdk-auth. Si vous prévoyez d’utiliser l’authentification basée sur un fichier, assurez-vous que cet argument est fourni lors de la création d’un principal de service. Étant donné que l’interface CLI imprime la sortie vers stdout, redirigez la sortie vers un fichier.

az ad sp create-for-rbac --role Contributor \
    --scopes /subscriptions/<subscription_id> \
    --sdk-auth > azure.auth

Définissez la variable d’environnement AZURE_AUTH_LOCATION dans laquelle se trouve le fichier d’autorisation. Cette variable d’environnement est lue par l’application, et les informations d’identification qu’elle contient sont analysées. Si vous avez besoin de sélectionner le fichier d’autorisation lors de l’exécution, manipulez l’environnement du programme à l’aide de la fonction os.Setenv.

Pour charger les informations d’authentification, appelez la fonction NewAuthorizerFromFile. Contrairement à l’autorisation basée sur l’environnement, l’autorisation basée sur un fichier nécessite un point de terminaison de ressource.

import "github.com/Azure/go-autorest/autorest/azure/auth"
authorizer, err := NewAuthorizerFromFile(azure.PublicCloud.ResourceManagerEndpoint)

Pour plus d’informations sur l’utilisation des principaux de service et la gestion de leurs autorisations d’accès, consultez Créer un principal de service avec l’interface Azure CLI 2.0.

Utiliser l’authentification par jeton d’appareil

Si vous souhaitez que les utilisateurs se connectent de manière interactive, l’authentification par jeton d’appareil est la meilleure option. Ce flux d’authentification transmet à l’utilisateur un jeton pour coller dans un site de connexion Microsoft, où il s’authentifie ensuite auprès d’un compte Microsoft Entra. Cette méthode d’authentification prend en charge les comptes qui ont activé l’authentification multifacteur, contrairement à l’authentification par nom d’utilisateur/mot de passe standard.

Pour utiliser l’authentification par jeton d’appareil, vous devez créer un agent d’autorisation DeviceFlowConfig avec la fonction NewDeviceFlowConfig. Appelez l’Agent d’autorisation sur l’objet résultant pour démarrer le processus d’authentification. L’authentification par flux d’appareil bloque l’exécution du programme jusqu’à ce que le flux d’authentification soit entièrement terminé.

import "github.com/Azure/go-autorest/autorest/azure/auth"
deviceConfig := auth.NewDeviceFlowConfig(applicationID, tenantID)
authorizer, err := deviceConfig.Authorizer()

Utiliser un client d’authentification

Si vous avez besoin d’un type d’authentification spécifique et que vous acceptez que votre programme s’occupe de charger les informations d’authentification de l’utilisateur, vous pouvez utiliser n’importe quel client qui est conforme à l’interface auth.AuthorizerConfig. Utilisez un type qui implémente cette interface quand :

  • vous écrivez un programme interactif ;
  • vous utilisez des fichiers config spécialisés ;
  • vous avez une exigence qui empêche l’utilisation d’une méthode d’authentification intégrée.

Avertissement

Ne codez jamais les informations d’identification en dur dans une application. Placer des secrets dans un binaire d’application facilite leur extraction par un intrus, que l’application soit en cours d’exécution ou non. Cela expose toutes les ressources Azure, pour lesquelles les informations d’identification sont autorisées, à des risques !

Le tableau suivant répertorie les types dans le Kit de développement logiciel (SDK) conformes à l’interface AuthorizerConfig.

Type d'authentification Type d’agent d’autorisation
Authentification par certificat ClientCertificateConfig
Informations d’identification du client ClientCredentialsConfig
Identités managées pour les ressources Azure MSIConfig
Nom d’utilisateur/mot de passe UsernamePasswordConfig

Créez un authentificateur avec sa fonction New associée, puis appelez Authorize sur l’objet résultant pour vous authentifier. Par exemple, pour l’authentification par certificat :

import "github.com/Azure/go-autorest/autorest/azure/auth"
certificateAuthorizer := auth.NewClientCertificateConfig(certificatePath, certificatePassword, clientID, tenantID)
authorizerToken, err := certificateAuthorizer.Authorizer()

Étapes suivantes