Remarque
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.
L’autorisation dans Azure détermine les actions que les utilisateurs ou services authentifiés peuvent effectuer sur les ressources. Cet article explique comment implémenter l’autorisation à l’aide du Kit de développement logiciel (SDK) Azure pour Python, couvrant les modèles, l’implémentation, la résolution des problèmes et les meilleures pratiques. Pour obtenir une configuration détaillée de l’authentification, reportez-vous à l’authentification des applications Python sur Azure.
Présentation
L’authentification (AuthN) vérifie l’identité d’un utilisateur ou d’un service, tandis que l’autorisation (AuthZ) définit ce qu’ils peuvent faire. Dans Azure, l’autorisation garantit un accès sécurisé aux ressources, critique pour la protection des applications et des données. Les développeurs peuvent implémenter une autorisation robuste avec le Kit de développement logiciel (SDK) Azure pour Python pour contrôler l’accès dans différents flux de travail, de la gestion des ressources à l’accès aux données spécifiques au service.
Modèles d’autorisation Azure
Azure fournit plusieurs mécanismes d’autorisation pour gérer l’accès. La compréhension de ces modèles est essentielle pour un contrôle d’accès efficace.
Contrôle d’accès basé sur les rôles Azure
Azure Role-Based Access Control (RBAC) attribue des rôles à des identités dans des étendues telles que des abonnements ou des groupes de ressources. Les rôles intégrés incluent propriétaire, contributeur et lecteur, tandis que les rôles personnalisés autorisent des autorisations personnalisées. Lorsque vous attribuez un rôle à une étendue spécifique, l’identité (comme un utilisateur ou un service) obtient des autorisations pour toutes les ressources dans cette étendue et ses sous-étendues. Par exemple, l’attribution du rôle Contributeur au niveau de l’abonnement permet la gestion de toutes les ressources de cet abonnement. Consultez Comprendre l’étendue du RBAC Azure.
Mécanismes spécifiques au service
Certains services Azure offrent des méthodes d’autorisation uniques :
- Stockage Azure : utilise des signatures d’accès partagé (SAP) et des listes de contrôle d’accès (ACL) pour l’accès aux données. Consultez notes d’autorisation spécifiques au service pour stockage Azure.
- Azure Key Vault : recommande RBAC sur les stratégies d’accès héritées. Consultez Service-Specific notes d’autorisation pour Azure Key Vault.
- Microsoft Graph : utilise des étendues OAuth 2.0 et des autorisations d’application. Consultez Notes d’autorisation spécifiques au service pour Microsoft Graph.
Utiliser l’autorisation dans le Kit de développement logiciel (SDK) Azure pour Python
Le Kit de développement logiciel (SDK) Azure pour Python fournit une prise en charge intégrée de la gestion de l’authentification et de l’autorisation via le azure-identity package. La DefaultAzureCredential classe prend en charge différents mécanismes d’authentification, tels que les identités managées et les principaux de service, en s’adaptant à différents environnements.
Exemple : Répertorier les groupes de ressources
Cet exemple montre comment le Kit de développement logiciel (SDK) Azure pour Python utilise des informations d’identification (via DefaultAzureCredential) pour s’authentifier et comment l’autorisation détermine si l’identité peut répertorier correctement les groupes de ressources. Si l'identité ne dispose pas du rôle Lecteur ou d'un rôle supérieur sur l'étendue de l'abonnement ou du groupe de ressources, cet appel retourne une erreur 403 d'accès interdit.
from azure.identity import DefaultAzureCredential
from azure.mgmt.resource import ResourceManagementClient
credential = DefaultAzureCredential()
client = ResourceManagementClient(credential, "<subscription-id>")
resource_groups = client.resource_groups.list()
for rg in resource_groups:
print(rg.name)
Remplacez <subscription-id> par votre ID d’abonnement Azure, généralement sous la forme .00000000-0000-0000-0000-000000000000
Microsoft Graph avec des étendues
Pour accéder à Microsoft Graph, utilisez le Kit de développement logiciel (SDK) Microsoft Graph officiel pour Python, qui prend en charge les autorisations déléguées et d’application.
Cet exemple montre comment le Kit de développement logiciel (SDK) utilise des informations d’identification pour demander un jeton d’accès avec l’étendue https://graph.microsoft.com/.default d’autorisation requise et accéder aux ressources Microsoft Graph. L’identité doit être autorisée dans Microsoft Entra ID avec les autorisations d’application appropriées (par exemple User.Read.All) pour récupérer les données utilisateur ; sinon, la demande échoue avec une autorisation 403 Interdit.
Important
Assurez-vous que votre application ou identité dispose de l'autorisation User.Read.All ou d'autres autorisations requises octroyées dans l'ID Microsoft Entra.
from azure.identity import DefaultAzureCredential
from msgraph.core import GraphClient
credential = DefaultAzureCredential()
client = GraphClient(credential=credential, scopes=["https://graph.microsoft.com/.default"])
response = client.get("/users")
users = response.json().get("value", [])
for user in users:
print(user["displayName"])
En savoir plus sur ce SDK dans le didacticiel Build Python officiel avec Microsoft Graph .
Diagnostiquer les erreurs d’autorisation
Les problèmes d’autorisation provoquent souvent des erreurs HTTP 403 Interdits, ce qui indique des autorisations insuffisantes. Pour diagnostiquer ces problèmes :
Vérifier les messages d’erreur : passez en revue la réponse pour plus d’informations sur les autorisations manquantes.
Activer la journalisation : utilisez Python journalisation pour inspecter les demandes et les réponses.
import logging logging.basicConfig(level=logging.DEBUG)Vérifier l’accès : utilisez Azure CLI ou le portail Azure pour vérifier les attributions de rôles.
az role assignment list --assignee <principal-id> --scope <scope>Remplacez
<principal-id>par l’ID d’objet de votre utilisateur, de votre principal de service ou de votre identité managée. Remplacez<scope>par une étendue de ressource Azure, telle qu’un ID d’abonnement, un nom de groupe de ressources ou une ressource. Voir Utiliser des étendues.
Utiliser des étendues
Souvent, vous devez fournir une étendue, comme dans l’exemple suivant :
az role assignment list \
--assignee <principal-id> \
--scope <scope>
Voici quelques formats d’étendue courants :
| Niveau d’étendue | Exemple de valeur |
|---|---|
| Subscription | /subscriptions/<subscription-id> |
| Groupe de ressources | /subscriptions/<subscription-id>/resourceGroups/<resource-group-name> |
| Nom de la ressource | /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/<provider-namespace>/<resource-type>/<resource-name> |
Par exemple, pour répertorier toutes les attributions de rôles pour une identité managée au niveau du groupe de ressources :
az role assignment list \
--assignee 12345678-90ab-cdef-1234-567890abcdef \
--scope /subscriptions/<subscription-id>/resourceGroups/my-resource-group
Ou au niveau de l’abonnement :
az role assignment list \
--assignee 12345678-90ab-cdef-1234-567890abcdef \
--scope /subscriptions/<subscription-id>
Pour récupérer l’ID d’objet (<principal-id>) d’un utilisateur ou d’une identité managée, utilisez :
az ad user show --id <user-email> --query id
az identity show --name <identity-name> --resource-group <rg-name> --query principalId
Gérer l’accès
Gérez l’accès via les attributions de rôles à l’aide de :
Azure portail : ajoutez des rôles via le menu de service contrôle d’accès (IAM).
Azure CLI :
az role assignment create --assignee <principal-id> --role <role-name> --scope <scope>Remplacez
<principal-id>par l’ID d’objet de votre utilisateur, de votre principal de service ou de votre identité managée. Remplacez<scope>par une étendue de ressource Azure, telle qu’un ID d’abonnement, un nom de groupe de ressources ou un nom de ressource. Voir Utiliser des étendues.Modèles ARM : Utilisation pour la gestion déclarative.
Pour les identités managées, attribuez des rôles à l’identité associée aux ressources telles que les machines virtuelles. Utilisez la fonctionnalité Vérifier l'accès au portail Azure ou la Azure CLI pour vérifier les autorisations effectives.
Notes d’autorisation spécifiques au service
Dans la section Mécanismes spécifiques au service, vous avez appris que certains services Azure offrent des méthodes d’autorisation uniques. Cette section fournit plus de détails pour chacun des trois services Azure mentionnés.
stockage Azure
- RBAC : gère les opérations du plan de contrôle.
- SAP et ACL : Contrôler l’accès au plan de données, avec l’authentification Microsoft Entra également prise en charge.
Exemple : Accéder aux objets blob avec l’ID Microsoft Entra
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient
credential = DefaultAzureCredential()
client = BlobServiceClient(account_url="https://<account-name>.blob.core.windows.net", credential=credential)
containers = client.list_containers()
for container in containers:
print(container.name)
Remplacez par <account-name> le nom de votre compte stockage Azure.
Azure Key Vault
Utilisez RBAC au lieu des stratégies d’accès héritées pour la cohérence. Les stratégies d’accès sont toujours prises en charge, mais pas par défaut.
Exemple : Récupérer un secret
from azure.identity import DefaultAzureCredential
from azure.keyvault.secrets import SecretClient
credential = DefaultAzureCredential()
client = SecretClient(vault_url="https://<vault-name>.vault.azure.net", credential=credential)
secret = client.get_secret("my-secret")
print(secret.value)
Remplacez par <vault-name> le nom de votre ressource Key Vault.
Microsoft Graph
Utilise des étendues OAuth 2.0 pour les autorisations déléguées et les autorisations d’application pour les applications démon. Spécifiez des étendues comme indiqué dans l’exemple précédent.
Meilleures pratiques
- Privilège minimum : Attribuez uniquement les autorisations nécessaires, telles que Lecteur au lieu de Contributeur.
- Préférer RBAC : en particulier pour Key Vault, pour le contrôle d’accès unifié.
- Utilisez des identités managées : évitez de gérer les informations d’identification dans le code.
- Limiter les autorisations Graph : demander des étendues spécifiques pour réduire les risques.