0Pricing
Azure Fundamentals · Leçon

Identité managée pour une authentification sans mot de passe

Attribuez une identité managée affectée par le système à une VM ou à App Service, accordez-lui un accès RBAC à Key Vault et Blob Storage, puis supprimez les secrets du code de votre application.

Identité managée pour une authentification sans mot de passe est une leçon Azure Fundamentals gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Azure Fundamentals, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Azure Fundamentals comprend 4 leçons au total.

Le problème des identifiants stockés

Traditionnellement, les applications se connectent à des services Azure comme Storage ou Key Vault à l’aide de chaînes de connexion ou de clés API stockées dans des fichiers de configuration ou des variables d’environnement. Ces identifiants peuvent être accidentellement validés dans le contrôle de version, exposés dans les journaux ou dérobés lors d’une violation de sécurité. Une identité managée supprime entièrement la nécessité pour les applications de stocker des identifiants : Azure émet et renouvelle lui-même un jeton au nom de la ressource, et l’application demande simplement à Azure le jeton actuel lors de l’exécution.

Qu’est-ce qu’une identité managée ?

Une identité managée est un principal de service géré automatiquement dans Microsoft Entra ID et lié à une ressource Azure (comme une VM, App Service ou Function App). La plateforme Azure crée et gère les identifiants de l’identité — en les renouvelant régulièrement — afin que votre code ne manipule jamais de mot de passe ni de secret. Les applications exécutées sur la ressource appellent le point de terminaison du service de métadonnées d’instance Azure (IMDS) à l’adresse http://169.254.169.254 pour obtenir un jeton OAuth de courte durée, qu’elles présentent ensuite aux services Azure.

# Get a token from IMDS (runs inside an Azure VM or App Service)
curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://storage.azure.com/' \
  -H 'Metadata: true'

Affectée par le système ou par l’utilisateur

Il existe deux types d’identité managée : une identité affectée par le système est liée à une seule ressource Azure ; elle est créée lorsque vous l’activez sur la ressource et supprimée automatiquement lorsque la ressource est supprimée. Une identité affectée par l’utilisateur est une identité Entra ID indépendante que vous créez séparément avant de l’attacher à une ou plusieurs ressources Azure. Les identités affectées par l’utilisateur sont utiles lorsque plusieurs services (par exemple, plusieurs Function Apps) doivent partager la même identité et les mêmes autorisations RBAC, ce qui évite la duplication des attributions de rôles.

# Enable system-assigned managed identity on an App Service
az webapp identity assign \
  --resource-group myRG \
  --name myWebApp

# Create and assign a user-assigned identity
az identity create --name mySharedIdentity --resource-group myRG
az webapp identity assign \
  --resource-group myRG \
  --name myWebApp \
  --identities mySharedIdentity

Accorder des autorisations RBAC

Après avoir activé une identité managée, vous devez lui accorder des autorisations RBAC sur la ressource Azure cible. Par exemple, pour autoriser un App Service à lire des objets blob, attribuez le rôle Storage Blob Data Reader à l’identité managée de l’App Service sur le compte de stockage. Les attributions RBAC suivent le principe du moindre privilège : accordez uniquement les autorisations minimales nécessaires. N’attribuez jamais Owner ou Contributor à une identité managée, sauf en cas de nécessité absolue.

# Get the managed identity object ID
PRINCIPAL_ID=$(az webapp identity show \
  --resource-group myRG --name myWebApp \
  --query principalId --output tsv)

# Assign Storage Blob Data Reader role
az role assignment create \
  --assignee $PRINCIPAL_ID \
  --role 'Storage Blob Data Reader' \
  --scope '/subscriptions/<sub>/resourceGroups/myRG/providers/Microsoft.Storage/storageAccounts/mystorageacct'

Utiliser DefaultAzureCredential dans le code

Le Azure SDK fournit une classe DefaultAzureCredential qui essaie automatiquement plusieurs méthodes d’authentification dans l’ordre : variables d’environnement, identité de charge de travail, identité managée, Azure CLI, Visual Studio et d’autres encore. Lorsque votre application s’exécute dans Azure (App Service, VM, Function App), DefaultAzureCredential utilise automatiquement l’identité managée sans aucune modification du code. En local, les développeurs s’authentifient via leur session Azure CLI. Cette classe d’identifiants unique fonctionne dans tous les environnements sans logique conditionnelle.

# Python example using DefaultAzureCredential
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient

credential = DefaultAzureCredential()
client = BlobServiceClient(
  account_url='https://mystorageacct.blob.core.windows.net',
  credential=credential
)
blobs = client.get_container_client('mycontainer').list_blobs()
for blob in blobs:
    print(blob.name)

Identité managée avec Azure Key Vault

Un modèle courant consiste à utiliser une identité managée pour accéder aux secrets Azure Key Vault lors de l’exécution. Au lieu de stocker un mot de passe de base de données dans les paramètres de l’application, vous le stockez dans Key Vault et attribuez à l’identité managée de l’application le rôle Key Vault Secrets User sur ce coffre. Au démarrage, l’application récupère le secret depuis Key Vault à l’aide de DefaultAzureCredential. Ce modèle garantit que les secrets ne sont jamais stockés dans le code, les fichiers de configuration ou les variables d’environnement : ils existent uniquement dans Key Vault et sont récupérés de manière éphémère.

# Python: Read a Key Vault secret using managed identity
from azure.identity import DefaultAzureCredential
from azure.keyvault.secrets import SecretClient

credential = DefaultAzureCredential()
client = SecretClient(
  vault_url='https://mykeyvault.vault.azure.net/',
  credential=credential
)
secret = client.get_secret('DatabasePassword')
print('Secret value retrieved successfully')

Identité managée pour l’accès à Azure SQL

Azure SQL Database prend en charge l’authentification Entra ID, ce qui signifie qu’une identité managée peut s’authentifier auprès de SQL sans nom d’utilisateur ni mot de passe. Pour l’activer : définissez un administrateur Entra ID sur le serveur SQL, puis exécutez une instruction CREATE USER dans la base de données cible pour le nom d’affichage de l’identité managée, et accordez-lui le rôle de base de données approprié. L’application se connecte à l’aide de DefaultAzureCredential de l’Azure SDK et d’un jeton d’accès limité à https://database.windows.net/, entièrement sans mot de passe.

-- In Azure SQL: create a user for the managed identity
CREATE USER [myWebApp] FROM EXTERNAL PROVIDER;
ALTER ROLE db_datareader ADD MEMBER [myWebApp];
ALTER ROLE db_datawriter ADD MEMBER [myWebApp];

Identité managée pour les charges de travail AKS

Dans Azure Kubernetes Service, les pods individuels peuvent obtenir des jetons d’identité managée à l’aide de l’identité de charge de travail (qui succède à AAD Pod Identity). Vous créez une identité managée affectée par l’utilisateur, la fédérez avec l’émetteur OIDC AKS, annotez le compte de service Kubernetes, puis le webhook Azure Workload Identity injecte les variables d’environnement nécessaires afin que le DefaultAzureCredential du pod puisse obtenir un jeton. Cela étend l’authentification sans mot de passe aux microservices conteneurisés sans stocker de secrets dans des objets Kubernetes Secrets.

# Create federated identity credential for AKS workload identity
az identity federated-credential create \
  --name myFederatedCredential \
  --identity-name mySharedIdentity \
  --resource-group myRG \
  --issuer $(az aks show --resource-group myRG --name myAKS --query 'oidcIssuerProfile.issuerUrl' -o tsv) \
  --subject 'system:serviceaccount:default:myapp-sa' \
  --audiences 'api://AzureADTokenExchange'

Auditer les accès par identité managée

Même si les identifiants d’identité managée sont invisibles aux développeurs, tous les événements d’émission de jetons et d’accès aux ressources sont consignés. Les journaux de connexion Entra ID enregistrent chaque demande de jeton effectuée par une identité managée, y compris la ressource consultée, l’heure et le succès ou l’échec de la demande. Les journaux d’activité Azure Storage et les journaux d’audit Key Vault enregistrent les opérations précises effectuées à l’aide du jeton. Ces journaux sont essentiels pour les audits de sécurité et les enquêtes sur les incidents impliquant des identités managées.

# Query Entra ID sign-in logs for a managed identity
az monitor activity-log list \
  --resource-group myRG \
  --caller myWebApp \
  --start-time 2024-06-01 \
  --output table

Migrer depuis les chaînes de connexion

Si votre application utilise actuellement des chaînes de connexion ou des clés API, migrez vers une identité managée en trois étapes : Étape 1 — Activez une identité managée sur la ressource de calcul. Étape 2 — Attribuez les rôles RBAC appropriés à l’identité sur chaque service cible. Étape 3 — Mettez à jour le code de l’application afin d’utiliser DefaultAzureCredential à la place de la chaîne de connexion. Supprimez la chaîne de connexion de la configuration App Service et de Key Vault une fois la migration vérifiée. Cette migration peut généralement être réalisée avec un minimum de modifications de code dans les applications Azure SDK modernes.

Résumé des avantages de sécurité

L’identité managée offre quatre avantages de sécurité essentiels par rapport à l’authentification fondée sur des identifiants : aucun stockage d’identifiants — rien à dérober ou à valider accidentellement. Renouvellement automatique — Azure renouvelle les certificats sous-jacents sans interruption de service. Autorisations limitées — les identités reçoivent uniquement les rôles RBAC dont elles ont besoin, conformément au principe du moindre privilège. Traçabilité complète — toutes les tentatives d’accès sont consignées dans Entra ID et dans les journaux d’audit du service consulté. Pour toute nouvelle intégration de service Azure, l’identité managée devrait être l’approche d’authentification par défaut.

Vérification rapide

Vérifiez votre compréhension des concepts de Fondamentaux de Microsoft Azure (AZ-900) présentés dans cette leçon.

Récapitulatif de la leçon

Dans cette leçon, vous avez appris que l’identité managée élimine les identifiants stockés en attribuant aux ressources Azure une identité Entra ID gérée automatiquement, que DefaultAzureCredential dans le SDK Azure utilise de manière transparente l’identité managée dans Azure et les identifiants du développeur en local, et que les affectations de rôles RBAC sur les services cibles contrôlent ce à quoi l’identité peut accéder. Ensuite, nous découvrirons Azure Service Bus pour la messagerie découplée entre les composants d’une application.

Questions Fréquemment Posées

La leçon « Identité managée pour une authentification sans mot de passe » est-elle gratuite ?

Oui — le texte complet de « Identité managée pour une authentification sans mot de passe » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Azure Fundamentals, passe à CoddyKit PRO. Le cours Azure Fundamentals comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Identité managée pour une authentification sans mot de passe » ?

Attribuez une identité managée affectée par le système à une VM ou à App Service, accordez-lui un accès RBAC à Key Vault et Blob Storage, puis supprimez les secrets du code de votre application. Tu pratiques Azure Fundamentals avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Azure Fundamentals ?

Aucune expérience préalable n'est requise. Azure Fundamentals sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.

Combien de temps prend la leçon « Identité managée pour une authentification sans mot de passe » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Azure Fundamentals ?

Oui. Chaque leçon Azure Fundamentals inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Identité managée pour une authentification sans mot de passe
  2. Azure Service Bus pour une messagerie découplée
  3. Azure Container Apps
  4. Flux de travail de développement de bout en bout
← Retour à Azure Fundamentals