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.
Bij het ontwikkelen van cloudtoepassingen bouwen, testen en fouten opsporen in hun code doorgaans lokaal voordat ze deze implementeren in Azure. Zelfs tijdens lokale ontwikkeling moet de toepassing echter worden geverifieerd met alle Azure-services waarmee deze communiceert, zoals Key Vault, Storage of databases.
In dit artikel wordt beschreven hoe u uw toepassing configureert voor het gebruik van de Azure-referenties van de ontwikkelaar voor verificatie tijdens lokale ontwikkeling. Deze aanpak maakt een naadloze en veilige ontwikkelervaring mogelijk zonder geheimen in te sluiten of omgevingsspecifieke logica te schrijven.
Overzicht van verificatie voor lokale ontwikkeling met behulp van ontwikkelaarsaccounts
Wanneer u een toepassing ontwikkelt die gebruikmaakt van de Azure Identity-bibliotheek voor Python, kunt u tijdens lokale ontwikkeling verifiëren bij Azure-services met behulp van het Azure-account van de ontwikkelaar. Deze benadering is vaak de eenvoudigste manier om tijdens lokale ontwikkeling bij Azure-services te verifiëren, omdat hiervoor geen service-principals of geheimen hoeven te worden gemaakt en beheerd.
Als u een toepassing wilt inschakelen voor verificatie bij Azure tijdens lokale ontwikkeling met behulp van de eigen Azure-referenties van de ontwikkelaar, moet de ontwikkelaar zich eerst aanmelden met een van de ondersteunde opdrachtregelprogramma's:
- Azure CLI (
az login
) - Azure Developer CLI (
azd login
) - Azure PowerShell (
Connect-AzAccount
)
Zodra u zich hebt aangemeld, kan de Azure Identity-bibliotheek voor Python de actieve sessie automatisch detecteren en de benodigde tokens ophalen uit de cache voor referenties. Met deze mogelijkheid kan de app worden geverifieerd bij Azure-services als de aangemelde gebruiker, zonder dat hiervoor aanvullende configuratie of in code vastgelegde geheimen nodig zijn.
Dit gedrag wordt ingeschakeld bij gebruik van DefaultAzureCredential
, die transparant teruggrijpt naar op CLI gebaseerde inloggegevens in lokale omgevingen.
Het gebruik van de aangemelde Azure-referenties van een ontwikkelaar is de eenvoudigste manier voor lokale ontwikkeling. Het maakt gebruik van het bestaande Azure-account van elk teamlid, waardoor naadloze toegang tot Azure-services mogelijk is zonder dat er extra configuratie nodig is.
Ontwikkelaarsaccounts hebben doorgaans echter bredere machtigingen dan de toepassing in productie moet hebben. Deze bredere machtigingen kunnen leiden tot inconsistenties bij het testen of onbedoeld toestaan van bewerkingen die de app niet zou mogen uitvoeren in een productieomgeving. Als u productiemachtigingen nauwkeurig wilt spiegelen en de beveiligingspostuur wilt verbeteren, kunt u in plaats daarvan toepassingsspecifieke service-principals maken voor lokale ontwikkeling. Deze identiteiten:
- Kan alleen de rollen en machtigingen worden toegewezen die de toepassing nodig heeft
- Ondersteuningsprincipe van minimale bevoegdheden
- Bieden consistent testen van toegangsgerelateerd gedrag in omgevingen
Ontwikkelaars kunnen de lokale omgeving configureren voor het gebruik van de service-principal via omgevingsvariabelen en DefaultAzureCredential
deze automatisch ophalen. Zie het artikel Python-apps verifiëren bij Azure-services tijdens lokale ontwikkeling met behulp van service-principals voor meer informatie.
1 - Microsoft Entra-beveiligingsgroep maken voor lokale ontwikkeling
In de meeste ontwikkelscenario's dragen meerdere ontwikkelaars bij aan dezelfde toepassing. Om het toegangsbeheer te stroomlijnen en consistente machtigingen in het hele team te garanderen, raden we u aan eerst een Microsoft Entra-beveiligingsgroep te maken die specifiek is bedoeld voor de lokale ontwikkelingsbehoeften van de toepassing.
Het toewijzen van Azure-rollen op groepsniveau, in plaats van aan afzonderlijke gebruikers, biedt verschillende belangrijke voordelen:
Consistente roltoewijzingen
Alle ontwikkelaars in de groep nemen automatisch dezelfde rollen en machtigingen over en zorgen voor een uniforme ontwikkelomgeving.
Vereenvoudigd rolbeheer
Wanneer voor de toepassing een nieuwe rol is vereist, hoeft u deze slechts eenmaal aan de groep toe te voegen. U hoeft geen afzonderlijke gebruikersmachtigingen bij te werken.
Eenvoudige onboarding
Nieuwe ontwikkelaars kunnen de benodigde machtigingen krijgen door ze toe te voegen aan de groep. Er zijn geen handmatige roltoewijzingen vereist.
Als uw organisatie al een geschikte Microsoft Entra-beveiligingsgroep voor het ontwikkelteam heeft, kunt u deze opnieuw gebruiken. Anders kunt u een nieuwe groep maken die specifiek is bedoeld voor de app.
Als u een beveiligingsgroep wilt maken in Microsoft Entra ID, gebruikt u de opdracht az ad group createe Azure CLI.
Voor deze opdracht zijn de volgende parameters vereist:
--display-name
: Een gebruiksvriendelijke naam voor de groep
--mail-nickname
: Een unieke id die wordt gebruikt voor e-mail en interne verwijzing
U wordt aangeraden de groepsnaam te baseren op de naam van de toepassing en om een achtervoegsel op te nemen, zoals -local-dev
, om duidelijk aan te geven wat het doel is.
#!/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>"
Nadat u de az ad group create
opdracht hebt uitgevoerd, kopieert u de waarde van de id
eigenschap uit de opdrachtuitvoer. U hebt de Object ID
Microsoft Entra-beveiligingsgroep nodig voor het toewijzen van rollen in latere stappen in dit artikel. Als u het Object ID
later opnieuw wilt ophalen, gebruikt u de volgende opdracht az ad group show : az ad group show --group "my-app-local-dev" --query id --output tsv
.
Als u een gebruiker aan de groep wilt toevoegen, moet u eerst het Object ID
Azure-gebruikersaccount verkrijgen dat u wilt toevoegen. Gebruik de opdracht az ad user list met de --filter
parameter om te zoeken naar een specifieke gebruiker op weergavenaam. De --query
parameter helpt de uitvoer te beperken tot relevante velden:
#!/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
Zodra u de Object ID
gebruiker hebt, kunt u deze toevoegen aan de groep met behulp van de opdracht 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>
Opmerking
Standaard is het maken van Microsoft Entra-beveiligingsgroepen beperkt tot bepaalde bevoorrechte rollen in een directory. Als u geen groep kunt maken, neemt u contact op met een beheerder voor uw adreslijst. Als u geen leden kunt toevoegen aan een bestaande groep, neemt u contact op met de groepseigenaar of een adreslijstbeheerder. Zie Microsoft Entra-groepen en groepslidmaatschap beheren voor meer informatie.
2 - Rollen toewijzen aan de Microsoft Entra-groep
Nadat u uw Microsoft Entra-beveiligingsgroep hebt gemaakt en leden hebt toegevoegd, moet u bepalen welke rollen (machtigingen) uw toepassing nodig heeft en deze rollen toewijzen aan de groep op het juiste bereik.
Vereiste rollen bepalen
Identificeer de rollen die uw app nodig heeft om te functioneren. Dit zijn enkele veel voorkomende voorbeelden:
- Key Vault Secrets User : geheimen lezen uit Azure Key Vault
- Inzender voor opslagwachtrijgegevens : berichten verzenden naar Azure Queue Storage
Raadpleeg de ingebouwde roldefinities voor meer opties.
Kies een toepassingsgebied voor de roltoewijzing
Rollen kunnen op verschillende niveaus worden toegewezen.
- Resourceniveau (bijvoorbeeld één Key Vault- of Storage-account)
- Resourcegroepniveau (aanbevolen voor de meeste apps)
- Abonnementsniveau (met voorzichtigheid gebruiken: breedste toegang)
In dit voorbeeld wijzen we rollen toe aan het bereik van de resourcegroep. Dit is gebruikelijk wanneer alle toepassingsresources onder één resourcegroep zijn gegroepeerd.
Aan een gebruiker, groep of toepassingsservice-principal wordt een rol toegewezen in Azure met behulp van de opdracht az role assignment create . U kunt een groep met zijn Object ID
opgeven.
#!/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>"
Gebruik de opdracht az role definition list om de rolnamen op te halen die kunnen worden toegewezen.
#!/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
Als u lees-, schrijf- en verwijdertoegang wilt verlenen tot Azure Storage-blobcontainers en -gegevens voor alle opslagaccounts in een specifieke resourcegroep, wijst u de rol Inzender voor opslagblobgegevens toe aan uw Microsoft Entra-beveiligingsgroep.
#!/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"
3- Meld u aan bij Azure met behulp van de Azure CLI, Azure PowerShell, Azure Developer CLI of in een browser
Kies een van de volgende methoden om te verifiëren met uw Azure-account:
Open een terminal op uw ontwikkelwerkstation en meld u aan bij Azure vanuit de Azure CLI-.
az login
4 - DefaultAzureCredential implementeren in uw toepassing
Als u Azure SDK-clientobjecten wilt verifiëren met Azure, moet uw toepassing de DefaultAzureCredential
klasse van het azure-identity
pakket gebruiken. Dit is de aanbevolen verificatiemethode voor zowel lokale ontwikkelings- als productie-implementaties.
In een lokaal ontwikkelingsscenario DefaultAzureCredential
werkt u door opeenvolgend te controleren op beschikbare verificatiebronnen. Het zoekt met name naar actieve sessies in de volgende hulpprogramma's:
- Azure CLI (az login)
- Azure PowerShell (Connect-AzAccount)
- Azure Developer CLI (azd auth login)
Als de ontwikkelaar is aangemeld bij Azure met behulp van een van deze hulpprogramma's, detecteert DefaultAzureCredential
automatisch de sessie en gebruikt deze inloggegevens om de toepassing te authentiseren met Azure-services. Hierdoor kunnen ontwikkelaars veilig verifiëren zonder geheimen op te slaan of code voor verschillende omgevingen te wijzigen.
Begin met het toevoegen van het pakket azure.identity aan uw toepassing.
pip install azure-identity
Vervolgens wilt u voor elke Python-code die een Azure SDK-clientobject maakt in uw app het volgende doen:
- Importeer de
DefaultAzureCredential
klasse uit deazure.identity
module. - Maak een
DefaultAzureCredential
object. - Geef het
DefaultAzureCredential
object door aan de objectconstructor van de Azure SDK-client.
Een voorbeeld van deze stappen wordt weergegeven in het volgende codesegment.
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)