Verwalten von Geheimnissen in Azure Container Apps
Artikel
Mithilfe von Azure Container Apps kann Ihre Anwendung vertrauliche Konfigurationswerte sicher speichern. Sobald geheime Schlüssel auf Anwendungsebene definiert sind, sind gesicherte Werte für Überarbeitungen in Ihren Container-Apps verfügbar. Darüber hinaus können Sie auf gesicherte Werte innerhalb von Skalierungsregeln verweisen. Informationen zur Verwendung von geheimen Schlüsseln mit Dapr finden Sie in der Dapr-Integration.
Geheimnisse sind einer Anwendung zugeordnet, unabhängig von spezifischen Revisionen einer Anwendung.
Das Hinzufügen, Entfernen oder Ändern von Geheimnissen generiert keine neuen Revisionen.
Jede Anwendungsrevision kann auf mindestens ein Geheimnis verweisen.
Mehrere Revisionen können auf dieselben Geheimnisse 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.
Definieren von Geheimnissen
Geheime Schlüssel werden als Eine Reihe von Namens-Wert-Paaren 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.
Geheimen Store-Wert in Container-Apps
Wenn Sie geheime Schlüssel über das Portal oder über verschiedene Befehlszeilenoptionen definieren.
Hier wird eine Verbindungszeichenfolge für ein Warteschlangenspeicherkonto im secrets-Array deklariert. In diesem Beispiel würden Sie <MY-CONNECTION-STRING-VALUE> durch den Wert Ihrer Verbindungszeichenfolge ersetzen.
Wenn Sie eine Container-App erstellen, werden Geheimnisse mithilfe des Parameters --secrets definiert.
Der Parameter akzeptiert einen durch Leerzeichen getrennten Satz von Name/Wert-Paaren.
Jedes Paar wird durch ein Gleichheitszeichen (=) getrennt.
Hier wird eine Verbindungszeichenfolge für ein Warteschlangenspeicherkonto im --secrets-Parameter deklariert. Ersetzen Sie sie durch <CONNECTION_STRING> den Wert Ihrer Verbindungszeichenfolge.
Wenn Sie eine Container-App erstellen, werden Geheimnisse als mindestens ein Geheimnisobjekt definiert, das über den ConfigurationSecrets-Parameter übergeben wird.
Hier wird eine Verbindungszeichenfolge zu einem Warteschlangenspeicherkonto deklariert. Der Wert für queue-connection-string stammt aus einer Umgebungsvariablen namens $QueueConnectionString.
Schlüsselschlüssel aus Key Vault referenzieren
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 stellt ihn in Ihrer Container-App als geheimen Schlüssel 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 Schlüsseltresorschlüssel gewähren.
Informationen zum Aktivieren der verwalteten Identität in Ihrer Container-App finden Sie unter "Verwaltete Identitäten".
Um Zugriff auf Schlüsseltresorschlüssel zu gewähren, erstellen Sie eine Zugriffsrichtlinie in Key Vault für die von Ihnen erstellte verwaltete Identität. Aktivieren Sie die „Get“-Geheimnisberechtigung für diese Richtlinie.
Hier wird eine Verbindungszeichenfolge für ein Warteschlangenspeicherkonto im secrets-Array deklariert. Der Wert wird mithilfe der angegebenen Identität automatisch aus Key Vault abgerufen. Ersetzen Sie zum Verwenden einer vom Benutzer verwalteten Identität system durch die Ressourcen-ID der Identität.
Ersetzen Sie <KEY-VAULT-SECRET-URI> den URI Ihres geheimen Schlüssels im Key Vault.
Wenn Sie eine Container-App erstellen, werden Geheimnisse mithilfe des Parameters --secrets definiert.
Der Parameter akzeptiert einen durch Leerzeichen getrennten Satz von Name/Wert-Paaren.
Jedes Paar wird durch ein Gleichheitszeichen (=) getrennt.
Verwenden Sie das Format <SECRET_NAME>=keyvaultref:<KEY_VAULT_SECRET_URI>,identityref:<MANAGED_IDENTITY_ID>, um einen Key Vault-Verweis anzugeben. Beispiel: queue-connection-string=keyvaultref:https://mykeyvault.vault.azure.net/secrets/queuereader,identityref:/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/my-resource-group/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my-identity.
Hier wird eine Verbindungszeichenfolge für ein Warteschlangenspeicherkonto im --secrets-Parameter deklariert. Ersetzen Sie <KEY_VAULT_SECRET_URI> den URI Ihres geheimen Schlüssels im Key Vault. Ersetzen Sie durch <USER_ASSIGNED_IDENTITY_ID> die Ressourcen-ID der vom Benutzer zugewiesenen Identität. Verwenden Sie system für die vom System zugewiesene Identität anstelle der Ressourcen-ID.
Hinweis
Die vom Benutzer zugewiesene Identität muss Zugriff haben, um den geheimen Schlüssel im Key Vault zu lesen. Die vom System zugewiesene Identität kann nicht mit dem Befehl "Erstellen" verwendet werden, da sie erst nach der Erstellung der Container-App verfügbar ist.
Geheime Schlüsseltresorverweise werden in PowerShell nicht unterstützt.
Der geheime Schlüsseltresor-URI muss in einem der folgenden Formate vorliegen:
https://myvault.vault.azure.net/secrets/mysecret/ec96f02080254f109c51a1f14cdb1931: Verweisen Sie auf eine bestimmte Version eines geheimen Schlüssels.
https://myvault.vault.azure.net/secrets/mysecret: Verweisen Sie auf die neueste Version eines geheimen Schlüssels.
Wenn eine Version nicht im URI angegeben ist, verwendet die App die neueste Version, die im Schlüsseltresor vorhanden ist. Wenn neuere Versionen verfügbar sind, ruft die App die neueste Version innerhalb von 30 Minuten automatisch ab. Alle aktiven Überarbeitungen, die auf den geheimen Schlüssel in einer Umgebungsvariable verweisen, werden automatisch neu gestartet, um den neuen Wert zu übernehmen.
Geben Sie für die vollständige Kontrolle darüber, welche Version eines geheimen Schlüssels verwendet wird, die Version im URI an.
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.
Nachdem Sie einen geheimen Schlüssel in Ihrer Container-App definiert haben, können Sie ihn in einer Umgebungsvariable referenzieren, wenn Sie eine neue Revision erstellen.
Wechseln Sie in der Azure-Portal zu Ihrer Container-App.
Öffnen Sie die Seite "Revisionsverwaltung ".
Wählen Sie Create new revision (Neue Revision erstellen) aus.
Wählen Sie auf der Seite "Neue Überarbeitung erstellen und bereitstellen" einen Container aus.
Wählen Sie im Abschnitt "Umgebungsvariablen" "Hinzufügen" aus.
Geben Sie Folgendes ein:
Name: Der Name der Umgebungsvariable.
Quelle: Wählen Sie " Bezug auf einen geheimen Schlüssel" aus.
Wert: Wählen Sie den geheimen Schlüssel aus, auf den Sie verweisen möchten.
Wählen Sie Speichern aus.
Wählen Sie " Erstellen" aus, um die neue Überarbeitung zu erstellen.
In diesem Beispiel wird die Anwendungsverbindungszeichenfolge als queue-connection-string deklariert und wird an anderer Stelle in den Konfigurationsabschnitten verfügbar.
Hier ruft die Umgebungsvariable mit dem Namen connection-string ihren Wert aus dem Geheimnis auf Anwendungsebene queue-connection-string ab. Darüber hinaus verwendet die Authentifizierungskonfiguration der Azure Queue Storage-Skalierungsregel das Geheimnis queue-connection-string, um ihre Verbindung zu definieren.
Um das Committen von Geheimniswerten in die Quellcodeverwaltung mit Ihrer ARM-Vorlage zu vermeiden, übergeben Sie Geheimniswerte als ARM-Vorlagenparameter.
In diesem Beispiel erstellen Sie mithilfe der Azure CLI eine Container-App mit einem Geheimnis, auf das in einer Umgebungsvariablen verwiesen wird. Um in der Azure CLI auf ein Geheimnis in einer Umgebungsvariablen zu verweisen, legen Sie deren Wert auf secretref: fest, gefolgt vom Namen des Geheimnisses.
Hier ruft die Umgebungsvariable mit dem Namen connection-string ihren Wert aus dem Geheimnis auf Anwendungsebene queue-connection-string ab.
In diesem Beispiel erstellen Sie mithilfe der Azure PowerShell einen Container mit einem Geheimnis, auf das in einer Umgebungsvariablen verwiesen wird. Um in PowerShell in einer Umgebungsvariablen auf das Geheimnis zu verweisen, legen Sie deren Wert auf secretref: fest, gefolgt vom Namen des Geheimnisses.
Hier ruft die Umgebungsvariable mit dem Namen ConnectionString ihren Wert aus dem Geheimnis auf Anwendungsebene $QueueConnectionString ab.
Montagegeheimnisse in einem Volume
Nachdem Sie geheime Schlüssel auf Anwendungsebene deklariert haben, wie im Abschnitt "Definieren von geheimen Schlüsseln " beschrieben, können Sie sie in Volume-Bereitstellungen referenzieren, wenn Sie eine neue Überarbeitung in Ihrer Container-App erstellen. Wenn Sie geheime Schlüssel in einem Volume bereitstellen, wird jeder geheime Schlüssel als Datei im Volume bereitgestellt. Der Dateiname ist der Name des geheimen Schlüssels, und der Dateiinhalt ist der Wert des geheimen Schlüssels. Sie können alle geheimen Schlüssel in einer Volume-Bereitstellung laden oder bestimmte geheime Schlüssel laden.
Nachdem Sie einen geheimen Schlüssel in Ihrer Container-App definiert haben, können Sie darauf in einer Volume-Bereitstellung verweisen, wenn Sie eine neue Revision erstellen.
Wechseln Sie in der Azure-Portal zu Ihrer Container-App.
Öffnen Sie die Seite "Revisionsverwaltung ".
Wählen Sie Create new revision (Neue Revision erstellen) aus.
Auf der Seite "Neue Überarbeitung erstellen und bereitstellen"
Wählen Sie einen Container und dann "Bearbeiten" aus.
Erweitern Sie im Abschnitt "Volume Mounts " den Abschnitt "Geheime Schlüssel ".
Wählen Sie " Neues Volume erstellen" aus.
Geben Sie Folgendes ein:
Name: mysecrets
Alle geheimen Schlüssel bereitstellen: aktiviert
Hinweis
Wenn Sie bestimmte geheime Schlüssel laden möchten, deaktivieren Sie alle geheimen Schlüssel , und wählen Sie die geheimen Schlüssel aus, die Sie laden möchten.
Klicken Sie auf Hinzufügen.
Wählen Sie unter "Volumename" "mysecrets" aus.
Geben Sie unter dem Bergpfad /mnt/secrets ein.
Wählen Sie Speichern aus.
Wählen Sie " Erstellen" aus, um die neue Revision mit der Volume-Bereitstellung zu erstellen.
In diesem Beispiel werden zwei geheime Schlüssel auf Anwendungsebene deklariert. Diese geheimen Schlüssel werden in einem Volume mit dem Namen mysecrets des Typs Secretbereitgestellt. Das Volume wird am Pfad /mnt/secretsbereitgestellt. Die Anwendung kann dann auf die geheimen Schlüssel im Volumemount verweisen.
Um bestimmte geheime Schlüssel zu laden und ihre Pfade innerhalb des bereitgestellten Volumes anzugeben, definieren Sie die geheimen Schlüssel im secrets Array des Volumeobjekts. Das folgende Beispiel zeigt, wie nur der queue-connection-string geheime Schlüssel im mysecrets Volume-Mount mit einem Dateinamen connection-string.txtgeladen wird.
In Ihrer App können Sie das Geheimnis aus einer Datei lesen, die sich in /mnt/secrets/connection-string.txtder Datei befindet.
In diesem Beispiel werden zwei geheime Schlüssel auf Anwendungsebene deklariert. Diese geheimen Schlüssel werden in einem Volume mit dem Namen mysecrets des Typs Secretbereitgestellt. Das Volume wird am Pfad /mnt/secretsbereitgestellt. Die Anwendung kann dann die geheimen Schlüssel als Dateien im Volumemount lesen.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unter https://aka.ms/ContentUserFeedback.