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.
Lors du développement d’applications cloud, les développeurs créent, testent et déboguent leur code localement avant de le déployer sur Azure. Toutefois, même pendant le développement local, l’application doit s’authentifier auprès de tous les services Azure avec lesquels elle interagit, comme Key Vault, Stockage ou bases de données.
Cet article explique comment configurer votre application pour utiliser les informations d’identification Azure du développeur pour l’authentification pendant le développement local. Cette approche permet une expérience de développement transparente et sécurisée sans incorporer des secrets ou écrire une logique propre à l’environnement.
Vue d’ensemble de l’authentification de développement local à l’aide de comptes de développeur
Lors du développement d’une application qui utilise la bibliothèque Azure Identity pour Python, vous pouvez vous authentifier auprès des services Azure pendant le développement local à l’aide du compte Azure du développeur. Cette approche est souvent la façon la plus simple de s’authentifier auprès des services Azure pendant le développement local, car elle ne nécessite pas de création et de gestion des principaux de service ou des secrets.
Pour permettre à une application de s’authentifier auprès d’Azure pendant le développement local à l’aide des propres informations d’identification Azure du développeur, le développeur doit d’abord se connecter à l’aide de l’un des outils en ligne de commande pris en charge :
- Azure CLI (
az login
) - Azure Developer CLI (
azd login
) - Azure PowerShell (
Connect-AzAccount
)
Une fois connecté, la bibliothèque Azure Identity pour Python peut détecter automatiquement la session active et récupérer les jetons nécessaires à partir du cache des informations d’identification. Cette fonctionnalité permet à l’application de s’authentifier auprès des services Azure en tant qu’utilisateur connecté, sans nécessiter de configuration supplémentaire ni de secrets codés en dur.
Ce comportement est activé lors de l'utilisation de DefaultAzureCredential
, qui bascule automatiquement vers les informations d’identification basées sur l’interface CLI dans les environnements locaux.
L’utilisation des identifiants Azure authentifiés d'un développeur est la configuration la plus simple pour le développement local. Il tire parti du compte Azure existant de chaque membre de l’équipe, ce qui permet un accès transparent aux services Azure sans nécessiter de configuration supplémentaire.
Toutefois, les comptes de développeur disposent généralement d’autorisations plus larges que l’application en production. Ces autorisations plus larges peuvent entraîner des incohérences dans les tests ou autoriser par inadvertance les opérations que l’application n’est pas autorisée à effectuer dans un environnement de production. Pour aligner les autorisations de production et améliorer votre stratégie de sécurité, vous pouvez plutôt créer des entités de service spécifiques à l’application pour le développement local. Ces identités :
- Peut être attribué uniquement aux rôles et autorisations dont l’application a besoin
- Soutenir le principe du moindre privilège
- Proposer des tests cohérents du comportement lié à l’accès entre les environnements
Les développeurs peuvent configurer l’environnement local pour utiliser le principal de service via des variables d’environnement et DefaultAzureCredential
les récupérer automatiquement. Pour plus d’informations, consultez l’article Authentifier les applications Python auprès des services Azure pendant le développement local à l’aide de principaux de service.
1 - Créez un groupe de sécurité Microsoft Entra pour le développement local
Dans la plupart des scénarios de développement, plusieurs développeurs contribuent à la même application. Pour simplifier le contrôle d’accès et garantir des autorisations cohérentes au sein de l’équipe, nous vous recommandons de créer un groupe de sécurité Microsoft Entra spécifiquement pour les besoins de développement local de l’application.
L’attribution de rôles Azure au niveau du groupe, plutôt qu’à des utilisateurs individuels, offre plusieurs avantages clés :
Attributions de rôles cohérentes
Tous les développeurs du groupe héritent automatiquement des mêmes rôles et autorisations, ce qui garantit un environnement de développement uniforme.
Gestion simplifiée des rôles
Lorsque l’application nécessite un nouveau rôle, vous devez l’ajouter une seule fois au groupe. Vous n’avez pas besoin de mettre à jour les autorisations individuelles de l’utilisateur.
Intégration simple
Les nouveaux développeurs peuvent bénéficier des autorisations nécessaires simplement en les ajoutant au groupe. Aucune attribution de rôle manuelle n’est requise.
Si votre organisation dispose déjà d’un groupe de sécurité Microsoft Entra approprié pour l’équipe de développement, vous pouvez la réutiliser. Sinon, vous pouvez créer un groupe spécifiquement pour l’application.
Pour créer un groupe de sécurité dans l’ID Microsoft Entra, utilisez la commande az ad group createe Azure CLI.
Cette commande nécessite les paramètres suivants :
--display-name
: nom convivial du groupe
--mail-nickname
: identificateur unique utilisé pour l’e-mail et la référence interne
Nous vous recommandons de baser le nom du groupe sur le nom de l’application et d’inclure un suffixe comme -local-dev
pour indiquer clairement son objectif.
#!/bin/bash
az ad group create \
--display-name MyDisplay \
--mail-nickname MyDisplay \
--description "<group-description>"
# PowerShell syntax
az ad group create `
--display-name MyDisplay `
--mail-nickname MyDisplay `
--description "<group-description>"
Après avoir exécuté la az ad group create
commande, copiez la valeur de la id
propriété à partir de la sortie de la commande. Vous avez besoin Object ID
du groupe de sécurité Microsoft Entra pour l’attribution de rôles dans les étapes ultérieures de cet article. Pour récupérer la Object ID
nouvelle fois plus tard, utilisez la commande az ad group show suivante : az ad group show --group "my-app-local-dev" --query id --output tsv
.
Pour ajouter un utilisateur au groupe, vous devez d’abord obtenir le Object ID
compte d’utilisateur Azure que vous souhaitez ajouter. Utilisez la commande az ad user list avec le --filter
paramètre pour rechercher un utilisateur spécifique par nom d’affichage. Le --query
paramètre permet de limiter la sortie aux champs pertinents :
#!/bin/bash
az ad user list \
--filter "startswith(displayName, 'Bob')" \
--query "[].{objectId:id, displayName:displayName}" \
--output table
# PowerShell syntax
az ad user list `
--filter "startswith(displayName, 'Bob')" `
--query "[].{objectId:id, displayName:displayName}" `
--output table
Une fois que vous avez le Object ID
de l’utilisateur, vous pouvez l’ajouter au groupe à l’aide de la commande az ad group member add.
#!/bin/bash
az ad group member add \
--group <group-name> \
--member-id <object-id>
# PowerShell syntax
az ad group member add `
--group <group-name> `
--member-id <object-id>
Remarque
Par défaut, la création de groupes de sécurité Microsoft Entra est limitée à certains rôles privilégiés dans un répertoire. Si vous ne parvenez pas à créer un groupe, contactez un(e) administrateur(-trice) pour votre annuaire. Si vous ne parvenez pas à ajouter des membres à un groupe existant, contactez le propriétaire du groupe ou un(e) administrateur(-trice) d’annuaire. Pour plus d’informations, consultez Gérer les groupes Microsoft Entra et l’appartenance à un groupe.
2 – Attribuer des rôles au groupe Microsoft Entra
Après avoir créé votre groupe de sécurité Microsoft Entra et ajouté des membres, l’étape suivante consiste à déterminer les rôles (autorisations) requis par votre application et à affecter ces rôles au groupe à l’étendue appropriée.
Déterminer les rôles requis
Identifiez les rôles dont votre application a besoin pour fonctionner. Voici quelques exemples communs :
- Utilisateur des secrets de Key Vault : pour lire des secrets à partir d'Azure Key Vault
- Contributeur aux données de file d’attente de stockage – pour transmettre des messages à Azure Queue Storage
Pour plus d’options, reportez-vous aux définitions de rôle intégrées.
Choisir une étendue pour l’attribution de rôle
Les rôles peuvent être attribués à différents niveaux :
- Niveau des ressources (par exemple, un seul coffre de clés ou un compte de stockage)
- Niveau du groupe de ressources (recommandé pour la plupart des applications)
- Niveau de l’abonnement (utilisez avec précaution : accès le plus large)
Dans cet exemple, nous assignons des rôles dans l’étendue du groupe de ressources, qui est généralement le cas lorsque toutes les ressources d’application sont regroupées sous un groupe de ressources.
Un utilisateur, un groupe ou un principal de service d'application se voit attribuer un rôle dans Azure à l'aide de la commande az role assignment create. Vous pouvez spécifier un groupe avec son Object ID
.
#!/bin/bash
az role assignment create --assignee <objectId> \
--scope /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName> \
--role "<roleName>"
# PowerShell syntax
az role assignment create `
--assignee <objectId> `
--scope /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName> `
--role "<roleName>"
Pour obtenir les noms de rôles qui peuvent être attribués, utilisez la commande az role definition list.
#!/bin/bash
az role definition list --query "sort_by([].{roleName:roleName, description:description}, &roleName)" --output table
# PowerShell syntax
az role definition list --query "sort_by([].{roleName:roleName, description:description}, &roleName)" --output table
Pour accorder l’accès en lecture, écriture et suppression aux conteneurs d’objets blob de stockage Azure et aux données pour tous les comptes de stockage d’un groupe de ressources spécifique, attribuez le rôle de Contributeur de données de blob de stockage à votre groupe de sécurité Microsoft Entra.
#!/bin/bash
az role assignment create --assignee bbbbbbbb-1111-2222-3333-cccccccccccc \
--scope /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/msdocs-python-sdk-auth-example \
--role "Storage Blob Data Contributor"
# PowerShell syntax
az role assignment create --assignee bbbbbbbb-1111-2222-3333-cccccccccccc `
--scope /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/msdocs-python-sdk-auth-example `
--role "Storage Blob Data Contributor"
Pour plus d’informations sur l’attribution d’autorisations au niveau de la ressource ou de l’abonnement à l’aide d’Azure CLI, consultez l’article Attribuer des rôles Azure à l’aide d’Azure CLI.
3 - Connectez-vous à Azure à l'aide d'Azure CLI, Azure PowerShell, Azure Developer CLI ou dans un navigateur
Pour vous authentifier auprès de votre compte Azure, choisissez l’une des méthodes suivantes :
Ouvrez un terminal sur votre station de travail de développeur et connectez-vous à Azure à partir d’Azure CLI.
az login
4 - Implémenter DefaultAzureCredential dans votre application
Pour authentifier les objets clients du Kit de développement logiciel (SDK) Azure auprès d’Azure, votre application doit utiliser la DefaultAzureCredential
classe à partir du azure-identity
package. Il s’agit de la méthode d’authentification recommandée pour les déploiements de développement et de production locaux.
Dans un scénario de développement local, DefaultAzureCredential
fonctionne en vérifiant séquentiellement les sources d’authentification disponibles. Plus précisément, il recherche des sessions actives dans les outils suivants :
- Azure CLI (az login)
- Azure PowerShell (Connect-AzAccount)
- Azure Developer CLI (connexion d’authentification azd)
Si le développeur est connecté à Azure à l’aide de l’un de ces outils, DefaultAzureCredential
détecte automatiquement la session et utilise ces informations d’identification pour authentifier l’application auprès des services Azure. Cela permet aux développeurs de s’authentifier en toute sécurité sans stocker de secrets ni modifier du code pour différents environnements.
Commencez par ajouter le package azure.identity à votre application.
pip install azure-identity
Ensuite, pour tout code Python qui crée un objet client azure SDK dans votre application, vous souhaitez :
- Importez la classe
DefaultAzureCredential
du moduleazure.identity
. - Créez un objet
DefaultAzureCredential
. - Transmettez l'objet
DefaultAzureCredential
au constructeur de l'objet client du SDK Azure.
Un exemple de ces étapes est présenté dans le segment de code suivant.
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient
# Acquire a credential object
token_credential = DefaultAzureCredential()
blob_service_client = BlobServiceClient(
account_url="https://<my_account_name>.blob.core.windows.net",
credential=token_credential)