Autentisera Python-appar till Azure-tjänster under lokal utveckling med hjälp av utvecklarkonton

När utvecklare skapar molnprogram felsöker de vanligtvis och testar program på sin lokala arbetsstation. När ett program körs på en utvecklares arbetsstation under den lokala utvecklingen måste det fortfarande autentiseras mot alla Azure-tjänster som används av appen. Den här artikeln beskriver hur du använder en utvecklares Azure-autentiseringsuppgifter för att autentisera appen till Azure under den lokala utvecklingen.

Ett diagram som visar hur en Python-app under lokal utveckling använder utvecklarnas autentiseringsuppgifter för att ansluta till Azure genom att hämta dessa autentiseringsuppgifter från lokalt installerade utvecklingsverktyg.

För att en app ska kunna autentisera till Azure under lokal utveckling med utvecklarens Azure-autentiseringsuppgifter måste en utvecklare loggas in på Azure från Azure CLI, Azure PowerShell eller Azure Developer CLI. Azure SDK för Python kan identifiera att utvecklaren är inloggad från något av dessa verktyg och sedan hämta nödvändiga autentiseringsuppgifter från cacheminnet för autentiseringsuppgifter för att autentisera appen till Azure som inloggad användare.

Den här metoden är enklast att konfigurera för ett utvecklingsteam eftersom den utnyttjar utvecklarnas befintliga Azure-konton. En utvecklares konto kommer dock sannolikt att ha fler behörigheter än vad som krävs av programmet, vilket överskrider de behörigheter som appen kommer att köras med i produktion. Alternativt kan du skapa huvudnamn för programtjänsten som ska användas under den lokala utvecklingen, vilket kan begränsas till att endast ha den åtkomst som krävs av appen.

1 – Skapa Microsoft Entra-säkerhetsgrupp för lokal utveckling

Eftersom det nästan alltid finns flera utvecklare som arbetar med ett program rekommenderar vi att du först skapar en Microsoft Entra-säkerhetsgrupp för att kapsla in de roller (behörigheter) som appen behöver i den lokala utvecklingen. Den här metoden erbjuder följande fördelar.

  • Varje utvecklare är säker på att ha samma roller tilldelade eftersom roller tilldelas på gruppnivå.
  • Om en ny roll behövs för appen behöver den bara läggas till i Microsoft Entra-gruppen för appen.
  • Om en ny utvecklare ansluter till teamet måste de helt enkelt läggas till i rätt Microsoft Entra-grupp för att få rätt behörighet att arbeta med appen.

Om du har en befintlig Microsoft Entra-säkerhetsgrupp för ditt utvecklingsteam kan du använda den gruppen. I annat fall utför du följande steg för att skapa en Microsoft Entra-säkerhetsgrupp.

Kommandot az ad group create används för att skapa grupper i Microsoft Entra-ID. Parametrarna --display-name och --main-nickname krävs. Namnet som ges till gruppen ska baseras på namnet på programmet. Det är också användbart att inkludera en fras som "local-dev" i gruppens namn för att ange syftet med gruppen.

az ad group create \
    --display-name MyDisplay \
    --mail-nickname MyDisplay  \
    --description "<group-description>"

Kopiera värdet för id egenskapen i kommandots utdata. Det här är objekt-ID:t för gruppen. Du behöver det i senare steg. Du kan också använda kommandot az ad group show för att hämta den här egenskapen.

Om du vill lägga till medlemmar i gruppen behöver du objekt-ID för Azure-användare. Använd listan az ad-användare för att lista de tillgängliga tjänstens huvudnamn. Parameterkommandot --filter accepterar OData-formatfilter och kan användas för att filtrera listan på användarens visningsnamn som det visas. Parametern --query begränsar utdata till kolumner av intresse.

az ad user list \
    --filter "startswith(displayName, 'Bob')" \
    --query "[].{objectId:id, displayName:displayName}" \
    --output table

Kommandot az ad group member add kan sedan användas för att lägga till medlemmar i grupper.

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

Därefter måste du bestämma vilka roller (behörigheter) din app behöver på vilka resurser och tilldela dessa roller till din app. I det här exemplet tilldelas rollerna till den Microsoft Entra-grupp som skapades i steg 1. Roller kan tilldelas i ett resurs-, resursgrupps- eller prenumerationsomfång. Det här exemplet visar hur du tilldelar roller i resursgruppens omfång eftersom de flesta program grupperar alla sina Azure-resurser i en enda 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 objekt-ID.

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 .

az role definition list --query "sort_by([].{roleName:roleName, description:description}, &roleName)" --output table

Om du till exempel vill tillåta medlemmar i en grupp med ett objekt-ID 00000000-0000-0000-0000-000000000000 för läs-, skriv- och borttagningsåtkomst till Azure Storage-blobcontainrar och data i alla lagringskonton i resursgruppen msdocs-python-sdk-auth-example i prenumerationen med ID 11111111-1111-1111-1111-111111111111, tilldelar du rollen Storage Blob Data Contributor till gruppen med hjälp av följande kommando.

az role assignment create --assignee 00000000-0000-0000-0000-000000000000 \
    --scope /subscriptions/11111111-1111-1111-1111-111111111111/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

Öppna en terminal på utvecklararbetsstationen och logga in på Azure från Azure CLI.

az login

4 – Implementera DefaultAzureCredential i ditt program

Om du vill autentisera DefaultAzureCredential Azure SDK-klientobjekt till Azure bör ditt program använda klassen från azure.identity paketet. I det här scenariot DefaultAzureCredential kontrollerar sekventiellt om utvecklaren har loggat in på Azure med hjälp av Azure CLI, Azure PowerShell eller Azure Developer CLI. Om utvecklaren är inloggad i Azure med något av dessa verktyg används de autentiseringsuppgifter som används för att logga in på verktyget av appen för att autentisera till Azure.

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:

  1. DefaultAzureCredential Importera klassen från modulenazure.identity.
  2. Skapa ett DefaultAzureCredential objekt.
  3. Skicka objektet DefaultAzureCredential till 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)