Cloud & IT Cert Prep · Lektion

Hanterad identitet för lösenordsfri autentisering

Tilldela en systemtilldelad hanterad identitet till en virtuell dator eller App Service, ge den RBAC-åtkomst till Key Vault och Blob Storage och ta bort hemligheter ur applikationskoden.

Lektion 1 av 413 steg

Hanterad identitet för lösenordsfri autentisering är en gratis lektion i Cloud & IT Cert Prep på CoddyKit. Detta är lektion 1 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Cloud & IT Cert Prep, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Cloud & IT Cert Prep innehåller totalt 4 lektioner.

Problemet med lagrade autentiseringsuppgifter

Traditionellt ansluter program till Azure-tjänster som Storage eller Key Vault med anslutningssträngar eller API-nycklar som lagras i konfigurationsfiler eller miljövariabler. Dessa autentiseringsuppgifter kan av misstag checkas in i källkodshanteringen, exponeras i loggar eller stjälas vid ett intrång. Managed Identity eliminerar behovet av att program lagrar autentiseringsuppgifter helt och hållet – i stället utfärdar och roterar Azure själv en token för resursens räkning, och programmet ber helt enkelt Azure om den aktuella tokenen vid körning.

Vad är Managed Identity?

En Managed Identity är ett automatiskt hanterat service principal i Microsoft Entra ID som är kopplat till en Azure-resurs, till exempel en VM, App Service eller Function App. Azure-plattformen skapar och underhåller identitetens autentiseringsuppgifter – och roterar dem regelbundet – så att Er kod aldrig hanterar ett lösenord eller en hemlighet. Program som körs på resursen anropar slutpunkten för Azure Instance Metadata Service (IMDS) på http://169.254.169.254 för att hämta en kortlivad OAuth-token, som de sedan presenterar för Azure-tjänster.

# Get a token from IMDS (runs inside an Azure VM or App Service)
curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://storage.azure.com/' \
  -H 'Metadata: true'

Systemtilldelad kontra användartilldelad

Det finns två typer av managed identity: System-assigned är knuten till en enda Azure-resurs. Den skapas när Ni aktiverar den på resursen och tas automatiskt bort när resursen tas bort. User-assigned är en fristående Entra ID-identitet som Ni skapar separat och sedan kopplar till en eller flera Azure-resurser. Användartilldelade identiteter är användbara när flera tjänster (till exempel flera Function Apps) behöver dela samma identitet och RBAC-behörigheter, eftersom dubblerade rolltilldelningar då kan undvikas.

# Enable system-assigned managed identity on an App Service
az webapp identity assign \
  --resource-group myRG \
  --name myWebApp

# Create and assign a user-assigned identity
az identity create --name mySharedIdentity --resource-group myRG
az webapp identity assign \
  --resource-group myRG \
  --name myWebApp \
  --identities mySharedIdentity

Bevilja RBAC-behörigheter

När Ni har aktiverat en managed identity måste Ni bevilja den RBAC-behörigheter på Azure-resursen i fråga. Om Ni till exempel vill tillåta att en App Service läser blobbar tilldelar Ni rollen Storage Blob Data Reader till App Servicens managed identity på lagringskontot. RBAC-tilldelningar följer principen om minsta privilegium – bevilja endast de minsta behörigheter som krävs. Tilldela aldrig Owner eller Contributor till en managed identity om det inte är absolut nödvändigt.

# Get the managed identity object ID
PRINCIPAL_ID=$(az webapp identity show \
  --resource-group myRG --name myWebApp \
  --query principalId --output tsv)

# Assign Storage Blob Data Reader role
az role assignment create \
  --assignee $PRINCIPAL_ID \
  --role 'Storage Blob Data Reader' \
  --scope '/subscriptions/<sub>/resourceGroups/myRG/providers/Microsoft.Storage/storageAccounts/mystorageacct'

Använda DefaultAzureCredential i kod

Azure SDK tillhandahåller klassen DefaultAzureCredential, som automatiskt provar flera autentiseringsmetoder i ordning: miljövariabler, workload identity, managed identity, Azure CLI, Visual Studio med flera. När programmet körs i Azure (App Service, VM eller Function App) använder DefaultAzureCredential automatiskt managed identity utan några kodändringar. Lokalt autentiserar utvecklare sig via sin Azure CLI-session. Denna enda autentiseringsklass fungerar i alla miljöer utan villkorslogik.

# Python example using DefaultAzureCredential
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient

credential = DefaultAzureCredential()
client = BlobServiceClient(
  account_url='https://mystorageacct.blob.core.windows.net',
  credential=credential
)
blobs = client.get_container_client('mycontainer').list_blobs()
for blob in blobs:
    print(blob.name)

Managed Identity med Azure Key Vault

Ett vanligt mönster är att använda en managed identity för att komma åt hemligheter i Azure Key Vault under körning. I stället för att lagra ett databaslösenord i programinställningarna lagrar Ni det i Key Vault och ger appens managed identity rollen Key Vault Secrets User i det valvet. Vid starten hämtar programmet hemligheten från Key Vault med DefaultAzureCredential. Detta mönster säkerställer att hemligheter aldrig lagras i kod, konfigurationsfiler eller miljövariabler – de finns endast i Key Vault och hämtas tillfälligt.

# Python: Read a Key Vault secret using managed identity
from azure.identity import DefaultAzureCredential
from azure.keyvault.secrets import SecretClient

credential = DefaultAzureCredential()
client = SecretClient(
  vault_url='https://mykeyvault.vault.azure.net/',
  credential=credential
)
secret = client.get_secret('DatabasePassword')
print('Secret value retrieved successfully')

Managed Identity för åtkomst till Azure SQL

Azure SQL Database stöder Entra ID-autentisering, vilket innebär att en managed identity kan autentisera mot SQL utan användarnamn och lösenord. Aktivera detta genom att ange en Entra ID-administratör på SQL-servern, köra en CREATE USER-instruktion i måldatabasen för managed identity-identitetens visningsnamn och tilldela den lämplig databasroll. Programmet ansluter med Azure SDK:s DefaultAzureCredential och en åtkomsttoken med omfånget https://database.windows.net/, helt utan lösenord.

-- In Azure SQL: create a user for the managed identity
CREATE USER [myWebApp] FROM EXTERNAL PROVIDER;
ALTER ROLE db_datareader ADD MEMBER [myWebApp];
ALTER ROLE db_datawriter ADD MEMBER [myWebApp];

Managed Identity för AKS-arbetsbelastningar

I Azure Kubernetes Service kan enskilda pods hämta managed identity-tokens med hjälp av Workload Identity (efterföljaren till AAD Pod Identity). Ni skapar en användartilldelad managed identity, federerar den med AKS OIDC-utfärdaren, annoterar Kubernetes-tjänstkontot och låter Azure Workload Identity-webhooken injicera nödvändiga miljövariabler så att poddens DefaultAzureCredential kan hämta en token. Detta utökar lösenordsfri autentisering till containeriserade mikrotjänster utan att hemligheter behöver lagras i Kubernetes Secrets-objekt.

# Create federated identity credential for AKS workload identity
az identity federated-credential create \
  --name myFederatedCredential \
  --identity-name mySharedIdentity \
  --resource-group myRG \
  --issuer $(az aks show --resource-group myRG --name myAKS --query 'oidcIssuerProfile.issuerUrl' -o tsv) \
  --subject 'system:serviceaccount:default:myapp-sa' \
  --audiences 'api://AzureADTokenExchange'

Granska åtkomst med Managed Identity

Även om autentiseringsuppgifterna för managed identity är osynliga för utvecklare loggas alla händelser för tokenutfärdande och resursåtkomst. Entra ID-inloggningsloggar registrerar varje tokenbegäran från en managed identity, inklusive vilken resurs som används, tidpunkten och om begäran lyckades. Aktivitetsloggar för Azure Storage och granskningsloggar för Key Vault registrerar de specifika åtgärder som utförts med tokenen. Dessa loggar är nödvändiga vid säkerhetsgranskningar och incidentutredningar som rör managed identities.

# Query Entra ID sign-in logs for a managed identity
az monitor activity-log list \
  --resource-group myRG \
  --caller myWebApp \
  --start-time 2024-06-01 \
  --output table

Migrera från anslutningssträngar

Om programmet för närvarande använder anslutningssträngar eller API-nycklar migrerar Ni till managed identity i tre steg: Steg 1 – Aktivera en managed identity på beräkningsresursen. Steg 2 – Tilldela identiteten lämpliga RBAC-roller på varje måltjänst. Steg 3 – Uppdatera programkoden så att den använder DefaultAzureCredential i stället för anslutningssträngen. Ta bort anslutningssträngen från App Service-konfigurationen och Key Vault när Ni har verifierat migreringen. I moderna Azure SDK-program kan denna migrering vanligtvis genomföras med minimala kodändringar.

Sammanfattning av säkerhetsfördelar

Managed Identity ger fyra viktiga säkerhetsfördelar jämfört med autentisering baserad på autentiseringsuppgifter: Ingen lagring av autentiseringsuppgifter – inget kan stjälas eller råka checkas in. Automatisk rotation – Azure roterar de underliggande certifikaten utan driftstopp. Begränsade behörigheter – identiteter tilldelas endast de RBAC-roller de behöver enligt principen om minsta privilegium. Fullständig granskningskedja – alla åtkomstförsök loggas i Entra ID och i den åtkomstade tjänstens granskningsloggar. För alla nya Azure-tjänsteintegrationer bör managed identity vara standardmetoden för autentisering.

Snabbkontroll

Testa dina kunskaper om koncepten i Microsoft Azure Fundamentals (AZ-900) från den här lektionen.

Sammanfattning av lektionen

I den här lektionen lärde du dig följande: hanterad identitet eliminerar lagrade autentiseringsuppgifter genom att ge Azure-resurser en automatiskt hanterad identitet i Entra ID, DefaultAzureCredential i Azure SDK använder transparent hanterad identitet i Azure och utvecklarautentiseringsuppgifter lokalt, och RBAC-rolltilldelningar på måltjänster styr vad identiteten får åtkomst till. Härnäst utforskar vi Azure Service Bus för frikopplad meddelandekommunikation mellan programkomponenter.

Gratis att börja

Lär dig Cloud & IT Cert Prep med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
150
Lektioner
600

Vanliga frågor

Är lektionen ”Hanterad identitet för lösenordsfri autentisering” gratis?

Ja – hela texten till ”Hanterad identitet för lösenordsfri autentisering” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Cloud & IT Cert Prep, kan Ni uppgradera till CoddyKit PRO. Kursen i Cloud & IT Cert Prep innehåller totalt 4 lektioner.

Vad lär jag mig i ”Hanterad identitet för lösenordsfri autentisering”?

Tilldela en systemtilldelad hanterad identitet till en virtuell dator eller App Service, ge den RBAC-åtkomst till Key Vault och Blob Storage och ta bort hemligheter ur applikationskoden. Ni övar på Cloud & IT Cert Prep med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Cloud & IT Cert Prep?

Du behöver inga förkunskaper. Utbildningen i Cloud & IT Cert Prep på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.

Hur lång tid tar lektionen ”Hanterad identitet för lösenordsfri autentisering”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Cloud & IT Cert Prep-lektionen?

Ja. Varje Cloud & IT Cert Prep-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Hanterad identitet för lösenordsfri autentisering
  2. Azure Service Bus för frikopplad meddelandehantering
  3. Azure Container Apps
  4. Utvecklararbetsflöde från början till slut
← Tillbaka till Cloud & IT Cert Prep