Partager via


Authentifier les applications Java hébergées sur Azure aux ressources Azure à l’aide d’une identité managée attribuée par le système

L’approche recommandée pour authentifier une application hébergée Azure sur d’autres ressources Azure consiste à utiliser une identité managed. La plupart des services Azure prennent en charge cette approche, y compris les applications hébergées sur Azure App Service, Azure Container Apps et Azure Virtual Machines. Pour plus d’informations, consultez Azure services et types de ressources prenant en charge les identités managées. Pour plus d’informations sur les différentes techniques et approches d’authentification, consultez Authenticate Java applications pour Azure services à l’aide de la bibliothèque d’identités Azure.

Dans les sections suivantes, vous allez apprendre :

  • Concepts essentiels de l’identité managée.
  • Comment créer une identité managée affectée par le système pour votre application.
  • Comment attribuer des rôles à l’identité managée affectée par le système.
  • Comment s’authentifier à l’aide de l’identité managée affectée par le système à partir du code de votre 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.
  • Identités managées attribuées par l'utilisateur sont créées en tant qu'entités autonomes d'Azure 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 le système pour une application hébergée Azure. Si vous devez utiliser une identité managée attribuée par l'utilisateur, consultez authentifier les applications Java hébergées sur Azure aux ressources Azure en utilisant une identité managée attribuée par l'utilisateur.

Activer une identité managée affectée par le système sur la ressource d’hébergement Azure

Pour commencer à utiliser une identité managée affectée par le système avec votre application, activez l’identité sur la ressource Azure hébergeant votre application, telle qu’une Azure App Service, une Azure Container Apps ou une instance Azure Virtual Machines.

Vous pouvez activer une identité managée affectée par le système pour une ressource Azure à l’aide du portail Azure ou du Azure CLI.

  1. 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.

  2. Dans la page Vue d'ensemble de la ressource, développez Paramètres et sélectionnez Identité dans la navigation.

  3. Dans la page Identité , basculez le curseur Étatsur Activé.

  4. Sélectionnez Enregistrer pour appliquer vos modifications.

    Capture d’écran montrant comment activer une identité managée affectée par le système sur une application conteneur.

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.

  1. Accédez à la page Vue d’ensemble du groupe de ressources qui contient l’application avec l’identité managée affectée par le système.

  2. Sélectionnez Contrôle d'accès (IAM) dans le menu de gauche.

  3. 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é.

  4. La page d'Ajouter une attribution de rôle présente un flux de travail à onglets et à plusieurs étapes pour assigner 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 attribuer à l'identité.

  5. Sélectionnez le rôle dans les résultats, puis choisissez Suivant pour accéder à l’onglet Membres.

  6. Pour l'option Attribuer l'accès à, sélectionnez Identité gérée.

  7. Pour l'option Membres, choisissez + Sélectionner les membres pour ouvrir le panneau Sélectionner les identités gérées.

  8. Dans le panneau Sélectionner les identités gérées, utilisez les menus déroulants Abonnement et Identité gérée pour filtrer les résultats de la recherche de vos identités. Utilisez la zone de recherche Select pour rechercher l’identité système 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.

  9. Sélectionnez l’identité et choisissez Sélectionnez en bas du panneau pour continuer.

  10. Sélectionnez Réviser + assigner en bas de la page.

  11. Sous l’onglet final Révision + affecter, sélectionnez Révision + affecter pour compléter le processus de travail.

S’authentifier auprès de Azure services à partir de votre application

La bibliothèque d’identités Azure fournit différentes informations d’identification en tant qu’implémentations de TokenCredential. Chaque implémentation prend en charge différents scénarios et Microsoft Entra flux d’authentification. Pour les applications hébergées Azure, utilisez DefaultAzureCredential, qui détecte automatiquement les informations d’identification d’identité managée lors de l’exécution dans Azure.

Implémenter le code

Ajoutez la azure-identity dépendance à votre pom.xml fichier :

<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-identity</artifactId>
</dependency>

Vous accédez aux services Azure à l’aide de classes client spécialisées à partir des bibliothèques clientes Azure SDK. Les exemples de code suivants vous montrent comment configurer les informations d'identification pour l'authentification des identités managées attribuées par le système.

Utilisez DefaultAzureCredential

Utilisez DefaultAzureCredential pour les applications hébergées par Azure, car elle détecte automatiquement les informations d’identification d’identité managée lors de l’exécution dans Azure. Pour les identités managées affectées par le système, aucune configuration supplémentaire n’est requise.

import com.azure.identity.DefaultAzureCredential;
import com.azure.identity.DefaultAzureCredentialBuilder;
import com.azure.security.keyvault.secrets.SecretClient;
import com.azure.security.keyvault.secrets.SecretClientBuilder;

// DefaultAzureCredential automatically discovers managed identity when running in Azure
DefaultAzureCredential credential = new DefaultAzureCredentialBuilder().build();

// Azure SDK client builders accept the credential as a parameter
SecretClient client = new SecretClientBuilder()
    .vaultUrl("https://<your-key-vault-name>.vault.azure.net")
    .credential(credential)
    .buildClient();

Utiliser ManagedIdentityCredential

Si vous souhaitez utiliser explicitement les identifiants de l'identité managée et éviter la recherche dans la chaîne d’identités dans DefaultAzureCredential, utilisez ManagedIdentityCredential directement. Pour les identités managées affectées par le système, ne spécifiez pas d’ID client :

import com.azure.identity.ManagedIdentityCredential;
import com.azure.identity.ManagedIdentityCredentialBuilder;
import com.azure.security.keyvault.secrets.SecretClient;
import com.azure.security.keyvault.secrets.SecretClientBuilder;

// For system-assigned managed identity, don't specify a client ID
ManagedIdentityCredential credential = new ManagedIdentityCredentialBuilder().build();

// Azure SDK client builders accept the credential as a parameter
SecretClient client = new SecretClientBuilder()
    .vaultUrl("https://<your-key-vault-name>.vault.azure.net")
    .credential(credential)
    .buildClient();

Prochaines étapes

Cet article a abordé l’authentification à l’aide d’une identité managée affectée par le système. Cette forme d’authentification est l’une des différentes façons dont vous pouvez vous authentifier dans le Azure SDK pour Java. Les articles suivants décrivent d’autres façons :

Si vous rencontrez des problèmes liés à l’authentification d’application hébergée par Azure, consultez Troubleshoot Azure-hosted application authentication.

Une fois l’authentification principale effectuée, consultez Configure de journalisation dans le Azure SDK pour Java pour plus d’informations sur les fonctionnalités de journalisation fournies par le Kit de développement logiciel (SDK).