Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Autorisatie in Azure bepaalt welke acties geverifieerde gebruikers of services kunnen uitvoeren op resources. In dit artikel wordt beschreven hoe u autorisatie implementeert met behulp van de Azure SDK voor Python, waarin modellen, implementatie, probleemoplossing en aanbevolen procedures worden beschreven. Raadpleeg Python-apps verifiëren bij Azure voor gedetailleerde verificatie-instellingen.
Introductie
Verificatie (AuthN) verifieert de identiteit van een gebruiker of service, terwijl autorisatie (AuthZ) definieert wat ze kunnen doen. In Azure zorgt autorisatie voor beveiligde toegang tot resources, essentieel voor het beveiligen van toepassingen en gegevens. Ontwikkelaars kunnen robuuste autorisatie implementeren met de Azure SDK voor Python om de toegang in verschillende werkstromen te beheren, van het beheren van resources tot toegang tot servicespecifieke gegevens.
Azure-autorisatiemodellen
Azure biedt meerdere autorisatiemechanismen voor het beheren van toegang. Inzicht in deze modellen is essentieel voor effectief toegangsbeheer.
Toegangsbeheer van Azure Role-Based
Azure Role-Based Access Control (RBAC) wijst rollen toe aan identiteiten op niveaus zoals abonnementen of resourcegroepen. Ingebouwde rollen omvatten Eigenaar, Inzender en Lezer, terwijl aangepaste rollen aangepaste machtigingen toestaan. Wanneer u een rol toewijst aan een specifieke scope, krijgt de identiteit (zoals een gebruiker of dienst) machtigingen voor alle resources binnen die scope en de bijbehorende onderliggende scopes. Als u bijvoorbeeld de rol Inzender op abonnementsniveau toewijst, kan het beheer van alle resources in dat abonnement worden beheerd. Zie Inzicht in het bereik voor Azure RBAC.
Servicespecifieke mechanismen
Sommige Azure-services bieden unieke autorisatiemethoden:
- Azure Storage: maakt gebruik van Shared Access Signatures (SAS) en toegangsbeheerlijsten (ACL's) voor gegevenstoegang. Zie Service-Specific autorisatieopmerkingen voor Azure Storage.
- Azure Key Vault: raadt RBAC aan boven verouderd toegangsbeleid. Zie Service-Specific autorisatieopmerkingen voor Azure Key Vault.
- Microsoft Graph: Maakt gebruik van OAuth 2.0-bereiken en toepassingsmachtigingen. Zie Service-Specific Autorisatienotities voor Microsoft Graph.
Autorisatie gebruiken in Azure SDK voor Python
De Azure SDK voor Python biedt ingebouwde ondersteuning voor het verwerken van verificatie en autorisatie via het azure-identity pakket. De DefaultAzureCredential klasse ondersteunt verschillende verificatiemechanismen, zoals beheerde identiteiten en service-principals, die worden aangepast aan verschillende omgevingen.
Voorbeeld: Resourcegroepen vermelden
In dit voorbeeld ziet u hoe de Azure SDK voor Python een referentie (via DefaultAzureCredential) gebruikt om te verifiëren en hoe autorisatie bepaalt of de identiteit resourcegroepen kan vermelden. Als de identiteit de rol Lezer of hoger in het bereik van het abonnement of de resourcegroep mist, retourneert deze aanroep de fout 403 Verboden.
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)
Vervang door <subscription-id> uw Azure-abonnements-id, meestal in de vorm van 00000000-0000-0000-0000-000000000000.
Microsoft Graph met machtigingen
Voor toegang tot Microsoft Graph gebruikt u de officiële Microsoft Graph SDK voor Python, die zowel gedelegeerde als toepassingsmachtigingen ondersteunt.
In dit voorbeeld ziet u hoe de SDK een referentie gebruikt om een toegangstoken aan te vragen met het vereiste autorisatiebereik https://graph.microsoft.com/.default en toegang te krijgen tot Microsoft Graph-resources. De identiteit moet zijn geautoriseerd in Microsoft Entra ID met de juiste toepassingsmachtigingen (zoals User.Read.All) om gebruikersgegevens op te halen. Anders mislukt de aanvraag met een 403 Verboden.
Belangrijk
Zorg ervoor dat uw app of identiteit de User.Read.All of andere vereiste machtigingen heeft die zijn verleend in Microsoft Entra-id.
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"])
Meer informatie over deze SDK vindt u in de officiële Build Python-apps met Microsoft Graph-zelfstudie .
Autorisatiefouten diagnosticeren
Autorisatieproblemen veroorzaken vaak HTTP 403 Verboden fouten, wat aangeeft dat er onvoldoende machtigingen zijn. Ga als volgt te werk om deze problemen te diagnosticeren:
Controleer foutberichten: bekijk het antwoord op details over ontbrekende machtigingen.
Logboekregistratie inschakelen: gebruik Python logboekregistratie om aanvragen en antwoorden te controleren.
import logging logging.basicConfig(level=logging.DEBUG)Toegang controleren: gebruik Azure CLI of de Azure-portal om roltoewijzingen te controleren.
az role assignment list --assignee <principal-id> --scope <scope>Vervang
<principal-id>door de object-id van uw gebruiker, service-principal of beheerde identiteit. Vervang door<scope>een Azure-resourcebereik, zoals een abonnements-id, de naam van een resourcegroep of een resource. Zie Werken met bereiken.
Werken met bereiken
Vaak moet u een bereik opgeven, zoals in het volgende voorbeeld:
az role assignment list \
--assignee <principal-id> \
--scope <scope>
Hier volgen enkele gebruikelijke scope-indelingen:
| Bereikniveau | Voorbeeldwaarde |
|---|---|
| Subscription | /subscriptions/<subscription-id> |
| Resourcegroep | /subscriptions/<subscription-id>/resourceGroups/<resource-group-name> |
| Bronnaam | /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/<provider-namespace>/<resource-type>/<resource-name> |
Als u bijvoorbeeld alle roltoewijzingen voor een beheerde identiteit wilt weergeven op het niveau van de resourcegroep:
az role assignment list \
--assignee 12345678-90ab-cdef-1234-567890abcdef \
--scope /subscriptions/<subscription-id>/resourceGroups/my-resource-group
Of op abonnementsniveau:
az role assignment list \
--assignee 12345678-90ab-cdef-1234-567890abcdef \
--scope /subscriptions/<subscription-id>
Als u de object-id (<principal-id>) van een gebruiker of beheerde identiteit wilt ophalen, gebruikt u:
az ad user show --id <user-email> --query id
az identity show --name <identity-name> --resource-group <rg-name> --query principalId
Toegang beheren
Toegang beheren via roltoewijzingen met behulp van:
Azure portal: Voeg rollen toe via het servicemenu Toegangsbeheer (IAM).
Azure CLI:
az role assignment create --assignee <principal-id> --role <role-name> --scope <scope>Vervang
<principal-id>door de object-id van uw gebruiker, service-principal of beheerde identiteit. Vervang door<scope>een Azure-resourcebereik, zoals een abonnements-id, een resourcegroepnaam of een resourcenaam. Zie Werken met bereiken.ARM-sjablonen: gebruiken voor declaratief beheer.
Wijs voor beheerde identiteiten rollen toe aan de identiteit die is gekoppeld aan resources zoals virtuele machines. Gebruik de functie Toegang controleren van de Azure-portal of de Azure CLI om effectieve machtigingen te controleren.
Servicespecifieke autorisatienotities
In de sectie Servicespecifieke mechanismen hebt u geleerd dat sommige Azure services unieke autorisatiemethoden bieden. In deze sectie vindt u meer informatie over elk van de drie Azure-services die worden vermeld.
Azure-opslag
- RBAC: beheert besturingsvlakbewerkingen.
- SAS en ACLs: beheer toegang tot het gegevensvlak, waarbij ook Microsoft Entra-verificatie wordt ondersteund.
Voorbeeld: Toegang tot blobs met Microsoft Entra-id
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)
Vervang door <account-name> de naam van uw Azure Storage-account.
Azure Key Vault
Gebruik RBAC in plaats van verouderd toegangsbeleid voor consistentie. Toegangsbeleid wordt nog steeds ondersteund, maar heeft geen voorkeur.
Voorbeeld: Een geheim ophalen
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)
Vervang door <vault-name> de naam van uw Key Vault-resource.
Microsoft Graph
Maakt gebruik van OAuth 2.0-bereiken voor gedelegeerde machtigingen en toepassingsmachtigingen voor daemon-apps. Geef bereiken op zoals wordt weergegeven in het eerdere voorbeeld.
Beste praktijken
- Minimale bevoegdheid: wijs alleen benodigde machtigingen toe, zoals Lezer in plaats van Inzender.
- Voorkeur voor RBAC: met name voor Key Vault, voor geïntegreerd toegangsbeheer.
- Beheerde identiteiten gebruiken: vermijd het beheren van referenties in code.
- Grafiekmachtigingen beperken: specifieke bereiken aanvragen om risico's te minimaliseren.