Notes
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.
Cet article explique comment créer une identité managée pour les applications Azure App Service et Azure Functions, et comment l’utiliser pour accéder à d’autres ressources.
Une identité managée à partir de l’ID Microsoft Entra permet à votre application d’accéder facilement à d’autres ressources protégées par Microsoft Entra, telles qu’Azure Key Vault. La plateforme Azure gère l’identité, ce qui élimine la nécessité de provisionner ou de changer des identifiants. Pour plus d’informations sur les identités managées dans Microsoft Entra ID, consultez Identités managées pour les ressources Azure.
Vous pouvez accorder deux types d’identités à votre application :
- Une identité affectée par le système est liée à l’application et est supprimée si l’application est supprimée. Une application ne peut avoir qu’une seule identité affectée par le système.
- Une identité attribuée par l’utilisateur est une ressource Azure autonome qui peut être assignée à votre application. Une application peut avoir plusieurs identités attribuées par l'utilisateur. Une identité affectée par l’utilisateur peut être affectée à plusieurs ressources Azure, telles que deux applications App Service.
La configuration de l’identité managée est spécifique à l’emplacement. Pour configurer une identité managée pour un emplacement de déploiement dans le portail, accédez d’abord à l’emplacement. Pour rechercher l’identité managée pour votre application web ou votre emplacement de déploiement dans votre tenant Microsoft Entra à partir du Portail Azure, recherchez-la directement à partir de la page de Présentation de votre tenant.
Remarque
Les identités managées ne sont pas disponibles pour les applications déployées dans Azure Arc.
Étant donné que les identités managées ne prennent pas en charge les scénarios inter-répertoires, elles ne fonctionnent pas comme prévu si votre application est migrée entre abonnements ou clients. Pour recréer les identités managées après un tel déplacement, consultez Les identités managées seront-elles recréés automatiquement si je déplace un abonnement vers un autre répertoire ?. Les ressources en aval doivent également disposer de stratégies d’accès mises à jour pour utiliser la nouvelle identité.
Prérequis
Pour effectuer les étapes décrites dans cet article, vous devez disposer d’un ensemble minimal d’autorisations sur vos ressources Azure. Les autorisations spécifiques dont vous avez besoin varient en fonction de votre scénario. Le tableau suivant récapitule les scénarios les plus courants :
Scénario | Autorisation requise | Exemples de rôles intégrés |
---|---|---|
Créer une identité créée par le système |
Microsoft.Web/sites/write sur l’application ou Microsoft.Web/sites/slots/write sur l’emplacement |
Contributeur de site web |
Créer une identité affectée par l’utilisateur |
Microsoft.ManagedIdentity/userAssignedIdentities/write sur le groupe de ressources dans lequel créer l’identité |
Contributeur d’identité managée |
Attribuer une identité attribuée par l'utilisateur à votre application |
Microsoft.Web/sites/write sur l’application, Microsoft.Web/sites/slots/write sur l’emplacement ou Microsoft.ManagedIdentity/userAssignedIdentities/*/assign/action sur l’identité |
Contributeur de site Web et Opérateur d'identité gérée |
Créer des attributions de rôles Azure |
Microsoft.Authorization/roleAssignments/write sur l’étendue de la ressource cible |
Administrateur du contrôle d'accès basé sur les rôles ou Administrateur d'accès utilisateur |
Ajouter une identité attribuée par le système
Pour activer une identité managée affectée par le système, suivez les instructions suivantes.
Dans le portail Azure, accédez à la page de votre application.
Dans le menu de gauche, sélectionnez Paramètres>Identité.
Dans l’onglet Attribuée par le système, définissez État sur Activé. Ensuite, sélectionnez Enregistrer.
Ajouter une identité attribuée par l’utilisateur
Pour créer une application avec une identité affectée par l’utilisateur, créez l’identité, puis ajoutez son identificateur de ressource à la configuration de votre application.
Créez une ressource d’identité managée attribuée par l’utilisateur en suivant ces instructions.
Dans le menu de gauche de la page de votre application, sélectionnez Identité des paramètres>.
Sélectionnez Utilisateur affecté, puis Sélectionnez Ajouter.
Recherchez l’identité que vous avez créée précédemment, sélectionnez-la, puis sélectionnez Ajouter.
Une fois ces étapes terminées, l’application redémarre.
Configurer la ressource cible
Vous devez configurer la ressource cible pour autoriser l'accès depuis votre application. Pour la plupart des services Azure, vous configurez la ressource cible en créant une attribution de rôle.
Certains services utilisent des mécanismes autres que le contrôle d’accès en fonction du rôle Azure. Pour comprendre comment configurer l’accès à l’aide d’une identité, reportez-vous à la documentation de chaque ressource cible. Pour en savoir plus sur les ressources qui prennent en charge les jetons Microsoft Entra, consultez Services Azure prenant en charge l’authentification Microsoft Entra.
Par exemple, si vous demandez un jeton pour accéder à un secret dans Azure Key Vault, vous devez également créer une attribution de rôle qui permet à l’identité managée d’utiliser des secrets dans le coffre cible. Sinon, Key Vault rejette vos appels même si vous utilisez un jeton valide. Il en va de même pour Azure SQL Database et d’autres services.
Important
Les services principaux pour les identités gérées conservent un cache par URI de ressource pendant environ 24 heures. Les modifications de l’appartenance à un rôle ou un groupe d’une identité managée peuvent prendre plusieurs heures avant de prendre effet. À l’heure actuelle, il n’est pas possible de forcer l’actualisation du jeton d’une identité managée avant son expiration. Si vous modifiez l’appartenance au groupe ou au rôle d’une identité managée pour ajouter ou supprimer des autorisations, vous devrez peut-être attendre plusieurs heures pour que la ressource Azure qui utilise l’identité dispose de l’accès approprié.
Pour obtenir des alternatives aux appartenances à des groupes ou à des rôles, consultez Limitation de l’utilisation d’identités managées pour l’autorisation.
Connexion aux services Azure dans le code de l’application
Avec son identité managée, une application peut obtenir des jetons pour les ressources Azure que Microsoft Entra ID aide à protéger, comme Azure SQL Database, Azure Key Vault et Stockage Azure. Ces jetons représentent l’application qui accède à la ressource, et non aucun utilisateur spécifique de l’application.
App Service et Azure Functions fournissent un point de terminaison REST accessible en interne pour la récupération des jetons. Vous pouvez accéder au point de terminaison REST à partir de l’application à l’aide d’une requête HTTP GET
standard. Vous pouvez implémenter la requête avec un client HTTP générique dans chaque langue.
Pour les langages .NET, JavaScript, Java et Python, la bibliothèque de client Azure Identity fournit une abstraction sur ce point de terminaison REST et simplifie l’expérience de développement. Pour se connecter à d’autres services Azure, il suffit d’ajouter un objet d’informations d’identification au client spécifique au service.
Une requête HTTP GET
brute utilise les deux variables d’environnement fournies et ressemble à l’exemple suivant :
GET /MSI/token?resource=https://vault.azure.net&api-version=2019-08-01 HTTP/1.1
Host: <ip-address-:-port-in-IDENTITY_ENDPOINT>
X-IDENTITY-HEADER: <value-of-IDENTITY_HEADER>
Un exemple de réponse peut ressembler à l’exemple suivant :
HTTP/1.1 200 OK
Content-Type: application/json
{
"access_token": "eyJ0eXAi…",
"expires_on": "1586984735",
"resource": "https://vault.azure.net",
"token_type": "Bearer",
"client_id": "00001111-aaaa-2222-bbbb-3333cccc4444"
}
Cette réponse est la même que la réponse pour la demande de jeton d’accès entre services de Microsoft Entra. Pour accéder à Key Vault, ajoutez la valeur de access_token
à une connexion cliente avec le coffre.
Pour plus d’informations sur le point de terminaison REST, consultez la référence du point de terminaison REST plus loin dans cet article.
Supprimer une identité
Lorsque vous supprimez une identité affectée par le système, elle est supprimée de Microsoft Entra ID. Les identités affectées par le système sont également automatiquement supprimées de Microsoft Entra ID lorsque vous supprimez la ressource d’application elle-même.
Dans le menu de gauche de la page de votre application, sélectionnez Identité des paramètres>.
Suivez les étapes en fonction du type d’identité :
- Pour une identité attribuée par le système : dans l’onglet Attribué par le système, définissez Statut sur Désactivé. Ensuite, sélectionnez Enregistrer.
- Pour une identité affectée par l’utilisateur : sélectionnez l’onglet Affecté par l’utilisateur , cochez la case pour l’identité, puis sélectionnez Supprimer. Sélectionnez Oui pour confirmer.
Remarque
Vous pouvez également définir un paramètre d’application qui désactive uniquement le service de jeton local : WEBSITE_DISABLE_MSI
. Toutefois, elle laisse l’identité en place. Les outils affichent toujours l’identité managée comme étant activée. Par conséquent, nous vous déconseillons d’utiliser ce paramètre.
Référence du point de terminaison REST
Une application avec une identité managée rend ce point de terminaison disponible en définissant deux variables d’environnement :
-
IDENTITY_ENDPOINT
: URL du service de jeton local. -
IDENTITY_HEADER
: en-tête qui peut aider à atténuer les attaques de falsification de requête côté serveur (SSRF). La plateforme fait pivoter la valeur.
La IDENTITY_ENDPOINT
variable est une URL locale à partir de laquelle votre application peut demander des jetons. Pour obtenir un jeton pour une ressource, effectuez une requête HTTP GET
à ce point de terminaison. Incluez les paramètres suivants :
Nom du paramètre Dans Descriptif resource
Requête URI de ressource Microsoft Entra de la ressource pour laquelle un jeton doit être obtenu. Cette ressource peut être l’un des services Azure qui prennent en charge l’authentification Microsoft Entra ou tout autre URI de ressource. api-version
Requête Version de l’API de jeton à utiliser. Utiliser 2019-08-01
.X-IDENTITY-HEADER
En-tête Valeur de la variable d’environnement IDENTITY_HEADER
. Cet en-tête est utilisé pour atténuer les attaques SSRF.client_id
Requête (Facultatif) ID client de l’identité affectée par l’utilisateur à utiliser. Il ne peut pas être utilisé sur une demande qui inclut principal_id
,mi_res_id
ouobject_id
. Si tous les paramètres d’ID (client_id
,principal_id
,object_id
etmi_res_id
) sont omis, l’identité affectée par le système est utilisée.principal_id
Requête (Facultatif) ID du principal de service de l’identité affectée par l’utilisateur à utiliser. Le object_id
paramètre est un alias qui peut être utilisé à la place. Il ne peut pas être utilisé sur une demande qui inclutclient_id
,mi_res_id
ouobject_id
. Si tous les paramètres d’ID (client_id
,principal_id
,object_id
etmi_res_id
) sont omis, l’identité affectée par le système est utilisée.mi_res_id
Requête (Facultatif) L’ID de la ressource Azure de l’identité affectée par l’utilisateur à utiliser. Il ne peut pas être utilisé sur une demande qui inclut principal_id
,client_id
ouobject_id
. Si tous les paramètres d’ID (client_id
,principal_id
,object_id
etmi_res_id
) sont omis, l’identité affectée par le système est utilisée.
Important
Si vous essayez d’obtenir des jetons pour des identités assignées par l’utilisateur, incluez l’une des propriétés facultatives. Sinon, le service de jeton tente d’obtenir un jeton pour une identité attribuée par le système, qui peut exister ou non.
Contenu connexe
Tenez compte des didacticiels suivants :
- Se connecter à SQL Database à partir d’App Service .NET sans secrets à l’aide d’une identité managée
- Accéder aux services Azure à partir d’une application web .NET
- Accéder à Microsoft Graph à partir d’une application .NET sécurisée en tant qu’application
- Sécuriser la connexion Cognitive Service à partir de .NET App Service à l’aide de Key Vault