Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
När utvecklare utvecklar molnprogram skapar, testar och felsöker de vanligtvis sin kod lokalt innan de distribuerar den till Azure. Men även under den lokala utvecklingen måste programmet autentiseras med alla Azure-tjänster som det interagerar med, till exempel Key Vault, Storage eller databaser.
Den här artikeln visar hur du konfigurerar ditt program så att det använder utvecklarens Azure-autentiseringsuppgifter för autentisering under den lokala utvecklingen. Den här metoden möjliggör en sömlös och säker utvecklingsupplevelse utan att bädda in hemligheter eller skriva miljöspecifik logik.
Översikt över autentisering för lokal utveckling med hjälp av utvecklarkonton
När du utvecklar ett program som använder Azure Identity-biblioteket för Python kan du autentisera till Azure-tjänster under lokal utveckling med hjälp av utvecklarens Azure-konto. Den här metoden är ofta det enklaste sättet att autentisera till Azure-tjänster under lokal utveckling eftersom det inte kräver att du skapar och hanterar tjänstens huvudnamn eller hemligheter.
              
               
              
              
            
För att göra det möjligt för ett program att autentisera till Azure under lokal utveckling med hjälp av utvecklarens egna Azure-autentiseringsuppgifter måste utvecklaren först logga in med något av de kommandoradsverktyg som stöds:
- Azure CLI (az login)
- Azure Developer CLI (azd login)
- Azure PowerShell (Connect-AzAccount)
När du har loggat in kan Azure Identity-biblioteket för Python automatiskt identifiera den aktiva sessionen och hämta nödvändiga token från cacheminnet för autentiseringsuppgifter. Med den här funktionen kan appen autentisera till Azure-tjänster som den inloggade användaren, utan att kräva någon ytterligare konfiguration eller hårdkodade hemligheter.
Det här beteendet aktiveras när du använder DefaultAzureCredential, vilket transparent återgår till CLI-baserade autentiseringsuppgifter i lokala miljöer.
Att använda en utvecklares inloggade Azure-autentiseringsuppgifter är den enklaste konfigurationen för lokal utveckling. Det utnyttjar varje gruppmedlems befintliga Azure-konto, vilket ger sömlös åtkomst till Azure-tjänster utan att kräva ytterligare konfiguration.
Utvecklarkonton har dock vanligtvis bredare behörigheter än vad programmet ska ha i produktion. Dessa bredare behörigheter kan leda till inkonsekvenser i testningen eller oavsiktligt tillåta åtgärder som appen inte skulle ha behörighet att utföra i en produktionsmiljö. Om du vill spegla produktionsbehörigheter och förbättra säkerhetsstatusen kan du i stället skapa programspecifika tjänsthuvudnamn för lokal utveckling. Dessa identiteter:
- Kan endast tilldelas de roller och behörigheter som programmet behöver
- Stödprincip för lägsta behörighet
- Erbjuda konsekvent testning av åtkomstrelaterat beteende i olika miljöer
Utvecklare kan konfigurera den lokala miljön så att den använder tjänstens huvudnamn via miljövariabler och DefaultAzureCredential hämtar den automatiskt. Mer information finns i artikeln Autentisera Python-appar till Azure-tjänster under lokal utveckling med hjälp av tjänstens huvudnamn.
1 – Skapa Microsoft Entra-säkerhetsgrupp för lokal utveckling
I de flesta utvecklingsscenarier bidrar flera utvecklare till samma program. För att effektivisera åtkomstkontrollen och säkerställa konsekventa behörigheter i hela teamet rekommenderar vi att du först skapar en Microsoft Entra-säkerhetsgrupp specifikt för programmets lokala utvecklingsbehov.
Att tilldela Azure-roller på gruppnivå – i stället för till enskilda användare – ger flera viktiga fördelar:
- Konsekventa rolltilldelningar - Alla utvecklare i gruppen ärver automatiskt samma roller och behörigheter, vilket säkerställer en enhetlig utvecklingsmiljö. 
- Förenklad rollhantering - När programmet kräver en ny roll behöver du bara lägga till den en gång i gruppen. Du behöver inte uppdatera enskilda användarbehörigheter. 
- Enkel registrering - Nya utvecklare kan beviljas nödvändiga behörigheter genom att lägga till dem i gruppen. Inga manuella rolltilldelningar krävs. 
Om din organisation redan har en lämplig Microsoft Entra-säkerhetsgrupp för utvecklingsteamet kan du återanvända den. Annars kan du skapa en ny grupp specifikt för appen.
Om du vill skapa en säkerhetsgrupp i Microsoft Entra-ID använder du kommandot az ad group createe Azure CLI.
Det här kommandot kräver följande parametrar:
              --display-name: Ett användarvänligt namn för gruppen
              --mail-nickname: En unik identifierare som används för e-post och intern referens
Vi rekommenderar att du baserar gruppnamnet på programnamnet och inkluderar ett suffix som -local-dev tydligt anger dess syfte.
#!/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>"
När du har kört az ad group create kommandot kopierar du värdet för id egenskapen från kommandoutdata. Du behöver Object ID för Microsoft Entra-säkerhetsgruppen för att tilldela roller i senare steg i den här artikeln. Om du vill hämta Object ID igen senare använder du följande az ad group show-kommando : az ad group show --group "my-app-local-dev" --query id --output tsv.
Om du vill lägga till en användare i gruppen måste du först hämta det Object ID Azure-användarkonto som du vill lägga till. Använd kommandot az ad user list med parametern --filter för att söka efter en specifik användare efter visningsnamn. Parametern --query hjälper till att begränsa utdata till relevanta fält:
#!/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
När du har användarens Object ID, kan du lägga till den i gruppen med kommandot 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>
Kommentar
Som standard är skapandet av Microsoft Entra-säkerhetsgrupper begränsat till vissa privilegierade roller i en katalog. Om du inte kan skapa en grupp kontaktar du en administratör för din katalog. Om du inte kan lägga till medlemmar i en befintlig grupp kontaktar du gruppägaren eller en katalogadministratör. Mer information finns i Hantera Microsoft Entra-grupper och gruppmedlemskap.
2 – Tilldela roller till Microsoft Entra-gruppen
När du har skapat din Microsoft Entra-säkerhetsgrupp och lagt till medlemmar är nästa steg att avgöra vilka roller (behörigheter) som krävs för ditt program och tilldela dessa roller till gruppen efter lämpligt omfång.
- Fastställa nödvändiga roller - Identifiera de roller som din app behöver för att fungera. Vanliga exempel är: - Key Vault Secrets User – för att läsa hemligheter från Azure Key Vault
- Lagringsködatadeltagare – för att skicka meddelanden till Azure Queue Storage
 - Se de inbyggda rolldefinitionerna för fler alternativ. 
- Välj ett omfång för rolltilldelningen - Roller kan tilldelas i olika omfång: - Resursnivå (t.ex. ett enda Key Vault- eller Storage-konto)
- Resursgruppsnivå (rekommenderas för de flesta appar)
- Prenumerationsnivå (använd med försiktighet – bredast åtkomst)
 
I det här exemplet tilldelar vi roller i resursgruppens omfång, vilket är typiskt när alla programresurser grupperas under en resursgrupp.
En användare, grupp eller programtjänsthuvudnamn tilldelas en roll i Azure med kommandot az role assignment create . Du kan ange en grupp med dess 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>"
Om du vill hämta de rollnamn som kan tilldelas använder du kommandot 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
Om du vill bevilja läs-, skriv- och borttagningsåtkomst till Azure Storage-blobcontainrar och data för alla lagringskonton i en specifik resursgrupp tilldelar du rollen Storage Blob Data Contributor till din Microsoft Entra-säkerhetsgrupp.
#!/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"
Information om hur du tilldelar behörigheter på resurs- eller prenumerationsnivå med hjälp av Azure CLI finns i artikeln Tilldela Azure-roller med Hjälp av Azure CLI.
3 – Logga in på Azure med hjälp av Azure CLI, Azure PowerShell, Azure Developer CLI eller i en webbläsare
Om du vill autentisera med ditt Azure-konto väljer du någon av följande metoder:
Öppna en terminal på utvecklararbetsstationen och logga in på Azure från Azure CLI.
az login
4 – Implementera DefaultAzureCredential i ditt program
För att autentisera DefaultAzureCredential Azure SDK-klientobjekt med Azure bör ditt program använda klassen från azure-identity paketet. Det här är den rekommenderade autentiseringsmetoden för både lokala utvecklings- och produktionsdistributioner.
I ett scenario med lokal utveckling fungerar DefaultAzureCredential genom att sekventiellt söka efter tillgängliga autentiseringskällor. Mer specifikt letar den efter aktiva sessioner i följande verktyg:
- Azure CLI (az login)
- Azure PowerShell (Connect-AzAccount)
- Azure Developer CLI (azd auth login)
Om utvecklaren är inloggad i Azure med något av dessa verktyg DefaultAzureCredential identifierar den automatiskt sessionen och använder dessa autentiseringsuppgifter för att autentisera programmet med Azure-tjänster. På så sätt kan utvecklare autentisera på ett säkert sätt utan att lagra hemligheter eller ändra kod för olika miljöer.
Börja med att lägga till paketet azure.identity i ditt program.
pip install azure-identity
För alla Python-kod som skapar ett Azure SDK-klientobjekt i din app vill du sedan:
- 
              DefaultAzureCredentialImportera klassen från modulenazure.identity.
- Skapa ett DefaultAzureCredentialobjekt.
- Skicka objektet DefaultAzureCredentialtill Azure SDK-klientobjektkonstruktorn.
Ett exempel på dessa steg visas i följande kodsegment.
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)
 
              
               
              
               
              
               
              
               
              
               
              
               
              
               
              
               
              
               
              
               
              
               
              
              