Authentification dans Azure Key Vault

L’authentification avec Key Vault fonctionne conjointement avec Microsoft Entra ID, qui est responsable de l’authentification de l’identité d’un principal de sécurité donné.

Un principal de sécurité est un objet qui représente un utilisateur, un groupe, un service ou une application qui demande l'accès à Azure ressources. Azure attribue un ID object unique à chaque principal de sécurité.

  • Un utilisateur principal de sécurité identifie une personne qui a un profil dans Microsoft Entra ID.

  • Un principal de sécurité group identifie un ensemble d’utilisateurs créés dans Microsoft Entra ID. Tous les rôles ou autorisations attribués au groupe sont accordés à tous les utilisateurs du groupe.

  • Un principal de service est un type de principal de sécurité qui identifie une application ou un service, c’est-à-dire un élément de code plutôt qu’un utilisateur ou un groupe. L’ID d’objet d’un principal de service agit comme son nom d’utilisateur ; la clé secrète client du principal de service agit comme son mot de passe.

Pour les applications, il y a deux méthodes pour obtenir un principal de service :

  • Recommandé : activez une identité managée affectée par le système pour l’application.

    Avec l'identité managée, Azure gère en interne le principal de service de l'application et authentifie automatiquement l'application avec d'autres services Azure. L’identité managée est disponible pour les applications déployées sur un large éventail de services.

    Pour plus d’informations, consultez la vue d’ensemble de l’identité managée. Consultez également Azure services qui prennent en charge l’identité managée qui décrivent comment activer l’identité managée pour des services spécifiques (par exemple, App Service, Azure Functions, Machines Virtuelles, etc.).

  • Si vous ne pouvez pas utiliser l’identité managée, inscrivez l’application avec votre locataire Microsoft Entra, comme décrit dans Quickstart : Enregistrer une application auprès de la plateforme d’identités Azure. L’inscription crée également un deuxième objet d’application qui identifie l’application sur tous les locataires.

scénarios d’authentification de Key Vault

Lorsque vous créez un Azure Key Vault au sein d’un abonnement Azure, il est automatiquement associé au tenant Microsoft Entra de l'abonnement. Tous les appelants dans les deux plans doivent s’inscrire auprès de ce locataire et s’authentifier pour accéder au coffre de clés. Les applications peuvent accéder à Key Vault de trois façons :

  • Application uniquement : l'application représente un Service Principal ou une identité managée. Cette identité est le scénario le plus courant pour les applications qui doivent régulièrement accéder aux certificats, clés ou secrets du coffre de clés. Pour que ce scénario fonctionne lors de l’utilisation de stratégies d’accès (héritées), la propriété objectId de l’application doit être spécifiée dans la stratégie d’accès et applicationId ne doit pas être spécifiée ou doit être null. Lorsque vous utilisez Azure RBAC, attribuez des rôles appropriés à l'identité managée ou au principal de service de l'application.

  • Utilisateur uniquement : l’utilisateur accède au coffre de clés à partir de n’importe quelle application inscrite dans le locataire. Les exemples de ce type d’accès incluent Azure PowerShell et le portail Azure. Pour que ce scénario fonctionne lors de l’utilisation de stratégies d’accès (héritées), l’utilisateur objectId doit être spécifié dans la stratégie d’accès, et l’élément applicationIdne doit pas y figurer ou doit être null. Lorsque vous utilisez Azure RBAC, attribuez des rôles appropriés à l’utilisateur.

  • Application-plus-user (parfois appelée identité composée) : l’utilisateur est tenu d’accéder au coffre de clés à partir d’une application spécifique et l’application doit utiliser le flux d’authentification au nom de l’utilisateur (OBO) pour emprunter l’identité de l’utilisateur. Pour que ce scénario fonctionne avec des stratégies d’accès (héritées), à la fois applicationId et objectId doivent être spécifiés dans la stratégie d’accès. Le applicationId identifie l'application requise et le objectId identifie l'utilisateur. Actuellement, cette option n'est pas disponible pour le plan de données Azure RBAC.

Dans tous les types d’accès, l’application s’authentifie avec Microsoft Entra ID. L’application utilise n’importe quelle méthode d’authentification prise en charge en fonction du type d’application. L’application acquiert un jeton pour une ressource dans le plan pour accorder l’accès. La ressource est un point de terminaison dans le plan de gestion ou de données, en fonction de l’environnement Azure. L’application utilise le jeton et envoie une demande d’API REST à Key Vault. Pour en savoir plus, passez en revue l’ensemble du flux d’authentification.

Le modèle d’un mécanisme d’authentification unique auprès des deux plans présente plusieurs avantages :

  • Les organisations peuvent contrôler l’accès de manière centralisée à tous les coffres de clés de leur organisation.
  • Si un utilisateur part, il perd instantanément l’accès à tous les coffres de clés de l’organisation.
  • Les organisations peuvent personnaliser l’authentification à l’aide des options de Microsoft Entra ID, telles que l’activation de l’authentification multifacteur pour renforcer la sécurité.

Configurer le pare-feu Key Vault

Par défaut, Key Vault autorise l’accès aux ressources via des adresses IP publiques. Pour une sécurité optimale, vous pouvez aussi limiter l’accès à des plages d’adresses IP, des points de terminaison de service, des réseaux virtuels ou des points de terminaison privés spécifiques.

Pour plus d’informations, consultez Access Azure Key Vault derrière un pare-feu.

Flux d’opération de demande de Key Vault avec authentification

L'authentification du Key Vault se produit dans le cadre de chaque opération de requête sur Key Vault. Une fois le jeton récupéré, il peut être réutilisé pour les appels suivants. Exemple de flux d’authentification :

  1. Un jeton demande de s’authentifier auprès de Microsoft Entra ID, par exemple :

    • Une ressource Azure telle qu’une machine virtuelle ou une application App Service avec une identité managée contacte le point de terminaison REST pour obtenir un jeton d’accès.
    • Un utilisateur se connecte au portail Azure à l’aide d’un nom d’utilisateur et d’un mot de passe.
  2. Si l’authentification avec Microsoft Entra ID réussit, le principal de sécurité reçoit un jeton OAuth.

  3. Un appel à l'API REST Key Vault via le point de terminaison de Key Vault (URI).

  4. Key Vault Pare-feu vérifie les critères suivants. Si un critère est respecté, l’appel est autorisé. Dans le cas contraire, l’appel est bloqué et une réponse Interdit est retournée.

    • Le pare-feu est désactivé et le point de terminaison public de Key Vault est accessible à partir de l’Internet public.
    • L’appelant est un Key Vault Service approuvé, ce qui lui permet de contourner le pare-feu.
    • L’appelant est listé dans le pare-feu par adresse IP, réseau virtuel ou point de terminaison de service.
    • L’appelant peut atteindre Key Vault via une connexion de liaison privée configurée.
  5. Si le pare-feu autorise l’appel, Key Vault appelle Microsoft Entra ID pour valider le jeton d’accès du principal de sécurité.

  6. Key Vault vérifie si le principal de sécurité dispose de l’autorisation nécessaire pour l’opération demandée. Si ce n’est pas le cas, Key Vault renvoie une réponse interdite.

  7. Key Vault effectue l’opération demandée et retourne le résultat.

Le diagramme suivant illustre le processus d’une application appelant une API « Obtenir un secret » Key Vault :

 Le flux d’authentification Azure Key Vault

Remarque

Les clients du SDK Key Vault pour les secrets, les certificats et les clés effectuent un appel supplémentaire en direction de Key Vault sans jeton d’accès, ce qui entraîne une réponse 401 pour récupérer les informations du locataire. Pour plus d’informations , consultez Authentification, demandes et réponses

Authentification pour Key Vault dans le code de l’application

Le SDK Key Vault utilise la bibliothèque Azure Identity client, qui permet une authentification fluide à Key Vault dans divers environnements avec le même code.

bibliothèques clientes Azure Identity

.NET Python Java JavaScript
Azure Sdk Identity .NET Azure Sdk Identity Python Azure Sdk Identity Java Azure Sdk Identity JavaScript

Pour plus d’informations sur les meilleures pratiques et les exemples de développeurs, consultez Authenticate pour Key Vault dans le code

Étapes suivantes