Managed Identity til passwordløs godkendelse
Tildel en systemtildelt managed identity til en VM eller App Service, giv den RBAC-adgang til Key Vault og Blob Storage, og fjern secrets fra Deres applikationskode.
Managed Identity til passwordløs godkendelse er en gratis Cloud & IT Cert Prep-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Cloud & IT Cert Prep, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Cloud & IT Cert Prep-kurset indeholder 4 lektioner i alt.
Problemet med gemte legitimationsoplysninger
Traditionelt opretter applikationer forbindelse til Azure-tjenester som Storage eller Key Vault ved hjælp af forbindelsesstrenge eller API-nøgler, der gemmes i konfigurationsfiler eller miljøvariabler. Disse legitimationsoplysninger kan ved et uheld blive indsendt til kildekodestyring, eksponeret i logfiler eller stjålet ved et sikkerhedsbrud. Managed Identity fjerner behovet for, at applikationer overhovedet gemmer legitimationsoplysninger — i stedet udsteder og roterer Azure selv et token på vegne af ressourcen, og applikationen beder blot Azure om det aktuelle token under kørsel.
Hvad er Managed Identity?
En Managed Identity er en automatisk administreret service principal i Microsoft Entra ID, der er knyttet til en Azure-ressource (f.eks. en VM, App Service eller Function App). Azure-platformen opretter og vedligeholder identitetens legitimationsoplysninger — og roterer dem regelmæssigt — så din kode aldrig håndterer en adgangskode eller hemmelighed. Applikationer, der kører på ressourcen, kalder endpointet for Azure Instance Metadata Service (IMDS) på http://169.254.169.254 for at hente et kortlivet OAuth-token, som de derefter præsenterer for Azure-tjenester.
# 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'Systemtildelt kontra brugertildelt
Der findes to typer managed identity: Systemtildelt er knyttet til en enkelt Azure-ressource; den oprettes, når du aktiverer den på ressourcen, og slettes automatisk, når ressourcen slettes. Brugertildelt er en uafhængig Entra ID-identitet, som du opretter separat og derefter knytter til en eller flere Azure-ressourcer. Brugertildelte identiteter er nyttige, når flere tjenester (f.eks. flere Function Apps) skal dele den samme identitet og RBAC-tilladelser, så du undgår gentagne rolletildelinger.
# 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 mySharedIdentityTildeling af RBAC-tilladelser
Når du har aktiveret en managed identity, skal du give den RBAC-tilladelser på den målrettede Azure-ressource. Hvis en App Service f.eks. skal kunne læse blobs, skal du tildele rollen Storage Blob Data Reader til App Servicens managed identity på lagerkontoen. RBAC-tildelinger følger princippet om mindst mulige privilegier — giv kun de minimumstilladelser, der kræves. Tildel aldrig Owner eller Contributor til en managed identity, medmindre det er absolut nødvendigt.
# 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'Brug af DefaultAzureCredential i kode
Azure SDK indeholder en klasse ved navn DefaultAzureCredential, som automatisk prøver flere godkendelsesmetoder i rækkefølge: miljøvariabler, workload identity, managed identity, Azure CLI, Visual Studio og andre. Når din applikation kører i Azure (App Service, VM, Function App), bruger DefaultAzureCredential automatisk managed identity uden kodeændringer. Lokalt godkender udviklere sig via deres Azure CLI-session. Denne ene legitimationsklasse fungerer i alle miljøer uden betinget logik.
# 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
Et almindeligt mønster er at bruge en managed identity til at få adgang til hemmeligheder i Azure Key Vault under kørsel. I stedet for at gemme en databaseadgangskode i applikationsindstillinger gemmer du den i Key Vault og giver appens managed identity rollen Key Vault Secrets User på den pågældende vault. Ved opstart henter applikationen hemmeligheden fra Key Vault ved hjælp af DefaultAzureCredential. Dette mønster sikrer, at hemmeligheder aldrig gemmes i kode, konfigurationsfiler eller miljøvariabler — de findes kun i Key Vault og hentes midlertidigt.
# 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 til Azure SQL-adgang
Azure SQL Database understøtter Entra ID-godkendelse, hvilket betyder, at en managed identity kan godkende sig til SQL uden brugernavn og adgangskode. Sådan aktiverer du det: angiv en Entra ID-administrator på SQL-serveren, kør derefter en CREATE USER-sætning i måldatabasen for managed identity'ens visningsnavn, og giv den den relevante databaserolle. Applikationen opretter forbindelse ved hjælp af Azure SDK's DefaultAzureCredential og et adgangstoken, der er begrænset til https://database.windows.net/, helt uden adgangskode.
-- 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 til AKS-arbejdsbelastninger
I Azure Kubernetes Service kan individuelle pods hente managed identity-tokens ved hjælp af Workload Identity (efterfølgeren til AAD Pod Identity). Du opretter en brugertildelt managed identity, fødererer den med AKS' OIDC-udsteder, annoterer Kubernetes-tjenestekontoen, og Azure Workload Identity-webhooken indsætter de nødvendige miljøvariabler, så poddens DefaultAzureCredential kan hente et token. Dette udvider adgangskodefri godkendelse til containeriserede mikrotjenester uden at gemme hemmeligheder i Kubernetes Secrets-objekter.
# 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'Revision af Managed Identity-adgang
Selvom legitimationsoplysninger for managed identity er usynlige for udviklere, logges alle hændelser ved tokenudstedelse og ressourceadgang. Entra ID-logge til logon registrerer alle tokenanmodninger fra en managed identity, herunder den ressource, der tilgås, tidspunktet og om anmodningen lykkedes. Aktivitetslogge for Azure Storage og revisionslogge for Key Vault registrerer de specifikke handlinger, der udføres ved hjælp af tokenet. Disse logge er afgørende for sikkerhedsrevisioner og hændelsesundersøgelser, der involverer 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 tableOvergang fra forbindelsesstrenge
Hvis din applikation i øjeblikket bruger forbindelsesstrenge eller API-nøgler, kan du skifte til managed identity i tre trin: Trin 1 — Aktivér en managed identity på computerressourcen. Trin 2 — Tildel de relevante RBAC-roller til identiteten på hver målrettet tjeneste. Trin 3 — Opdater applikationskoden til at bruge DefaultAzureCredential i stedet for forbindelsesstrengen. Fjern forbindelsesstrengen fra App Service-konfigurationen og Key Vault, når overgangen er bekræftet. Denne overgang kan typisk gennemføres med minimale kodeændringer i moderne Azure SDK-applikationer.
Opsummering af sikkerhedsfordele
Managed Identity giver fire vigtige sikkerhedsfordele sammenlignet med godkendelse baseret på legitimationsoplysninger: Ingen lagring af legitimationsoplysninger — intet at stjæle eller komme til at indsende. Automatisk rotation — Azure roterer de underliggende certifikater uden nedetid. Begrænsede tilladelser — identiteter får kun de RBAC-roller, de har brug for, i overensstemmelse med princippet om mindst mulige privilegier. Fuld revisionsspor — alle adgangsforsøg logges i Entra ID og i den tilgåede tjenestes revisionslogge. For enhver ny Azure-tjenesteintegration bør managed identity være den foretrukne tilgang til godkendelse.
Hurtigt tjek
Test din forståelse af begreberne fra Microsoft Azure Fundamentals (AZ-900) i denne lektion.
Opsummering af lektionen
I denne lektion lærte du, at en administreret identitet eliminerer gemte legitimationsoplysninger ved at give Azure-ressourcer en automatisk administreret Entra ID-identitet, at DefaultAzureCredential i Azure SDK gennemsigtigt bruger en administreret identitet i Azure og udviklerlegitimationsoplysninger lokalt, og at RBAC-rolletildelinger på målservices styrer, hvad identiteten har adgang til. Næste gang undersøger vi Azure Service Bus til afkoblet meddelelsesudveksling mellem applikationskomponenter.
Lær Cloud & IT Cert Prep med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 150
- Lektioner
- 600
Ofte stillede spørgsmål
Er lektionen “Managed Identity til passwordløs godkendelse” gratis?
Ja — hele teksten til “Managed Identity til passwordløs godkendelse” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Cloud & IT Cert Prep-kurset, skal du opgradere til CoddyKit PRO. Cloud & IT Cert Prep-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Managed Identity til passwordløs godkendelse”?
Tildel en systemtildelt managed identity til en VM eller App Service, giv den RBAC-adgang til Key Vault og Blob Storage, og fjern secrets fra Deres applikationskode. Du øver dig i Cloud & IT Cert Prep med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Cloud & IT Cert Prep?
Der kræves ingen tidligere erfaring. Cloud & IT Cert Prep på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.
Hvor lang tid tager lektionen “Managed Identity til passwordløs godkendelse”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Cloud & IT Cert Prep-lektion?
Ja. Alle Cloud & IT Cert Prep-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Managed Identity til passwordløs godkendelse
- Azure Service Bus til afkoblet messaging
- Azure Container Apps
- Udviklerworkflow fra ende til anden