Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Azure Container Apps ermöglicht Es Ihrer Anwendung, vertrauliche Konfigurationswerte sicher zu speichern. Sobald Geheimnisse auf Anwendungsebene definiert wurden, stehen geschützte Werte für Revisionen in Ihren Container-Apps zur Verfügung. Außerdem können Sie innerhalb von Skalierungsregeln auf geschützte Werte verweisen. Informationen zur Verwendung von Geheimnissen mit Dapr finden Sie unter Dapr-Integration.
- Geheimnisse sind einer Anwendung zugeordnet, unabhängig von spezifischen Revisionen einer Anwendung.
- Durch das Hinzufügen, Entfernen oder Ändern von Geheimnissen werden keine neuen Revisionen generiert.
- Jede Anwendungsrevision kann auf mindestens ein Geheimnis verweisen.
- Mehrere Revisionen können auf dieselben geheimen Schlüssel verweisen.
Ein aktualisiertes oder gelöschtes Geheimnis wirkt sich nicht automatisch auf vorhandene Revisionen in Ihrer App aus. Wenn ein Geheimnis aktualisiert oder gelöscht wird, haben Sie zwei Möglichkeiten, auf die Änderungen zu reagieren:
- Eine neue Revision bereitstellen.
- Eine bestehende Revision neu starten.
Stellen Sie vor dem Löschen eines Geheimnisses eine neue Revision bereit, die nicht mehr auf das alte Geheimnis verweist. Deaktivieren Sie dann alle Revisionen, die auf das Geheimnis verweisen.
Berechtigungen zur Verwaltung von Geheimnissen
Azure Container Apps stellt separate listSecrets Operationen für Container-Apps, Jobs und Dapr-Komponenten bereit. Diese Operationen liefern geheime Werte im Klartext zurück. Gewähre diese Berechtigungen nur Identitäten, die geheime Werte lesen müssen.
Mehrere Azure-integrierte Rollen für Container-Apps definieren Berechtigungen mit Wildcard-Mustern als Komfort. Die folgenden Beispiele ermöglichen das Lesen geheimer Werte über eine Platzhalterberechtigung oder eine explizite listSecrets-Berechtigung, selbst wenn der Rollenname oder die Beschreibung auf einen eingeschränkteren Zugriff hindeutet. Diese Liste ist nicht vollständig; überprüfen Sie die aktuellen Azure-integrierten Rollen für Container, bevor Sie eine Rolle zuweisen.
Die folgenden Rollen gewähren Zugriff auf Container-App- oder Jobgeheimniswerte:
| Eingebaute Rolle | Relevante Berechtigungen in der Rollendefinition | Operation zur Abstimmung von Geheimnissen |
|---|---|---|
| Container Apps-Mitwirkender | Microsoft.App/containerApps/*/action |
Microsoft.App/containerApps/listSecrets/action |
| Container-Apps-Betreiber | Microsoft.App/containerApps/*/action |
Microsoft.App/containerApps/listSecrets/action |
| Mitwirkender für Container Apps-Aufträge | Microsoft.App/jobs/*/action |
Microsoft.App/jobs/listSecrets/action |
| Container-Apps-Jobs-Operator | Microsoft.App/jobs/*/action |
Microsoft.App/jobs/listSecrets/action |
Die folgenden Rollen gewähren Zugriff auf geheime Werte, die für Dapr-Komponenten konfiguriert sind:
| Eingebaute Rolle | Relevante Berechtigungen in der Rollendefinition | Operation zur Abstimmung von Geheimnissen |
|---|---|---|
| Beitragender für Container Apps ManagedEnvironments | Microsoft.App/managedEnvironments/*/action |
Microsoft.App/managedEnvironments/daprComponents/listSecrets/action |
| Mitwirkender von Container-Apps ConnectedEnvironments |
Microsoft.App/connectedEnvironments/*, Microsoft.App/connectedEnvironments/daprComponents/listSecrets/action |
Microsoft.App/connectedEnvironments/daprComponents/listSecrets/action |
Der effektive Zugang hängt vom Umfang der Rollenzuweisung ab. Zum Beispiel gewährt eine Zuweisung im Ressourcengruppenumfang die entsprechende Berechtigung für jede anwendbare Ressource in dieser Ressourcengruppe.
Important
Die Beschreibungen der Rollen Container Apps Operator und Container Apps Jobs Operator betonen operative Tätigkeiten. Allerdings gewähren ihre Wildcard-Aktionen auch die Erlaubnis, Geheimnisse aufzulisten. Überprüfen Sie die vollständige Berechtigungsliste einer Rolle, bevor Sie sie zuweisen.
Erstelle eine benutzerdefinierte Rolle mit engeren Berechtigungen
Integrierte Rollen sind eine Erleichterung, keine Einschränkung. Wenn keine eingebaute Rolle dem gewünschten Zugriffsniveau entspricht, definieren Sie eine benutzerdefinierte Azure-Rolle, die nur die benötigten Operationen auflistet und die Aktion listSecrets weglässt.
Zum Beispiel erlaubt die folgende benutzerdefinierte Rolle einem Benutzer, Jobs und Ausführungen anzuzeigen und laufende Ausführungen zu stoppen, ohne die Aktion listSecrets zu gewähren:
{
"Name": "Container Apps Jobs Execution Stopper",
"IsCustom": true,
"Description": "View Container Apps jobs and stop running executions.",
"Actions": [
"Microsoft.App/jobs/read",
"Microsoft.App/jobs/executions/read",
"Microsoft.App/jobs/execution/read",
"Microsoft.App/jobs/stop/action",
"Microsoft.App/jobs/stop/execution/action",
"Microsoft.App/managedEnvironments/read"
],
"NotActions": [],
"AssignableScopes": [
"/subscriptions/<SUBSCRIPTION_ID>"
]
}
Vermeiden Sie Wildcard-Muster wie Microsoft.App/jobs/*/action in einer benutzerdefinierten Rollendefinition. Diese Wildcard gewährt jede aktuelle und zukünftige Operation, die dem Muster entspricht, einschließlich listSecrets.
Warnung
Für Container-Apps-Jobs reicht es nicht aus, die Aktion listSecrets aus einer benutzerdefinierten Rolle wegzulassen, um geheime Werte zu schützen, wenn die Rolle auch Microsoft.App/jobs/start/action gewährt. Die Jobs - Start REST API akzeptiert eine optionale Ausführungsvorlage, die die Haupt- und Init-Container-Images, Befehle und Umgebungsvariablen überschreiben kann. Ein Benutzer, der einen Job starten kann und den Namen eines Geheimnisses kennt, kann dieses Geheimnis aus einem von ihm gewählten Container abrufen und seinen Wert im Container lesen. Der Container kann auch jede verwaltete Identität verwenden, die so konfiguriert ist, dass sie ihm zur Verfügung steht. Behandle die Erlaubnis, einen Job zu beginnen, als Erlaubnis, die Geheimnisse des Jobs und verfügbare verwaltete Identitäten zu nutzen.
Weitere Informationen finden Sie unter Benutzerdefinierte Azure-Rollen.
Definieren von Geheimnissen
Geheimnisse werden als Name-Wert-Paare definiert. Der Wert jedes geheimen Schlüssels wird direkt oder als Verweis auf einen geheimen Schlüssel angegeben, der in Azure Key Vault gespeichert ist.
Hinweis
Vermeiden Sie es, den Wert eines Geheimnisses direkt in einer Produktionsumgebung anzugeben. Verwenden Sie stattdessen einen Verweis auf einen geheimen Schlüssel, der in Azure Key Vault gespeichert ist, wie im Store-Schlüsselwert im Abschnitt "Container-Apps beschrieben.
Speichern des Geheimniswerts in Container Apps
Das Folgende wird verwendet, wenn Sie geheime Schlüssel über das Portal oder über verschiedene Befehlszeilenoptionen definieren.
Wechseln Sie im Azure-Portal zu Ihrer Container-App.
Wählen Sie im Abschnitt "Sicherheit" die Option "Geheime Schlüssel" aus.
Wählen Sie Hinzufügen.
Geben Sie im Kontextbereich Geheimnis hinzufügen folgende Informationen ein:
- Name: Der Name des Geheimnisses.
- Typ: Wählen Sie Container Apps-Geheimnis aus.
- Wert: Der Wert des Geheimnisses.
Wählen Sie Hinzufügen.
Referenzgeheimnis von Key Vault
Wenn Sie einen geheimen Schlüssel definieren, erstellen Sie einen Verweis auf einen geheimen Schlüssel, der in Azure Key Vault gespeichert ist. Container-Apps rufen automatisch den geheimen Wert aus Key Vault ab und stellen ihn als geheimen Schlüssel in Ihrer Container-App zur Verfügung.
Um auf einen geheimen Schlüssel von Key Vault zu verweisen, müssen Sie zuerst die verwaltete Identität in Ihrer Container-App aktivieren und den Identitätszugriff auf die Key Vault geheimen Schlüssel gewähren.
Informationen zum Aktivieren der verwalteten Identität in Ihrer Container-App finden Sie unter Verwaltete Identitäten in Azure Container Apps.
Um Zugriff auf Key Vault Geheimnisse zu gewähren, erteilen Sie der verwalteten Identität die Azure-RBAC-Rolle Key Vault Secrets User.
Wechseln Sie im Azure-Portal zu Ihrer Container-App.
Wählen Sie im Abschnitt "Sicherheit " die Option "Identität" aus.
Legen Sie auf der Registerkarte Systemseitig zugewiesen den Status auf Ein fest.
Hinweis
Sie können auch eine vom Benutzer zugewiesene verwaltete Identität verwenden, die über mehrere Ressourcen hinweg wiederverwendet und unabhängig vom App-Lebenszyklus beibehalten werden kann. Um sie zu verwenden, wählen Sie die Registerkarte Benutzer zugewiesen und dann eine vorhandene Identität aus.
Wählen Sie Speichern aus, um die systemseitig zugewiesene verwaltete Identität zu aktivieren.
Ein Popup wird angezeigt, um zu bestätigen, dass Sie die vom System zugewiesene verwaltete Identität aktivieren und Ihre Container-App mit Microsoft Entra ID registrieren möchten. Wählen Sie Ja aus.
Wählen Sie im Abschnitt "Sicherheit" die Option "Geheime Schlüssel" aus.
Wählen Sie Hinzufügen.
Geben Sie im Kontextbereich Geheimnis hinzufügen folgende Informationen ein:
- Name: Der Name des Geheimnisses.
- Type: Wählen Sie Key Vault Reference aus.
-
Key Vault geheime URL: Der URI Ihres geheimen Schlüssels in Key Vault. Dieser URI weist das folgende Format auf:
https://<YOUR_KEY_VAULT_NAME>.vault.azure.net/secrets/<YOUR_SECRET_NAME>/<32_DIGIT_HEX_ID> - Identität: Wählen Sie Systemseitig zugewiesen aus.
Wählen Sie Hinzufügen.
Hinweis
Wenn Sie UDR With Azure Firewall verwenden, müssen Sie das AzureKeyVault-Dienst-Tag und den FQDN login.microsoft.com zur Erlaubnisliste für Ihre Firewall hinzufügen. Unter configuring UDR mit Azure Firewall können Sie entscheiden, welche zusätzlichen Diensttags Sie benötigen.
URI des Key Vault-Geheimnisses und Geheimnisrotation
Ein URI des Key Vault-Geheimnisses muss in einem der folgenden Formate vorliegen:
-
https://myvault.vault.azure.net/secrets/mysecret/ec96f02080254f109c51a1f14cdb1931: Verweis auf eine bestimmte Version eines Geheimnisses -
https://myvault.vault.azure.net/secrets/mysecret: Verweis auf die neueste Version eines Geheimnisses
Wenn im URI keine Version angegeben ist, verwendet die App die neueste Version, die im Schlüsseltresor vorhanden ist. Wenn neuere Versionen verfügbar werden, ruft die App innerhalb von 30 Minuten automatisch die neueste Version ab. Alle aktiven Revisionen, die in einer Umgebungsvariablen auf das Geheimnis verweisen, werden automatisch neu gestartet, um den neuen Wert zu erfassen.
Geben Sie im URI die Version an, um die vollständige Kontrolle darüber zu haben, welche Version eines Geheimnisses verwendet wird.
Verweisen auf Geheimnisse in Umgebungsvariablen
Nachdem Sie Geheimnisse auf Anwendungsebene deklariert haben, wie im Abschnitt Definieren von Geheimnissen beschrieben, können Sie auf sie in Umgebungsvariablen verweisen, wenn Sie eine neue Revision in Ihrer Container-App erstellen. Wenn eine Umgebungsvariable auf ein Geheimnis verweist, wird ihr Wert mit dem Wert aufgefüllt, der im Geheimnis definiert ist.
Beispiel
Das folgende Beispiel zeigt eine Anwendung, die eine Verbindungszeichenfolge auf Anwendungsebene deklariert. Auf diese Verbindung wird in einer Containerumgebungsvariable und in einer Skalierungsregel verwiesen.
Nach dem Definieren eines Geheimnisses in Ihrer Container-App können Sie in einer Umgebungsvariablen darauf verweisen, wenn Sie eine neue Revision erstellen.
Wechseln Sie im Azure-Portal zu Ihrer Container-App.
Wählen Sie im Abschnitt Anwendung die Option Revisionen und Replikate aus.
Wählen Sie auf der Seite Revisionen und Replikate die Option Neue Revision erstellen aus.
Wählen Sie auf der Seite Neue Revision erstellen und bereitstellen auf der Registerkarte Container unter dem Abschnitt Containerimage einen Container aus.
Wählen Sie Bearbeiten aus.
Wählen Sie im Kontextbereich Container bearbeiten die Registerkarte Umgebungsvariablen aus.
Wählen Sie Hinzufügen.
Geben Sie Folgendes ein:
- Name: Der Name der Umgebungsvariablen.
- Quelle: Wählen Sie Auf ein Geheimnis verweisen aus.
- Wert: Wählen Sie das Geheimnis aus, das Sie zuvor definiert haben.
Wählen Sie Speichern aus.
Wählen Sie auf der Seite Neue Revision erstellen und bearbeiten die Option Erstellen aus, um die neue Revision zu erstellen.
Einbinden von Geheimnissen in einem Volume
Nachdem Sie Geheimnisse auf Anwendungsebene deklariert haben, wie im Abschnitt Definieren von Geheimnissen beschrieben, können Sie in Volumebereitstellungen auf sie verweisen, wenn Sie eine neue Revision in Ihrer Container-App erstellen. Wenn Sie Geheimnisse in einem Volume einbinden, wird das Geheimnis jeweils als Datei im Volume eingebunden. Der Dateiname ist der Name des Geheimnisses. Beim Dateiinhalt handelt es sich um den Wert des Geheimnisses. Sie können alle Geheimnisse in einer Volumebereitstellung laden oder nur bestimmte Geheimnisse laden.
Beispiel
Nach dem Definieren eines Geheimnisses in Ihrer Container-App können Sie in einer Volumebereitstellung darauf verweisen, wenn Sie eine neue Revision erstellen.
Wechseln Sie im Azure-Portal zu Ihrer Container-App.
Wählen Sie im Abschnitt Anwendung die Option Revisionen und Replikate aus.
Wählen Sie auf der Seite Revisionen und Replikate die Option Neue Revision erstellen aus.
Wählen Sie auf der Seite Neue Revision erstellen und bereitstellen auf der Registerkarte Container unter dem Abschnitt Containerimage einen Container aus.
Wählen Sie Bearbeiten aus.
Wählen Sie im Kontextbereich Container bearbeiten die Registerkarte Volumeeinbindungen aus.
Wählen Sie Neues Volume erstellen aus.
Geben Sie im Kontextbereich Volume hinzufügen folgende Informationen ein:
-
Volumetyp: Wählen Sie
Secretaus. -
Name:
mysecrets - Alle Geheimnisse einbinden: Aktiviert
Hinweis
Wenn Sie nur bestimmte Geheimnisse laden möchten, deaktivieren Sie Alle Geheimnisse einbinden, und wählen Sie die Geheimnisse aus, die Sie laden möchten.
-
Volumetyp: Wählen Sie
Wählen Sie Hinzufügen.
Wählen Sie im Kontextbereich Container bearbeiten unter Volumename die Option mysecrets aus.
Geben Sie unter Einbindungspfad den Text
/mnt/secretsein.Wählen Sie Speichern aus.
Wählen Sie auf der Seite Neue Revision erstellen und bearbeiten die Option Erstellen aus, um die neue Revision mit der Volumeeinbindung zu erstellen.
Behebung von Problemen bei Key Vault Verweisen
Wenn Sie auf Geheimnisse aus Azure Key Vault verweisen, können während des Abrufs des Geheimnisses oder der Synchronisierung Probleme auftreten. Hier sind häufige Fehler und Lösungen:
| Fehler | Ursache | Resolution |
|---|---|---|
| Verwaltete Identität nicht aktiviert | Die Container-App verfügt nicht über eine verwaltete Identität. | Aktivieren Sie die vom System zugewiesene oder vom Benutzer zugewiesene verwaltete Identität in Ihrer Container-App. Siehe Verwaltete Identitäten. |
| Identität nicht gefunden | Die angegebene verwaltete Identität ist nicht vorhanden oder der Container-App nicht zugewiesen. | Überprüfen Sie, ob die Identität im Abschnitt "Identität" erstellt und der Container-App zugewiesen ist. |
| Secret in Key Vault deaktiviert | Das Geheimnis ist in der Key Vault-Ressource deaktiviert. | Wechseln Sie im Azure Portal zu Ihrem Key Vault, und aktivieren Sie den geheimen Schlüssel. |
| Fehler bei der Authentifizierung. | Die verwaltete Identität verfügt nicht über die erforderlichen Berechtigungen zum Lesen des geheimen Schlüssels. | Gewähren Sie der verwalteten Identität die Rolle Key Vault Secrets User in Ihrem Key Vault. Siehe Key Vault Secrets User. |
| RBAC-Zugriffsberechtigung verweigert | Die verwaltete Identität verfügt über unzureichende Berechtigungen für den Zugriff auf die Key Vault. | Überprüfen Sie die RBAC-Rollenzuweisung für die Key Vault, und stellen Sie sicher, dass sie Leseberechtigungen für geheime Schlüssel enthält. |