0Pricing
Azure Fundamentals · Lektion

Verwaltete Identität für kennwortlose Authentifizierung

Weisen Sie einer VM oder einem App Service eine systemseitig zugewiesene verwaltete Identität zu, gewähren Sie ihr RBAC-Zugriff auf Key Vault und Blob Storage und entfernen Sie Geheimnisse aus Ihrem Anwendungscode.

Verwaltete Identität für kennwortlose Authentifizierung ist eine kostenlose Azure Fundamentals-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Azure Fundamentals-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Azure Fundamentals-Kurs umfasst insgesamt 4 Lektionen.

Das Problem mit gespeicherten Anmeldeinformationen

Traditionell verbinden sich Anwendungen mit Azure-Diensten wie Storage oder Key Vault über Verbindungszeichenfolgen oder API-Schlüssel, die in Konfigurationsdateien oder Umgebungsvariablen gespeichert werden. Diese Anmeldeinformationen können versehentlich in die Quellcodeverwaltung übernommen, in Protokollen offengelegt oder bei einem Sicherheitsvorfall gestohlen werden. Managed Identity macht es überflüssig, dass Anwendungen überhaupt Anmeldeinformationen speichern. Stattdessen stellt Azure selbst im Namen der Ressource ein Token aus und erneuert es, während die Anwendung Azure zur Laufzeit einfach nach dem aktuellen Token fragt.

Was ist eine Managed Identity?

Eine Managed Identity ist ein automatisch verwalteter service principal in Microsoft Entra ID, der mit einer Azure-Ressource (z. B. einer VM, einem App Service oder einer Function App) verknüpft ist. Die Azure-Plattform erstellt und verwaltet die Anmeldeinformationen der Identität und erneuert sie regelmäßig, sodass Ihr Code niemals ein Kennwort oder Geheimnis verarbeitet. Anwendungen, die auf der Ressource ausgeführt werden, rufen den Endpunkt des Azure Instance Metadata Service (IMDS) unter http://169.254.169.254 auf, um ein kurzlebiges OAuth-Token zu erhalten, das sie anschließend bei Azure-Diensten vorlegen.

# 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'

Systemseitig zugewiesen vs. benutzerseitig zugewiesen

Es gibt zwei Arten verwalteter Identitäten: System-assigned ist an eine einzelne Azure-Ressource gebunden. Sie wird erstellt, wenn Sie sie für die Ressource aktivieren, und automatisch gelöscht, wenn die Ressource gelöscht wird. User-assigned ist eine unabhängige Entra ID-Identität, die Sie separat erstellen und anschließend einer oder mehreren Azure-Ressourcen zuordnen. Benutzerseitig zugewiesene Identitäten sind nützlich, wenn mehrere Dienste (z. B. mehrere Function Apps) dieselbe Identität und dieselben RBAC-Berechtigungen gemeinsam verwenden müssen, da dadurch doppelte Rollenzuweisungen vermieden werden.

# 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

RBAC-Berechtigungen gewähren

Nachdem Sie eine Managed Identity aktiviert haben, müssen Sie ihr RBAC-Berechtigungen für die betreffende Azure-Ressource gewähren. Um beispielsweise einem App Service das Lesen von Blobs zu erlauben, weisen Sie der Managed Identity des App Service für das Speicherkonto die Rolle Storage Blob Data Reader zu. RBAC-Zuweisungen folgen dem Prinzip der geringsten Berechtigung. Gewähren Sie nur die mindestens erforderlichen Berechtigungen. Weisen Sie einer Managed Identity niemals Owner oder Contributor zu, sofern dies nicht unbedingt erforderlich ist.

# 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'

DefaultAzureCredential im Code verwenden

Das Azure SDK stellt eine Klasse namens DefaultAzureCredential bereit, die automatisch mehrere Authentifizierungsmethoden in einer festgelegten Reihenfolge ausprobiert: Umgebungsvariablen, Workload Identity, Managed Identity, Azure CLI, Visual Studio und weitere. Wenn Ihre Anwendung in Azure ausgeführt wird (App Service, VM, Function App), verwendet DefaultAzureCredential automatisch die Managed Identity, ohne dass Codeänderungen erforderlich sind. Lokal authentifizieren sich Entwickler über ihre Azure CLI-Sitzung. Diese einzelne Anmeldeinformationsklasse funktioniert in allen Umgebungen ohne bedingte 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 mit Azure Key Vault

Ein gängiges Muster besteht darin, über eine Managed Identity zur Laufzeit auf Geheimnisse in Azure Key Vault zuzugreifen. Anstatt ein Datenbankkennwort in den Anwendungseinstellungen zu speichern, legen Sie es in Key Vault ab und weisen der Managed Identity der Anwendung für diesen Tresor die Rolle Key Vault Secrets User zu. Beim Start ruft die Anwendung das Geheimnis mithilfe von DefaultAzureCredential aus Key Vault ab. Dadurch werden Geheimnisse niemals im Code, in Konfigurationsdateien oder in Umgebungsvariablen gespeichert. Sie existieren ausschließlich in Key Vault und werden nur vorübergehend abgerufen.

# 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 den Zugriff auf Azure SQL

Azure SQL Database unterstützt die Entra ID-Authentifizierung. Das bedeutet, dass sich eine Managed Identity ohne Benutzername und Kennwort bei SQL authentifizieren kann. Aktivieren Sie dazu zunächst einen Entra ID-Administrator auf dem SQL-Server. Führen Sie anschließend in der Zieldatenbank eine CREATE USER-Anweisung für den Anzeigenamen der Managed Identity aus und gewähren Sie ihr die passende Datenbankrolle. Die Anwendung stellt mithilfe des Azure SDKs und DefaultAzureCredential eine Verbindung her und verwendet dabei ein auf https://database.windows.net/ begrenztes Zugriffstoken, vollständig ohne Kennwort.

-- 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-Workloads

In Azure Kubernetes Service können einzelne Pods mithilfe von Workload Identity (dem Nachfolger von AAD Pod Identity) Managed-Identity-Token abrufen. Sie erstellen eine benutzerseitig zugewiesene Managed Identity, föderieren sie mit dem AKS-OIDC-Aussteller, annotieren das Kubernetes-Dienstkonto, und der Azure Workload Identity-WebHook injiziert die erforderlichen Umgebungsvariablen, damit DefaultAzureCredential des Pods ein Token abrufen kann. Dadurch wird die kennwortlose Authentifizierung auf containerisierte Microservices erweitert, ohne Geheimnisse in Kubernetes-Secrets-Objekten zu speichern.

# 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'

Zugriffe über Managed Identity überwachen

Obwohl die Anmeldeinformationen einer Managed Identity für Entwickler unsichtbar sind, werden alle Ereignisse zur Tokenausstellung und zum Ressourcenzugriff protokolliert. Entra ID-Anmeldeprotokolle erfassen jede Tokenanforderung einer Managed Identity, einschließlich der aufgerufenen Ressource, des Zeitpunkts und des Erfolgs der Anforderung. Aktivitätsprotokolle von Azure Storage und Überwachungsprotokolle von Key Vault erfassen die konkreten Vorgänge, die mit dem Token ausgeführt wurden. Diese Protokolle sind für Sicherheitsüberprüfungen und Untersuchungen von Sicherheitsvorfällen im Zusammenhang mit Managed Identities unerlässlich.

# 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

Von Verbindungszeichenfolgen migrieren

Wenn Ihre Anwendung derzeit Verbindungszeichenfolgen oder API-Schlüssel verwendet, migrieren Sie in drei Schritten zu Managed Identity: Schritt 1 – Aktivieren Sie eine Managed Identity für die Compute-Ressource. Schritt 2 – Weisen Sie der Identität für jeden Zieldienst die passenden RBAC-Rollen zu. Schritt 3 – Aktualisieren Sie den Anwendungscode so, dass er anstelle der Verbindungszeichenfolge DefaultAzureCredential verwendet. Entfernen Sie die Verbindungszeichenfolge aus der App Service-Konfiguration und aus Key Vault, sobald die Migration überprüft wurde. Diese Migration lässt sich in modernen Azure SDK-Anwendungen in der Regel mit geringfügigen Codeänderungen durchführen.

Zusammenfassung der Sicherheitsvorteile

Managed Identity bietet gegenüber der authentifizierungsbasierten Verwendung von Anmeldeinformationen vier wesentliche Sicherheitsvorteile: Keine Speicherung von Anmeldeinformationen – Es gibt nichts zu stehlen oder versehentlich zu übernehmen. Automatische Erneuerung – Azure erneuert die zugrunde liegenden Zertifikate ohne Ausfallzeit. Begrenzte Berechtigungen – Identitäten erhalten nur die benötigten RBAC-Rollen gemäß dem Prinzip der geringsten Berechtigung. Vollständiger Überwachungspfad – Alle Zugriffsversuche werden in Entra ID und den Überwachungsprotokollen des aufgerufenen Dienstes protokolliert. Für jede neue Integration eines Azure-Dienstes sollte Managed Identity der standardmäßige Authentifizierungsansatz sein.

Kurzer Test

Testen Sie Ihr Verständnis der Konzepte aus dieser Lektion zu Microsoft Azure Fundamentals (AZ-900).

Zusammenfassung der Lektion

In dieser Lektion haben Sie Folgendes gelernt: Eine verwaltete Identität macht gespeicherte Anmeldeinformationen überflüssig, indem sie Azure-Ressourcen eine automatisch verwaltete Entra ID-Identität zuweist. DefaultAzureCredential im Azure SDK verwendet in Azure transparent die verwaltete Identität und lokal die Anmeldeinformationen der Entwicklung. RBAC-Rollenzuweisungen bei den Zieldiensten steuern, worauf die Identität zugreifen kann. Als Nächstes sehen wir uns Azure Service Bus für die entkoppelte Nachrichtenübermittlung zwischen Anwendungskomponenten an.

Häufig gestellte Fragen

Ist die Lektion „Verwaltete Identität für kennwortlose Authentifizierung“ kostenlos?

Ja — der vollständige Text von „Verwaltete Identität für kennwortlose Authentifizierung“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Azure Fundamentals-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Azure Fundamentals-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Verwaltete Identität für kennwortlose Authentifizierung“?

Weisen Sie einer VM oder einem App Service eine systemseitig zugewiesene verwaltete Identität zu, gewähren Sie ihr RBAC-Zugriff auf Key Vault und Blob Storage und entfernen Sie Geheimnisse aus Ihrem… Du übst Azure Fundamentals mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Azure Fundamentals zu starten?

Keine Vorkenntnisse erforderlich. Azure Fundamentals auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.

Wie lange dauert die Lektion „Verwaltete Identität für kennwortlose Authentifizierung“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Azure Fundamentals-Lektion Code schreiben und ausführen?

Ja. Jede Azure Fundamentals-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Verwaltete Identität für kennwortlose Authentifizierung
  2. Azure Service Bus für entkoppelte Nachrichtenübermittlung
  3. Azure Container Apps
  4. End-to-End-Entwicklerworkflow
← Zurück zu Azure Fundamentals