Remarque
L’accès à cette page requiert une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page requiert une autorisation. Vous pouvez essayer de modifier des répertoires.
L’approche recommandée pour authentifier une application hébergée Azure sur d’autres ressources Azure consiste à utiliser une identité managed. Cette approche est prise en charge pour la plupart des services Azure, y compris les applications hébergées sur Azure App Service, Azure Container Apps et Machines virtuelles Azure. Découvrez-en davantage sur les différentes techniques et approches d’authentification sur la page vue d’ensemble de l’authentification . Dans les sections à venir, vous allez apprendre :
- Concepts essentiels de l’identité managée
- Créer une identité managée attribuée par l'utilisateur pour votre application
- Comment attribuer des rôles à l'identité managée attribuée par l'utilisateur
- Comment s’authentifier à l’aide de l’identité managée affectée par l’utilisateur à partir de votre code d’application
Concepts essentiels de l’identité managée
Une identité managée permet à votre application de se connecter en toute sécurité à d’autres ressources Azure sans utiliser de clés secrètes ou d’autres secrets d’application. En interne, Azure effectue le suivi de l'identité et des ressources auxquelles il est autorisé à se connecter. Azure utilise ces informations pour obtenir automatiquement des jetons Microsoft Entra pour que l’application lui permette de se connecter à d’autres ressources Azure.
Il existe deux types d’identités managées à prendre en compte lors de la configuration de votre application hébergée :
- Les identités managées affectées par le système sont activées directement sur une ressource Azure et sont liées à son cycle de vie. Lorsque la ressource est supprimée, Azure supprime automatiquement l’identité pour vous. Les identités affectées par le système fournissent une approche minimaliste de l’utilisation d’identités managées.
- Les identités managées assignées par l'utilisateur sont créées en tant que ressources Azure autonomes et offrent une plus grande flexibilité et des fonctionnalités. Elles sont idéales pour les solutions impliquant plusieurs ressources Azure qui doivent partager les mêmes identités et autorisations. Par exemple, si plusieurs machines virtuelles doivent accéder au même ensemble de ressources Azure, une identité managée affectée par l’utilisateur fournit une réutilisation et une gestion optimisée.
Conseil / Astuce
En savoir plus sur la sélection et la gestion des identités managées affectées par le système et affectées par l’utilisateur dans l’article recommandations sur les meilleures pratiques d’identité managée .
Les sections suivantes décrivent les étapes permettant d’activer et d’utiliser une identité managée affectée par l’utilisateur pour une application hébergée Azure. Si vous devez utiliser une identité managée affectée par le système, consultez l’article sur les identités managées affectées par le système pour plus d’informations.
Créer une identité managée attribuée par l’utilisateur
Les identités managées affectées par l’utilisateur sont créées en tant que ressources autonomes dans votre abonnement Azure à l’aide du portail Azure ou du Azure CLI. Azure CLI commandes peuvent être exécutées dans le Azure Cloud Shell ou sur une station de travail avec le Azure CLI installé.
Dans le portail Azure, entrez Identités managées dans la barre de recherche principale et sélectionnez le résultat correspondant sous la section Services.
Dans la page Identités managées , sélectionnez + Créer.
Capture d’écran montrant la page pour gérer les identités gérées assignées à l'utilisateur.
Dans la page Créer une identité managée affectée par l’utilisateur , sélectionnez un abonnement, un groupe de ressources et une région pour l’identité managée affectée par l’utilisateur, puis fournissez un nom.
Sélectionnez Vérifier + créer pour passer en revue et valider vos entrées.
Capture d’écran montrant le formulaire pour créer une identité gérée assignée par l'utilisateur.
Sélectionnez Créer pour créer l’identité managée affectée par l’utilisateur.
Une fois l’identité créée, sélectionnez Accéder à la ressource.
Dans la page Vue d’ensemble de la nouvelle identité, copiez la valeur de l’ID client à utiliser ultérieurement lorsque vous configurez le code de l’application.
Affecter l’identité managée à votre application
Une identité managée affectée par l’utilisateur peut être associée à une ou plusieurs ressources Azure. Toutes les ressources qui utilisent cette identité obtiennent les autorisations appliquées via les rôles de l’identité.
Dans le portail Azure, accédez à la ressource qui héberge le code de votre application, telle qu’une instance Azure App Service ou Azure Container Apps.
Dans la page Vue d’ensemble de la ressource, déroulez les Paramètres et sélectionnez Identité dans le volet de navigation.
Dans la page Identité, basculez vers l’onglet Utilisateur affecté.
Sélectionnez + Ajouter pour ouvrir le panneau d'ajout d'une identité managée assignée à l'utilisateur.
Dans le panneau Ajouter une identité managée assignée par l'utilisateur, utilisez la liste déroulante des abonnements pour filtrer les résultats de recherche de vos identités. Utilisez la zone de recherche Utilisateur affecté aux identités managées pour rechercher l’identité managée affectée par l’utilisateur que vous avez activée pour la ressource Azure hébergeant votre application.
Sélectionnez l’identité et choisissez Ajouter en bas du panneau pour continuer.
Capture d’écran montrant comment associer une identité managée affectée par l’utilisateur à une application.
Attribuer des rôles à l’identité managée
Ensuite, déterminez les rôles dont votre application a besoin et attribuez ces rôles à l’identité managée. Vous pouvez attribuer des rôles à une identité managée dans les étendues suivantes :
- Ressource : les rôles attribués s’appliquent uniquement à cette ressource spécifique.
- Groupe de ressources : les rôles attribués s’appliquent à toutes les ressources contenues dans le groupe de ressources.
- Abonnement : les rôles attribués s’appliquent à toutes les ressources contenues dans l’abonnement.
L’exemple suivant montre comment attribuer des rôles à l’étendue du groupe de ressources, car de nombreuses applications gèrent toutes leurs ressources Azure associées à l’aide d’un seul groupe de ressources.
Accédez à la page Vue d’ensemble du groupe de ressources qui contient l’application avec l’identité managée affectée par l’utilisateur.
Sélectionnez Contrôle d’accès (IAM) dans le volet de navigation gauche.
Dans la page Contrôle d’accès (IAM), sélectionnez + Ajouter dans le menu supérieur, puis choisissez Ajouter une attribution de rôle pour accéder à la page Ajouter une attribution de rôle .
Capture d’écran montrant comment accéder à la page d’attribution de rôle d’identité.
La page Ajouter une attribution de rôle présente un flux de travail à onglets et à plusieurs étapes pour attribuer des rôles à des identités. Sous l’onglet Rôle initial, utilisez la zone de recherche en haut pour localiser le rôle que vous souhaitez affecter à l’identité.
Sélectionnez le rôle dans les résultats, puis choisissez Suivant pour accéder à l’onglet Membres .
Pour l’option Attribuer l’accès à , sélectionnez Identité managée.
Pour l’option Membres , choisissez + Sélectionner des membres pour ouvrir le panneau Sélectionner des identités managées .
Dans le panneau Sélectionner des identités managées , utilisez les listes déroulantes Abonnement et Identité managée pour filtrer les résultats de recherche de vos identités. Utilisez la zone de recherche Select pour rechercher l’identité managée affectée par l’utilisateur que vous avez activée pour la ressource Azure hébergeant votre application.
Capture d’écran montrant le processus d’attribution d’identité managée.
Sélectionnez l’identité, puis sélectionnez Sélectionner en bas du panneau pour continuer.
Sélectionnez Vérifier + affecter en bas de la page.
Sous l’onglet Révision + affectation finale, sélectionnez Vérifier + affecter pour terminer le flux de travail.
S’authentifier auprès de Azure services à partir de votre application
La bibliothèque d'identités Azure fournit divers identifiants - des implémentations adaptées à la prise en charge de différents scénarios et des flux d’authentification de Microsoft Entra. Étant donné que l’identité managée n’est pas disponible lors de l’exécution locale, les étapes à suivre illustrent les informations d’identification à utiliser dans quel scénario :
- Environnement de développement local : pendant le développement local uniquement, utilisez une classe appelée DefaultAzureCredential pour une chaîne de certificats d'identification préconfigurée et spécifique.
DefaultAzureCredentialdétecte les informations d’identification de l’utilisateur à partir de vos outils ou IDE locaux, tels que le Azure CLI ou Visual Studio Code. Il offre également une flexibilité et une commodité pour les nouvelles tentatives, les temps d’attente pour les réponses et la prise en charge de plusieurs options d’authentification. Consultez l’article Authenticate pour Azure services pendant le développement local pour en savoir plus. - applications hébergées Azure : lorsque votre application s’exécute dans Azure, utilisez
ManagedIdentityCredentialpour découvrir en toute sécurité l’identité managée configurée pour votre application. La spécification de ce type exact d’informations d’identification empêche les autres informations d’identification disponibles d’être récupérées de manière inattendue.
Implémenter le code
Dans un projet JavaScript, ajoutez le package @azure/identity . Dans un terminal de votre choix, accédez au répertoire du projet d’application et exécutez les commandes suivantes :
npm install @azure/identity
Azure services sont accessibles à l’aide de classes client spécialisées à partir des différentes bibliothèques clientes Kit de développement logiciel (SDK) Azure. Dans , effectuez les étapes suivantes pour configurer l’authentification basée sur les jetons :
- Importez le package.
- Transmettez une instance appropriée au client :
- Utilisez quand votre application s’exécute localement.
- Utilisez
ManagedIdentityCredentiallorsque votre application s’exécute dans Azure et configurez l’ID client, l’ID de ressource ou l’ID d’objet.
- ID du client
- ID de ressource
- ID d’objet
L’ID client est utilisé pour identifier une identité managée lors de la configuration d’applications ou de services qui doivent s’authentifier à l’aide de cette identité.
Récupérez l’ID client affecté à une identité managée affectée par l’utilisateur à l’aide de la commande suivante :
az identity show \ --resource-group <resource-group-name> \ --name <identity-name> \ --query 'clientId'Configurez avec l’ID client :
import { BlobServiceClient } from '@azure/storage-blob'; import { ManagedIdentityCredential, DefaultAzureCredential } from '@azure/identity'; console.log(process.env); function createBlobServiceClient() { const accountName = process.env.AZURE_STORAGE_ACCOUNT_NAME; if (!accountName) throw Error('Azure Storage accountName not found'); const url = `https://${accountName}.blob.core.windows.net`; if (process.env.NODE_ENV === "production") { const clientId = process.env.AZURE_CLIENT_ID; if (!clientId) throw Error('AZURE_CLIENT_ID not found for Managed Identity'); return new BlobServiceClient(url, new ManagedIdentityCredential(clientId)); } else { return new BlobServiceClient(url, new DefaultAzureCredential()); } } async function main() { try { const blobServiceClient = createBlobServiceClient(); const containerClient = blobServiceClient.getContainerClient(process.env.AZURE_STORAGE_CONTAINER_NAME); // do something with client const properties = await containerClient.getProperties(); console.log(properties); } catch (err) { console.error("Error retrieving container properties:", err.message); throw err; } } main().catch((err) => { console.error("Error running sample:", err.message); process.exit(1); });
Implémenter le code
Dans un projet TypeScript, ajoutez le package @azure/identity . Dans un terminal de votre choix, accédez au répertoire du projet d’application et exécutez les commandes suivantes :
npm install typescript @azure/identity @types/node
Azure services sont accessibles à l’aide de classes client spécialisées à partir des différentes bibliothèques clientes Kit de développement logiciel (SDK) Azure. Dans , effectuez les étapes suivantes pour configurer l’authentification basée sur les jetons :
- Importez le package.
- Transmettez une instance appropriée au client :
- Utiliser lorsque votre application s’exécute localement
- Utilisez
ManagedIdentityCredentiallorsque votre application s’exécute dans Azure et configurez l’ID client, l’ID de ressource ou l’ID d’objet.
- ID du client
- ID de ressource
- ID d’objet
L’ID client est utilisé pour identifier une identité managée lors de la configuration d’applications ou de services qui doivent s’authentifier à l’aide de cette identité.
Récupérez l’ID client affecté à une identité managée affectée par l’utilisateur à l’aide de la commande suivante :
az identity show \ --resource-group <resource-group-name> \ --name <identity-name> \ --query 'clientId'Configurez avec l’ID client :
import { BlobServiceClient } from '@azure/storage-blob'; import { ManagedIdentityCredential, DefaultAzureCredential } from '@azure/identity'; function createBlobServiceClient(): BlobServiceClient { const accountName = process.env.AZURE_STORAGE_ACCOUNT_NAME; if (!accountName) throw Error('Azure Storage accountName not found'); const url = `https://${accountName}.blob.core.windows.net`; if (process.env.NODE_ENV === "production") { const clientId = process.env.AZURE_CLIENT_ID; if (!clientId) throw Error('AZURE_CLIENT_ID not found for Managed Identity'); return new BlobServiceClient(url, new ManagedIdentityCredential(clientId)); } else { return new BlobServiceClient(url, new DefaultAzureCredential()); } } async function main(): Promise<void> { try { const blobServiceClient = createBlobServiceClient(); const containerClient = blobServiceClient.getContainerClient(process.env.AZURE_STORAGE_CONTAINER_NAME!); const properties = await containerClient.getProperties(); console.log(properties); } catch (err: any) { console.error("Error retrieving container properties:", err.message); throw err; } } main().catch((err: Error) => { console.error("Error running sample:", err.message); process.exit(1); });
Le code précédent se comporte différemment en fonction de l’environnement dans lequel il est en cours d’exécution :
- Sur votre station de travail de développement locale,
DefaultAzureCredentialrecherche dans les variables d’environnement d’un principal de service d’application ou dans les outils de développement installés localement, tels que Visual Studio Code, pour un ensemble d’informations d’identification de développeur. - Lorsqu’elle est déployée sur Azure,
ManagedIdentityCredentialdécouvre automatiquement vos configurations d’identité managée pour s’authentifier auprès d’autres services.