Verwaltete Identitäten in Azure Container Apps
Mit einer verwalteten Microsoft Entra ID-Identität kann Ihre Container-App auf andere von Microsoft Entra geschützte Ressourcen zugreifen. Weitere Informationen zu verwalteten Identitäten in Microsoft Entra ID finden Sie unter Verwaltete Identitäten für Azure-Ressourcen.
Ihrer Container-App können zwei Arten von Identitäten zugewiesen werden:
- Eine systemseitig zugewiesene Identität ist an Ihre Container-App gebunden und wird gelöscht, wenn Ihre App gelöscht wird. Eine App kann nur über eine systemseitig zugewiesene Identität verfügen.
- Eine benutzerseitig zugewiesene Identität ist eine eigenständige Azure-Ressource, die Sie Ihrer Container-App und anderen Ressourcen zuweisen können. Eine Container-App kann über mehrere benutzerseitig zugewiesene Identitäten verfügen. Benutzerseitig zugewiesene Identitäten sind vorhanden, bis Sie sie löschen.
Gründe für die Verwendung einer verwalteten Identität
Sie können eine verwaltete Identität in einer ausgeführten Container-App verwenden, um sich bei jedem Dienst zu authentifizieren, der die Microsoft Entra-Authentifizierung unterstützt.
Mit verwalteten Identitäten:
- Ihre App stellt mit der verwalteten Identität eine Verbindung mit Ressourcen her. Sie müssen keine Anmeldeinformationen in Ihrer Container-App verwalten.
- Sie können die rollenbasierte Zugriffssteuerung verwenden, um einer verwalteten Identität bestimmte Berechtigungen zuzuweisen.
- Systemseitig zugewiesene Identitäten werden automatisch erstellt und verwaltet. Sie werden gelöscht, wenn Ihre Container-App gelöscht wird.
- Sie können benutzerseitig zugewiesene Identitäten hinzufügen und löschen und mehreren Ressourcen zuweisen. Sie sind unabhängig vom Lebenszyklus Ihrer Container-App.
- Sie können eine verwaltete Identität für die Authentifizierung bei einer privaten Azure Container Registry-Instanz ohne Benutzername und Kennwort verwenden, um Container für Ihre Container-App zu pullen.
- Mit einer verwalteten Identität können Sie Verbindungen für Dapr-fähige Anwendungen über Dapr-Komponenten herstellen.
Gängige Anwendungsfälle
Systemseitig zugewiesene Identitäten eignen sich am besten für Workloads, die:
- in einer einzelnen Ressource enthalten sind
- unabhängige Identitäten benötigen
Benutzerseitig zugewiesene Identitäten sind ideal für Workloads, die:
- auf mehreren Ressourcen ausgeführt werden und eine einzelne Identität gemeinsam nutzen können
- vorab für eine sichere Ressource autorisiert werden müssen
Begrenzungen
Init-Container können nicht auf verwaltete Identitäten in reinen Verbrauchsumgebungen und Umgebungen mit dedizierten Workloadprofilen zugreifen.
Konfigurieren von verwalteten Identitäten
Sie können Ihre verwalteten Identitäten über Folgendes konfigurieren:
- dem Azure-Portal
- Azure CLI
- Ihre ARM-Vorlage (Azure Resource Manager)
Wenn eine verwaltete Identität in einer ausgeführten Container-App hinzugefügt, gelöscht oder geändert wird, wird die App nicht automatisch neu gestartet, und es wird keine neue Revision erstellt.
Hinweis
Beim Hinzufügen einer verwalteten Identität zu einer Container-App, die vor dem 11. April 2022 bereitgestellt wurde, müssen Sie eine neue Revision erstellen.
Hinzufügen einer systemseitig zugewiesenen Identität
Navigieren Sie im Azure-Portal zu Ihrer Container App.
Wählen Sie in der Gruppe Einstellungen die Option Identität aus.
Ändern Sie auf der Registerkarte Systemseitig zugewiesen den Status in Ein.
Wählen Sie Speichern.
Hinzufügen einer benutzerseitig zugewiesenen Identität
Beim Konfigurieren einer Container-App mit einer benutzerseitig zugewiesenen Identität müssen Sie zuerst die Identität erstellen und dann deren Ressourcenbezeichner zur Konfiguration ihrer Container-App hinzufügen. Sie können benutzerseitig zugewiesene Identitäten über das Azure-Portal oder die Azure-Befehlszeilenschnittstelle erstellen. Informationen zum Erstellen und Verwalten einer benutzerseitig zugewiesenen verwalteten Identität finden Sie unter Benutzerseitig zugewiesene verwaltete Identitäten verwalten.
Zunächst müssen Sie eine Ressource für eine benutzerseitig zugewiesene Identität erstellen.
Erstellen Sie eine benutzerseitig zugewiesene verwaltete Identitätsressource entsprechend den Schritten, die in Verwalten von benutzerseitig zugewiesenen verwalteten Identitäten aufgeführt sind.
Navigieren Sie im Azure-Portal zu Ihrer Container App.
Wählen Sie in der Gruppe Einstellungen die Option Identität aus.
Wählen Sie auf der Registerkarte Benutzerseitig zugewiesen die Option Hinzufügen aus.
Suchen Sie nach der zuvor erstellten Identität, und wählen Sie sie aus.
Wählen Sie Hinzufügen.
Konfigurieren einer Zielressource
Für einige Ressourcen müssen Sie Rollenzuweisungen für die verwaltete Identität Ihrer App konfigurieren, um Zugriff zu gewähren. Andernfalls werden Aufrufe von Ihrer App an Dienste (z. B. Azure Key Vault und Azure SQL-Datenbank) abgelehnt, auch wenn Sie ein gültiges Token für diese Identität verwenden. Weitere Informationen zur rollenbasierten Zugriffssteuerung in Azure (Azure RBAC) finden Sie im Artikel Was ist die rollenbasierte Zugriffssteuerung in Azure (Azure Role-Based Access Control, Azure RBAC)?. Informationen zu den Ressourcen, die Microsoft Entra-Tokens unterstützen, finden Sie unter Azure-Dienste, die die Microsoft Entra-Authentifizierung unterstützen.
Wichtig
Die Back-End-Dienste für verwaltete Identitäten behalten pro Ressourcen-URI für ca. 24 Stunden einen Cache bei. Wenn Sie die Zugriffsrichtlinie einer bestimmten Zielressource aktualisieren und sofort ein Token für diese Ressource abrufen, erhalten Sie möglicherweise weiterhin ein zwischengespeichertes Token mit veralteten Berechtigungen, bis dieses Token abläuft. Das Erzwingen einer Tokenaktualisierung wird nicht unterstützt.
Verbinden mit Azure-Diensten im App-Code
Mit verwalteten Identitäten kann eine App Tokens für den Zugriff auf Azure-Ressourcen abrufen, die Microsoft Entra-ID verwenden (z. B. Azure SQL-Datenbank, Azure Key Vault und Azure Storage). Diese Tokens stellen die Anwendung dar, die auf die Ressource zugreift, nicht einen bestimmten Benutzer der Anwendung.
Container Apps bietet einen intern zugänglichen REST-Endpunkt zum Abrufen von Token. Der REST-Endpunkt ist in der App mit der HTTP-Standardanforderung GET
verfügbar, die Sie mit einem generischen HTTP-Client in Ihrer bevorzugten Sprache senden können. Für .NET, JavaScript, Java und Python bietet die Azure Identity-Clientbibliothek eine Abstraktion über diesen REST-Endpunkt. Sie können eine Verbindung mit anderen Azure-Diensten herstellen, indem Sie dem dienstspezifischen Client ein Anmeldeinformationsobjekt hinzufügen.
Hinweis
Bei Verwendung der Azure Identity-Clientbibliothek müssen Sie explizit die Client-ID für die benutzerseitig zugewiesene verwaltete Identität angeben.
Hinweis
Beim Herstellen einer Verbindung mit Azure SQL-Datenquellen mit Entity Framework Core empfiehlt sich die Verwendung von Microsoft.Data.SqlClient, das spezielle Verbindungszeichenfolgen für Verbindungen mit verwalteten Identitäten bietet.
In .NET-Apps ist es am einfachsten, über die Azure Identity-Clientbibliothek mit einer verwalteten Identität zu arbeiten. Weitere Informationen finden Sie in den folgenden Ressourcen:
- Hinzufügen der Azure Identity-Clientbibliothek zu Ihrem Projekt
- Zugreifen auf den Azure-Dienst mit einer vom System zugewiesenen Identität
- Zugreifen auf den Azure-Dienst mit einer vom Benutzer zugewiesenen Identität
In den verknüpften Beispielen wird DefaultAzureCredential
verwendet. Dieses Objekt ist in den meisten Szenarios effektiv, da dasselbe Muster in Azure (mit verwalteten Identitäten) und auf Ihrem lokalen Computer (ohne verwaltete Identitäten) funktioniert.
Verwenden einer verwalteten Identität für Skalierungsregeln
Sie können verwaltete Identitäten in Ihren Skalierungsregeln für die Authentifizierung bei Azure-Diensten verwalten, die verwaltete Identitäten unterstützen. Wenn Sie eine verwaltete Identität in Ihrer Skalierungsregel verwenden möchten, verwenden Sie in Ihrer Skalierungsregel die identity
-Eigenschaft anstelle der auth
-Eigenschaft. Zulässige Werte für die identity
-Eigenschaft sind entweder die Azure-Ressourcen-ID einer benutzerseitig zugewiesenen Identität oder system
, um eine systemseitig zugewiesene Identität zu verwenden.
Hinweis
Die Authentifizierung mit verwalteten Identitäten in Skalierungsregeln befindet sich in der Public Preview. Sie ist in API-Version 2024-02-02-preview
verfügbar.
Das folgende Beispiel für eine ARM-Vorlage zeigt, wie Sie eine verwaltete Identität mit einer Azure Queue Storage-Skalierungsregel verwenden:
Das Queue Storage-Konto verwendet die accountName
-Eigenschaft, um das Speicherkonto zu identifizieren, während die identity
-Eigenschaft angibt, welche verwaltete Identität verwendet werden soll. Sie müssen die auth
-Eigenschaft nicht verwenden.
"scale": {
"minReplicas": 1,
"maxReplicas": 10,
"rules": [{
"name": "myQueueRule",
"azureQueue": {
"accountName": "mystorageaccount",
"queueName": "myqueue",
"queueLength": 2,
"identity": "<IDENTITY1_RESOURCE_ID>"
}
}]
}
Weitere Informationen zur Verwendung von verwalteten Identitäten mit Skalierungsregeln finden Sie unter Festlegen von Skalierungsregeln in Azure Container Apps.
Steuern der Verfügbarkeit verwalteter Identitäten
Mit Container Apps können Sie Init-Container und Hauptcontainer angeben. Standardmäßig können Haupt- und Init-Container in einer Umgebung mit einem verbrauchsgesteuerten Workloadprofil verwaltete Identitäten verwenden, um auf andere Azure-Dienste zuzugreifen. In reinen Verbrauchsumgebungen und dedizierten Workloadprofilumgebungen können nur Hauptcontainer eine verwaltete Identität verwenden. Die Zugriffstoken verwalteter Identitäten sind für jede verwaltete Identität verfügbar, die in der Container-App konfiguriert ist. In einigen Fällen benötigt jedoch nur der Init-Container oder der Hauptcontainer Zugriffstoken für eine verwaltete Identität. In anderen Fällen können Sie eine verwaltete Identität nur verwenden, um auf Ihre Azure Container Registry-Instanz zuzugreifen, um das Containerimage abzurufen, und Ihre Anwendung selbst benötigt keinen Zugriff auf Ihre Azure-Containerregistrierung.
Ab API-Version 2024-02-02-preview
können Sie steuern, welche verwalteten Identitäten während der Initialisierungs- und Hauptphase für Ihre Container-App verfügbar sind, um das Sicherheitsprinzip der geringsten Berechtigungen einzuhalten. Die folgenden Optionen sind verfügbar:
Init
: nur für Init-Container verfügbar. Verwenden Sie diese Option, wenn Sie einige Initialisierungsaufgaben ausführen möchten, für die eine verwaltete Identität erforderlich ist, die verwaltete Identität aber nicht mehr im Hauptcontainer benötigen. Diese Option wird derzeit nur in Verbrauchsumgebungen mit Workloadprofilen unterstützt.Main
: nur für Hauptcontainer verfügbar. Verwenden Sie diese Option, wenn Ihr Init-Container keine verwaltete Identität benötigt.All
: für alle Container verfügbar. Dieser Wert ist die Standardeinstellung.None
: für keine Container verfügbar. Verwenden Sie diese Option, wenn Sie über eine verwaltete Identität verfügen, die nur für das Abrufen von ACR-Images, Skalierungsregeln oder Schlüsseltresorgeheimnisse verwendet wird und nicht für den Code verfügbar sein muss, der in Ihren Containern ausgeführt wird.
Das folgende Beispiel für eine ARM-Vorlage veranschaulicht, wie Sie eine Container-App in einer Verbrauchsumgebung mit Workloadprofil konfigurieren, in der Folgendes gilt:
- Die systemseitig zugewiesene Identität der Container-App ist ausschließlich auf Hauptcontainer beschränkt.
- Eine bestimmte benutzerseitig zugewiesene Identität ist ausschließlich auf Init-Container beschränkt.
- Es wird eine bestimmte benutzerseitig zugewiesene Identität für das Pullen von Azure Container Registry-Images verwendet, aber der Code in den Containern darf diese verwaltete Identität nicht für den Zugriff auf die Registrierung verwenden. In diesem Beispiel benötigen die Container selbst keinen Zugriff auf die Registrierung.
Dieser Ansatz schränkt die Ressourcen ein, auf die zugegriffen werden kann, wenn böswillige Akteure nicht autorisierten Zugriff auf die Container erhalten.
{
"location": "eastus2",
"identity":{
"type": "SystemAssigned, UserAssigned",
"userAssignedIdentities": {
"<IDENTITY1_RESOURCE_ID>":{},
"<ACR_IMAGEPULL_IDENTITY_RESOURCE_ID>":{}
}
},
"properties": {
"workloadProfileName":"Consumption",
"environmentId": "<CONTAINER_APPS_ENVIRONMENT_ID>",
"configuration": {
"registries": [
{
"server": "myregistry.azurecr.io",
"identity": "ACR_IMAGEPULL_IDENTITY_RESOURCE_ID"
}],
"identitySettings":[
{
"identity": "ACR_IMAGEPULL_IDENTITY_RESOURCE_ID",
"lifecycle": "None"
},
{
"identity": "<IDENTITY1_RESOURCE_ID>",
"lifecycle": "Init"
},
{
"identity": "system",
"lifecycle": "Main"
}]
},
"template": {
"containers":[
{
"image":"myregistry.azurecr.io/main:1.0",
"name":"app-main"
}
],
"initContainers":[
{
"image":"myregistry.azurecr.io/init:1.0",
"name":"app-init",
}
]
}
}
}
Anzeigen verwalteter Identitäten
Sie können die systemseitig zugewiesenen und benutzerseitig zugewiesenen verwalteten Identitäten mithilfe des folgenden Azure CLI-Befehls anzeigen. Die Ausgabe zeigt den Typ der verwalteten Identität, Mandanten-IDs und Prinzipal-IDs aller verwalteten Identitäten an, die Ihrer Container-App zugewiesen sind.
az containerapp identity show --name <APP_NAME> --resource-group <GROUP_NAME>
Entfernen einer verwalteten Identität
Wenn Sie eine vom System zugewiesene Identität entfernen, wird sie aus Microsoft Entra ID gelöscht. Systemseitig zugewiesene Identitäten werden auch automatisch aus Microsoft Entra ID entfernt, wenn Sie die Container-App-Ressource selbst löschen. Durch das Entfernen der benutzerseitig zugewiesenen verwalteten Identitäten aus Ihrer Container-App werden sie nicht aus Microsoft Entra ID entfernt.
Scrollen Sie im linken Navigationsbereich der Seite Ihrer App nach unten zur Gruppe Einstellungen.
Wählen Sie Identität aus. Führen Sie dann die Schritte basierend auf dem Identitätstyp aus:
- Vom System zugewiesene Identität: Ändern Sie auf der Registerkarte Vom System zugewiesen den Status zu Aus. Wählen Sie Speichern.
- Vom Benutzer zugewiesene Identität: Klicken Sie auf die Registerkarte Vom Benutzer zugewiesen, aktivieren Sie das Kontrollkästchen für die Identität, und klicken Sie auf Entfernen. Klicken Sie auf Ja, um zu bestätigen.