Comment authentifier des applications JavaScript hébergées par Azure sur des ressources Azure à l’aide de la bibliothèque d’identités Azure
Lorsqu’une application est hébergée dans Azure (à l’aide d’un service tel qu’Azure App Service, Azure Functions ou Azure Container Apps), vous pouvez utiliser une identité managée pour authentifier en toute sécurité votre application auprès des ressources Azure.
Une identité managée fournit une identité pour votre application, ce qui lui permet de se connecter à d’autres ressources Azure sans avoir à utiliser de secret (par exemple, une chaîne de connexion ou une clé). En interne, Azure reconnaît l’identité de votre application et sait quelles ressources l’application est autorisée à accéder. Azure utilise ces informations pour obtenir automatiquement des jetons Microsoft Entra pour l’application, ce qui lui permet de se connecter à d’autres ressources Azure sans avoir à gérer (créer ou faire pivoter) les secrets d’authentification.
Types d’identités managées
Il existe deux types d’identités managées :
- Identités managées affectées par le système - ressource Azure unique
- Identités managées affectées par l’utilisateur - plusieurs ressources Azure
Cet article couvre les étapes pour activer et utiliser une identité gérée attribuée par le système pour une application. Si vous devez utiliser une identité managée affectée par l’utilisateur, consultez l’article Gérer les identités managées affectées par l’utilisateur pour voir comment créer une identité managée affectée par l’utilisateur.
Identités managées affectées par le système pour une seule ressource
Les identités managées affectées par le système sont fournies et liées directement à une ressource Azure. Lorsque vous activez l’identité managée sur une ressource Azure, vous obtenez une identité managée affectée par le système pour cette ressource. L’identité managée est liée au cycle de vie de la ressource Azure. Lorsque la ressource est supprimée, Azure supprime automatiquement l’identité. Étant donné que tout ce que vous devez faire est d’activer l’identité managée pour la ressource Azure hébergeant votre code, ce type d’identité est le type d’identité managée le plus simple à utiliser.
Identités managées affectées par l’utilisateur pour plusieurs ressources
Une identité managée affectée par l’utilisateur est une ressource Azure autonome. Ce type d’identité est le plus fréquemment utilisé lorsque votre solution a plusieurs charges de travail qui s’exécutent sur plusieurs ressources Azure qui doivent tous partager la même identité et les mêmes autorisations. Par exemple, supposons que votre solution inclut des applications qui s’exécutent sur plusieurs instances d’App Service et de machine virtuelle. Les applications ont tous besoin d’accéder au même ensemble de ressources Azure. La création et l’utilisation d’une identité managée affectée par l’utilisateur sur ces ressources constituent le meilleur choix de conception.
1 - Activer l’identité managée affectée par le système dans l’application hébergée
La première étape consiste à activer l’identité managée sur la ressource Azure hébergeant votre application. Par exemple, si vous hébergez une application Express.js à l’aide d’Azure App Service, vous devez activer l’identité managée pour cette application web App Service. Si vous utilisez une machine virtuelle pour héberger votre application, vous activez votre machine virtuelle à utiliser l’identité managée.
Vous pouvez activer l’identité managée pour une ressource Azure à l’aide du Portail Azure ou d’Azure CLI.
2 - Attribuer des rôles à l’identité managée
Ensuite, vous devez déterminer les rôles (autorisations) dont votre application a besoin et affecter l’identité managée à ces rôles dans Azure. Une identité managée peut se voir attribuer des rôles au niveau d’une ressource, d’un groupe de ressources ou d’une étendue d’abonnement. Cet exemple montre comment attribuer des rôles au niveau du groupe de ressources, car la plupart des applications regroupent toutes leurs ressources Azure dans un seul groupe de ressources.
3 - Implémenter DefaultAzureCredential dans votre application
DefaultAzureCredential détecte automatiquement qu’une identité managée est utilisée et utilise l’identité managée pour s’authentifier auprès d’autres ressources Azure. Comme discuté dans l’article de présentation de l’authentification JavaScript de la bibliothèque Azure Identity , DefaultAzureCredential
prend en charge plusieurs méthodes d’authentification et détermine la méthode d’authentification utilisée au moment de l’exécution. De cette façon, votre application peut utiliser différentes méthodes d’authentification dans différents environnements sans implémenter de code spécifique à l’environnement.
Tout d'abord, ajoutez le package @azure/identity à votre application.
npm install @azure/identity
Ensuite, pour tout code JavaScript qui crée un objet client azure SDK dans votre application, vous souhaitez :
- Importez la classe
DefaultAzureCredential
du module@azure/identity
. - Créez un objet
DefaultAzureCredential
. - Transmettez l'objet
DefaultAzureCredential
au constructeur de l'objet client du SDK Azure.
Un exemple de ces étapes est illustré dans le segment de code suivant.
// connect-with-default-azure-credential.js
import { BlobServiceClient } from '@azure/storage-blob';
import { DefaultAzureCredential } from '@azure/identity';
import 'dotenv/config'
const accountName = process.env.AZURE_STORAGE_ACCOUNT_NAME;
if (!accountName) throw Error('Azure Storage accountName not found');
const blobServiceClient = new BlobServiceClient(
`https://${accountName}.blob.core.windows.net`,
new DefaultAzureCredential()
);