Identités managées dans Azure Container Apps

Une identité managée de Microsoft Entra ID permet à votre application conteneur d’accéder à d’autres ressources protégées par Microsoft Entra. Pour plus d’informations sur les identités managées dans Microsoft Entra ID, consultez Identités managées pour les ressources Azure.

Deux types d’identité peuvent être accordés à votre application de conteneur :

  • Une identité attribuée par le système est liée à votre application de conteneur et est supprimée si votre application de conteneur est supprimée. Une application ne peut avoir qu’une seule identité attribuée par le système.
  • Une identité attribuée par l’utilisateur est une ressource Azure autonome qui peut être affectée à une votre application de conteneur et d’autres ressources. Une application de conteneur peut avoir plusieurs identités attribuées par l’utilisateur. L’identité existe jusqu’à ce que vous la supprimiez.

Pourquoi utiliser une identité managée ?

Vous pouvez utiliser une identité managée dans une application conteneur en cours d’exécution pour vous authentifier auprès de n’importe quel service prenant en charge l’authentification Microsoft Entra.

Avec des identités managées :

  • Votre application se connecte aux ressources avec l’identité managée. Vous n’avez pas besoin de gérer les informations d’identification dans votre application de conteneur.
  • Vous pouvez utiliser le contrôle d’accès en fonction du rôle pour accorder des autorisations spécifiques à une identité managée.
  • Les identités attribuées par le système sont automatiquement créées et gérées. Elles sont supprimées lorsque votre application de conteneur est supprimée.
  • Vous pouvez ajouter et supprimer des identités attribuées par l’utilisateur et les affecter à plusieurs ressources. Elles sont indépendantes du cycle de vie de votre application de conteneur.
  • Vous pouvez utiliser l’identité managée pour vous authentifier auprès d’un Azure Container Registry privé sans nom d’utilisateur et mot de passe pour extraire des conteneurs pour votre application conteneur.
  • Vous pouvez utiliser l’identité managée pour créer des connexions pour les applications prenant en charge Dapr via des composants Dapr

Cas d’utilisation courants

Les identités attribuées par le système conviennent parfaitement aux charges de travail qui :

  • sont contenues dans une ressource unique
  • nécessitent des identités indépendantes

Les identités attribuées par l’utilisateur sont idéales pour les charges de travail qui :

  • s’exécutent sur plusieurs ressources et peuvent partager une même identité
  • nécessitent une pré-autorisation pour accéder à une ressource sécurisée

Limites

L’utilisation d’identités managées dans les règles de mise à l’échelle n’est pas prise en charge. Vous devez toujours inclure la chaîne de connexion ou la clé dans le secretRef de la règle de mise à l’échelle.

Les conteneurs Init ne peuvent pas accéder aux identités managées.

Configurer des identités managées

Vous pouvez configurer vos identités managées via :

  • le portail Azure
  • Interface de ligne de commande Azure
  • votre modèle Azure Resource Manager (ARM)

Lorsqu’une identité managée est ajoutée, supprimée ou modifiée sur une application de conteneur en cours d’exécution, l’application ne redémarre pas automatiquement et une nouvelle révision n’est pas créée.

Remarque

Vous devez créer une nouvelle révision lors de l’ajout d’une identité managée à une application de conteneur déployée avant le 11 avril 2022.

Ajouter une identité affectée par le système

  1. Dans le volet de navigation gauche de la page de votre application conteneur, faites défiler la page vers le bas jusqu’au groupe Paramètres.

  2. Sélectionnez Identité.

  3. Dans l’onglet Attribuée par le système, définissez État sur Activé. Sélectionnez Enregistrer.

Screenshot of system-assigned identities.

Ajouter une identité attribuée par l’utilisateur

La configuration d’une application de conteneur avec une identité attribuée par l’utilisateur nécessite d’abord de créer l’identité, puis d’ajouter son identificateur de ressource à la configuration de votre application de conteneur. Vous pouvez créer des identités attribuées par l’utilisateur via le Portail Azure ou l’interface Azure CLI. Pour plus d’informations sur la création et la gestion des identités attribuées par l’utilisateur, consultez Gérer les identités managées attribuées par l’utilisateur.

Tout d’abord, vous devrez créer une ressource d’identité attribuée par l’utilisateur.

  1. Créez une ressource d’identité managée affectée par l’utilisateur en fonction des étapes décrites dans Gérer les identités managées affectées par l’utilisateur.

  2. Dans le volet de navigation gauche de la page de votre application conteneur, faites défiler la page vers le bas jusqu’au groupe Paramètres.

  3. Sélectionnez Identité.

  4. Dans l’onglet Affecté(e) par l’utilisateur, sélectionnez Ajouter.

  5. Recherchez l’identité que vous avez créée précédemment et sélectionnez-la. Sélectionnez Ajouter.

Screenshot of user-assigned identities.

Configurer une ressource cible

Pour certaines ressources, vous devez configurer les attributions de rôles pour l’identité managée de votre application afin d’en accorder l’accès. Dans le cas contraire, les appels de votre application vers des services, tels qu’Azure Key Vault et Azure SQL Database, seront rejetés même si vous utilisez un jeton valide pour cette identité. Pour plus d’informations sur le contrôle d’accès en fonction du rôle Azure (Azure RBAC), consultez Qu’est-ce que le contrôle d’accès en fonction du rôle Azure (Azure RBAC) ?. 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.

Important

Les services principaux pour les identités gérées conservent un cache par URI de ressource pendant environ 24 heures. Si vous mettez à jour la stratégie d’accès d’une ressource cible particulière et que vous récupérez immédiatement un jeton pour cette ressource, vous pouvez continuer à obtenir un jeton mis en cache avec des autorisations obsolètes jusqu’à ce que ce jeton expire. Il n’existe actuellement aucun moyen de forcer l’actualisation d’un jeton.

Connexion aux services Azure dans le code de l’application

Avec des identités managées, une application peut obtenir des jetons pour accéder aux ressources Azure qui utilisent Microsoft Entra ID, comme Azure SQL Database, Azure Key Vault et Stockage Azure. Ces jetons représentent l’application qui accède à la ressource, pas un utilisateur spécifique de l’application.

Container Apps fournit un point de terminaison REST accessible en interne pour récupérer des jetons. Le point de terminaison REST est accessible depuis l’application avec une instruction HTTP GET standard, qui peut être implémentée avec un client HTTP générique dans chaque langage. Pour les langages .NET, JavaScript, Java et Python, la bibliothèque de client Azure Identity fournit une abstraction sur ce point de terminaison REST. Pour se connecter à d’autres services Azure, il suffit d’ajouter un objet d’informations d’identification au client spécifique au service.

Remarque

Lors de l’utilisation de la bibliothèque de client Azure Identity, l’ID client d’identité managée affecté par l’utilisateur doit être spécifié.

Remarque

Lorsque vous vous connectez à des sources de données Azure SQL avec Entity Framework Core, pensez à utiliser Microsoft.Data.SqlClient, qui fournit des chaînes de connexion spéciales pour la connectivité de l’identité managée.

Pour les applications .NET, la façon la plus simple d’utiliser une identité managée consiste à recourir à la bibliothèque de client Azure Identity pour .NET. Pour plus d’informations, consultez les titres de documentation respectifs de la bibliothèque de client :

Les exemples liés utilisent DefaultAzureCredential. C’est utile pour la majorité des scénarios, car le même modèle fonctionne dans Azure (avec des identités managées) et sur votre ordinateur local (sans identités managées).

Afficher les identités managées

Vous pouvez afficher les identités managées attribuées par le système et attribuées par l’utilisateur à l’aide de la commande Azure CLI suivante. La sortie affiche le type d’identité managée, les ID de locataire et les ID principaux de toutes les identités managées affectées à votre application de conteneur.

az containerapp identity show --name <APP_NAME> --resource-group <GROUP_NAME>

Supprimer une identité managée

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 l’ID Microsoft Entra lorsque vous supprimez la ressource d’application conteneur elle-même. La suppression des identités managées affectées par l’utilisateur de votre application conteneur ne les supprime pas de l’ID Microsoft Entra.

  1. Dans le volet de navigation gauche de la page de votre application, faites défiler la page vers le bas jusqu’au groupe Paramètres.

  2. Sélectionnez Identité. Suivez ensuite les étapes en fonction du type d’identité :

    • Identité affectée par le système : Dans l’onglet Affectée par le système, basculez État sur Désactivé. Sélectionnez Enregistrer.
    • Identité affectée par l’utilisateur : Sélectionnez l’onglet Affectée par l’utilisateur, cochez la case de l’identité, puis sélectionnez Supprimer. Sélectionnez Oui pour confirmer.

Étapes suivantes