Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les applications hébergées en dehors d’Azure, telles que locales ou dans un centre de données tiers, doivent utiliser un principal de service d’application via l’ID Microsoft Entra pour s’authentifier auprès des services Azure. Dans les sections à venir, vous allez apprendre :
- Comment inscrire une application auprès de Microsoft Entra pour créer un principal de service
- Comment attribuer des rôles aux permissions d'étendue ?
- Comment s’authentifier à l’aide d’un principal de service à partir de votre code d’application
L’utilisation de principaux de service d’application dédié vous permet d’adhérer au principe du privilège minimum lors de l’accès aux ressources Azure. Les autorisations sont limitées aux exigences spécifiques de l’application pendant le développement, ce qui empêche l’accès accidentel aux ressources Azure destinées à d’autres applications ou services. Cette approche permet également d’éviter les problèmes lorsque l’application est déplacée en production en s’assurant qu’elle n’est pas sur-privilégiée dans l’environnement de développement.
Une inscription d’application différente doit être créée pour chaque environnement dans lequel l’application est hébergée. Cela permet de configurer des autorisations de ressources spécifiques à l’environnement pour chaque principal de service et garantit qu’une application déployée dans un environnement ne communique pas avec les ressources Azure dans un autre environnement.
Inscrire l’application dans Azure
Les objets principaux du service d’application sont créés via une inscription d’application dans Azure à l’aide du portail Azure ou d’Azure CLI.
Dans le portail Azure, utilisez la barre de recherche pour accéder à la page Inscriptions d’applications.
Dans la page Inscriptions d’applications, sélectionnez + Nouvelle inscription.
Dans la page Inscrire une application :
- Pour le champ Nom, entrez une valeur descriptive qui inclut le nom de l’application et l’environnement cible.
- Pour Types de comptes pris en charge, sélectionnez Comptes qui se trouvent uniquement dans cet annuaire organisationnel (géré par le client uniquement - locataire unique), ou l’option qui correspond le mieux à vos besoins.
Sélectionnez Inscrire pour inscrire votre application et créer le principal du service.
Dans la page d'inscription de l'application , copiez l'ID d'application (client) et l'ID de répertoire (locataire) et collez-les dans un emplacement temporaire pour une utilisation ultérieure dans les configurations de code de votre application.
Sélectionnez Ajouter un certificat ou un secret pour configurer des informations d’identification pour votre application.
Sur la page Certificats & secrets, sélectionnez + Nouvelle clé secrète client.
Dans le panneau volant Ajouter un secret client qui s’ouvre :
- Pour la description, entrez la valeur
Current. - Pour la valeur Expires, conservez la valeur recommandée par défaut .
180 days - Sélectionnez Ajouter pour ajouter le secret.
- Pour la description, entrez la valeur
Sur la page Certificats & secrets, copiez la propriété Valeur du secret client à utiliser dans une étape ultérieure.
Note
La valeur de la clé secrète client n’est affichée qu’une fois après la création de l'inscription de l'application. Vous pouvez ajouter d’autres secrets client sans invalider ce secret client, mais il n’existe aucun moyen d’afficher cette valeur à nouveau.
Attribuer des rôles au principal du service d’application
Ensuite, déterminez les rôles (autorisations) dont votre application a besoin sur les ressources et attribuez ces rôles au principal de service que vous avez créé. Les rôles peuvent être attribués 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.
Dans le portail Azure, accédez à la page Vue d’ensemble du groupe de ressources qui contient votre application.
Dans le menu de navigation de gauche, sélectionnez Contrôle d’accès (IAM) .
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.
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.
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 principal de service 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 .
Sous l’onglet Révision + affectation , sélectionnez Vérifier + affecter en bas de la page.
Définir les variables d’environnement d’application
À l’exécution, certaines informations d’identification de la bibliothèque d’identités Azure, telles que DefaultAzureCredential, EnvironmentCredential et ClientSecretCredential, recherchent des informations sur le principal du service selon la convention dans les variables d’environnement. Il existe plusieurs façons de configurer des variables d’environnement lors de l’utilisation de JavaScript, en fonction de vos outils et de votre environnement.
Quelle que soit l’approche choisie, configurez les variables d’environnement suivantes pour un principal de service :
-
AZURE_CLIENT_ID: utilisé pour identifier l’application inscrite dans Azure. -
AZURE_TENANT_ID: Identifiant du client Microsoft Entra. -
AZURE_CLIENT_SECRET: informations d’identification secrètes générées pour l’application.
Dans Visual Studio Code, les variables d’environnement peuvent être définies dans le fichier launch.json de votre projet. Ces valeurs sont extraites automatiquement au démarrage de l’application. Toutefois, ces configurations ne se déplacent pas avec votre application pendant le déploiement. Vous devez donc configurer des variables d’environnement sur votre environnement d’hébergement cible.
"configurations": [
{
"env": {
"NODE_ENV": "development",
"AZURE_CLIENT_ID": "<your-client-id>",
"AZURE_TENANT_ID":"<your-tenant-id>",
"AZURE_CLIENT_SECRET": "<your-client-secret>"
}
}
S’authentifier auprès des services Azure à partir de votre application
La bibliothèque d’identités Azure fournit diverses informations d’identification : implémentations de TokenCredential adaptées à la prise en charge de différents scénarios et flux d’authentification Microsoft Entra. Les étapes suivantes montrent comment utiliser ClientSecretCredential lorsqu'on utilise des principaux de service localement et en production.
Implémenter le code
Ajoutez le package @azure/identity dans le projet Node.js :
npm install @azure/identity
Les services Azure sont accessibles à l’aide de classes clientes spécialisées à partir des différentes bibliothèques clientes du Kit de développement logiciel (SDK) Azure. Pour tout code JavaScript qui crée un objet client azure SDK dans votre application, procédez comme suit :
- Importez la classe
ClientSecretCredentialdu module@azure/identity. - Créez un
ClientSecretCredentialobjet avec letenantId,clientIdetclientSecret. - Transmettez l’instance
ClientSecretCredentialau constructeur d’objet client du Kit de développement logiciel (SDK) Azure.
Un exemple de cette approche est illustré dans le segment de code suivant :
import { BlobServiceClient } from '@azure/storage-blob';
import { ClientSecretCredential } from '@azure/identity';
// Authentication
const tenantId = process.env.AZURE_TENANT_ID;
const clientId = process.env.AZURE_CLIENT_ID;
const clientSecret = process.env.AZURE_CLIENT_SECRET;
// Azure Storage account name
const accountName = process.env.AZURE_STORAGE_ACCOUNT_NAME;
if (!tenantId || !clientId || !clientSecret || !accountName) {
throw Error('Required environment variables not found');
}
const credential = new ClientSecretCredential(tenantId, clientId, clientSecret);
const blobServiceClient = new BlobServiceClient(
`https://${accountName}.blob.core.windows.net`,
credential
);
Une autre approche consiste à transmettre l’objet ClientSecretCredential directement au constructeur client du KIT de développement logiciel (SDK) Azure :
const blobServiceClient = new BlobServiceClient(
`https://${accountName}.blob.core.windows.net`,
new ClientSecretCredential(tenantId, clientId, clientSecret)
);