TLS-Terminierung mit Key Vault-Zertifikaten

Azure Key Vault ist ein als Plattform verwalteter Geheimnisspeicher, mit dem Sie Geheimnisse, Schlüssel und TLS/SSL-Zertifikate schützen können. Azure Application Gateway unterstützt die Integration mit Key Vault für Serverzertifikate, die HTTPS-fähigen Listenern zugeordnet sind. Diese Unterstützung ist auf die v2-SKU von Application Gateway beschränkt.

Application Gateway bietet zwei Modelle für den TLS-Abschluss:

  • Bereitstellung von TLS/SSL-Zertifikaten, die an den Listener angefügt sind. Dies ist das traditionelle Modell für die Übergabe von TLS/SSL-Zertifikaten an Application Gateway für die TLS-Terminierung.
  • Bereitstellung eines Verweises auf ein vorhandenes Key Vault-Zertifikat oder -Geheimnis, wenn Sie einen HTTPS-fähigen Listener erstellen.

Die Application Gateway-Integration mit Key Vault bietet viele Vorteile. Zu diesen gehören:

  • Höhere Sicherheit, da TLS/SSL-Zertifikate nicht direkt vom Anwendungsentwicklungsteam gehandhabt werden. Die Integration ermöglicht einem getrennten Sicherheitsteam Folgendes:
    • Einrichten von Anwendungsgateways
    • Steuern von Application Gateway-Lebenszyklen
    • Erteilen von Berichtigungen für ausgewählte Gateways, damit diese auf Zertifikate zugreifen können, die in Ihrem Key Vault gespeichert sind.
  • Unterstützung des Imports vorhandener Zertifikate in Ihren Key Vault. Verwenden von Key Vault-APIs zum Erstellen und Verwalten neuer Zertifikate bei den vertrauenswürdigen Key Vault-Partnern
  • Unterstützung für die automatische Verlängerung von Zertifikaten, die in Ihrem Key Vault gespeichert sind.

Unterstützte Zertifikate

Application Gateway unterstützt derzeit nur per Software überprüfte Zertifikate. Durch das Hardwaresicherheitsmodul (HSM) überprüfte Zertifikate werden nicht unterstützt.

Nachdem Application Gateway für die Verwendung von Key Vault-Zertifikaten konfiguriert wurde, rufen die Instanzen die Zertifikate von Key Vault ab und installieren sie lokal für die TLS-Terminierung. Die Instanzen rufen Key Vault in 4-Stunden-Intervallen ab, um ggf. eine erneuerte Version des Zertifikats zu erhalten. Wenn ein aktualisiertes Zertifikat gefunden wird, wird das TLS/SSL-Zertifikat, das dem HTTPS-Listener zugeordnet ist, automatisch gedreht.

Tipp

Jede Änderung am Anwendungsgateway erzwingt eine Überprüfung auf Key Vault, um festzustellen, ob neue Versionen von Zertifikaten verfügbar sind. Dies schließt u. a. Änderungen an Front-End-IP-Konfigurationen, Listenern, Regeln, Back-End-Pools, Ressourcentags und mehr ein. Wenn ein aktualisiertes Zertifikat gefunden wird, wird das neue Zertifikat sofort angezeigt.

Application Gateway verwendet einen Geheimnisbezeichner in Key Vault, um auf die Zertifikate zu verweisen. Für Azure PowerShell, die Azure CLI oder Azure Resource Manager wird dringend empfohlen, einen Geheimbezeichner zu verwenden, der keine Version angibt. Auf diese Weise dreht das Anwendungsgateway automatisch das Zertifikat, wenn eine neuere Version in Ihrem Key Vault verfügbar ist. Ein Beispiel für einen Geheimnis-URI ohne Version ist https://myvault.vault.azure.net/secrets/mysecret/. Sie können sich auf die im folgenden Abschnitt angegebenen PowerShell-Schritte beziehen.

Das Azure-Portal unterstützt nur KeyVault-Zertifikate, keine Geheimnisse. Application Gateway unterstützt weiterhin das Verweisen auf Geheimnisse aus Key Vault, aber nur über Nicht-Portalressourcen wie PowerShell, Azure CLI, APIs und Azure Resource Manager-Vorlagen (ARM-Vorlagen).

Verweise auf Key Vault-Instanzen in anderen Azure-Abonnements werden unterstützt, müssen jedoch über ARM-Vorlage, Azure PowerShell, CLI, Bicep usw. konfiguriert werden. Die schlüsseltresorübergreifende Konfiguration wird bisher nicht vom Anwendungsgateway über das Azure-Portal unterstützt.

Zertifikateinstellungen in Key Vault

Für den TLS-Abschluss unterstützt Application Gateway nur Zertifikate im PFX-Format (Personal Information Exchange). Sie können dann entweder ein vorhandenes Zertifikat importieren oder ein neues in Ihrem Key Vault erstellen. Um Ausfälle zu vermeiden, stellen Sie sicher, dass der Status des Zertifikats in Key Vault auf Aktiviert festgelegt ist.

Funktionsweise der Integration

Die Application Gateway-Integration in Key Vault erfolgt über einen Konfigurationsprozess in drei Schritten:

Diagram that shows three steps for integrating Application Gateway with Key Vault.

Hinweis

Die Integration von Azure Application Gateway in Key Vault unterstützt sowohl die Zugriffsrichtlinie für den Tresor als auch die Berechtigungsmodelle der rollenbasierte Zugriffssteuerung in Azure.

Abrufen einer benutzerseitig zugewiesenen verwalteten Identität

Application Gateway verwendet eine verwaltete Identität, um in Ihrem Auftrag Zertifikate von Key Vault abzurufen.

Sie können entweder eine neue benutzerseitig zugewiesene verwaltete Identität erstellen oder eine vorhandene mit der Integration wiederverwenden. Weitere Informationen zum Erstellen einer benutzerseitig zugewiesenen verwalteten Identität finden Sie unter Erstellen einer benutzerseitig zugewiesenen verwalteten Identität über das Azure-Portal.

Delegieren einer benutzerseitig zugewiesenen verwalteten Identität an Key Vault

Definieren Sie Zugriffsrichtlinien, um die benutzerseitig zugewiesene verwaltete Identität mit Ihrem Key Vault zu verwenden:

  1. Wechseln Sie im Azure-Portal zu Key Vault.

  2. Wählen Sie den Key Vault aus, der Ihr Zertifikat enthält.

  3. Wenn Sie das Berechtigungsmodell Tresorzugriffsrichtlinie verwenden: Wählen Sie Zugriffsrichtlinien, + Zugriffsrichtlinie hinzufügen, für Geheimnisberechtigungen die Option Abrufen und dann für Prinzipal auswählen Ihre benutzerseitig zugewiesene verwaltete Identität aus. Klicken Sie dann auf Speichern.

    Wenn Sie die rollenbasierte Zugriffssteuerung in Azure verwenden, gehen Sie wie im Artikel Zuweisen des Zugriffs einer verwalteten Identität auf eine Ressource über das Azure-Portal vor, und weisen Sie der benutzerseitig zugewiesenen verwalteten Identität die Rolle Geheimnisbenutzer für Schlüsseltresore für die Azure Key Vault-Instanz zu.

Überprüfen der Firewallberechtigungen für Key Vault

Ab dem 15. März 2021 erkennt Key Vault Application Gateway als vertrauenswürdigen Dienst an, indem benutzerseitig verwaltete Identitäten für die Authentifizierung bei Azure Key Vault genutzt werden. Mit der Verwendung von Dienstendpunkten und der Aktivierung der Option für vertrauenswürdige Dienste für die Firewall des Key Vault können Sie eine sichere Netzwerkgrenze in Azure erstellen. Sie können den Zugriff auf Datenverkehr aus allen Netzwerken (einschließlich Internetdatenverkehr) auf Key Vault verweigern, aber weiterhin der Application Gateway-Ressource in Ihrem Abonnement den Zugriff auf Key Vault ermöglichen.

Wenn Sie einen eingeschränkten Key Vault verwenden, führen Sie die folgenden Schritte aus, um Application Gateway für die Verwendung von Firewalls und virtuellen Netzwerken zu konfigurieren:

Tipp

Die Schritte 1 bis 3 sind nicht erforderlich, wenn für Ihre Key Vault-Instanz ein privater Endpunkt aktiviert ist. Das Anwendungsgateway kann über die private IP-Adresse auf den Key Vault zugreifen.

Wichtig

Wenn Sie private Endpunkte verwenden, um auf Key Vault zuzugreifen, müssen Sie die private DNS-Zone „privatelink.vaultcore.azure.net“, die den entsprechenden Eintrag für die referenzierte Key Vault-Instanz enthält, mit dem virtuellen Netzwerk verknüpfen, das Application Gateway enthält. Benutzerdefinierte DNS-Server können weiterhin im virtuellen Netzwerk anstelle der von Azure bereitgestellten Resolver verwendet werden, die private DNS-Zone muss jedoch ebenfalls erneut Standard mit dem virtuellen Netzwerk verknüpft sein.

  1. Wählen Sie im Azure-Portal in Ihrem Key Vault Netzwerk aus.

  2. Wählen Sie auf der Registerkarte Firewalls und virtuelle Netzwerke die Option Ausgewählte Netzwerke aus.

  3. Wählen Sie unter Virtuelle Netzwerke die Option + Vorhandene virtuelle Netzwerke hinzufügen aus, und fügen Sie dann das virtuelle Netzwerk und Subnetz für Ihre Application Gateway-Instanz hinzu. Wenn Sie dazu aufgefordert werden, stellen Sie sicher, dass das Kontrollkästchen Konfigurieren Sie zu diesem Zeitpunkt keine „Microsoft.KeyVault“-Dienstendpunkte deaktiviert ist, um sicherzustellen, dass der Dienstendpunkt Microsoft.KeyVault im Subnetz aktiviert ist.

  4. Wählen Sie Ja aus, um vertrauenswürdigen Diensten die Umgehung der Key Vault-Firewall zu gestatten.

    Screenshot that shows selections for configuring Application Gateway to use firewalls and virtual networks.

Hinweis

Wenn Sie die Application Gateway-Instanz über eine ARM-Vorlage, entweder mithilfe der Azure CLI oder mit PowerShell, oder über eine im Azure-Portal bereitgestellte Azure-Anwendung bereitstellen, wird das SSL-Zertifikat im Key Vault als Base64-codierte PFX-Datei gespeichert. Sie müssen die unter Verwenden von Azure Key Vault zum Übergeben eines sicheren Parameterwerts während der Bereitstellung aufgeführten Schritte durchführen.

Es ist besonders wichtig, enabledForTemplateDeployment auf true festzulegen. Das Zertifikat hat eventuell ein Kennwort. Im folgenden Beispiel wird eine mögliche Konfiguration für den sslCertificates-Eintrag in properties für die Konfiguration der ARM-Vorlage für App Gateway veranschaulicht, wenn ein Zertifikat mit einem Kennwort vorliegt.

"sslCertificates": [
     {
         "name": "appGwSslCertificate",
         "properties": {
             "data": "[parameters('appGatewaySSLCertificateData')]",
            "password": "[parameters('appGatewaySSLCertificatePassword')]"
        }
    }
]

Die Werte appGatewaySSLCertificateData und appGatewaySSLCertificatePassword werden, wie unter Referenzieren von Geheimnissen mit einer dynamischen ID beschrieben, im Key Vault gesucht. Sie können die Funktionsweise der Suche nachvollziehen, indem Sie die Verweise von parameters('secretName') zurückverfolgen. Wenn das Zertifikat Kennwortlos ist, lassen Sie den password-Eintrag aus.

Konfigurieren des Application Gateway-Listeners

Key Vault-Berechtigungsmodell „Tresorzugriffsrichtlinie“

Navigieren Sie im Azure-Portal zu Ihrer Application Gateway-Instanz, und wählen Sie die Registerkarte Listener aus. Wählen Sie Listener hinzufügen (oder einen vorhandenen Listener) aus, und geben Sie als Protokoll HTTPS an.

Wählen Sie unter Zertifikat auswählen die Option Neu erstellen und dann Unter HTTPS-Einstellungen die Option Zertifikat aus Key Vault auswählen aus.

Geben Sie als Zertifikatsnamen einen Anzeigenamen für das Zertifikat ein, auf das in Key Vault verwiesen werden soll. Wählen Sie Ihre verwaltete Identität, den Key Vault und das Zertifikat aus.

Wählen Sie nach der Auswahl Hinzufügen (bei Erstellung) oder Speichern (bei Bearbeitung) aus, um das referenzierte Key Vault-Zertifikat auf den Listener anzuwenden.

Key Vault-Berechtigungsmodell „Rollenbasierte Zugriffssteuerung in Azure“

Application Gateway unterstützt Zertifikate, auf die in Key Vault über das Berechtigungsmodell für die rollenbasierte Zugriffssteuerung verwiesen wird. Die ersten Schritte zum Verweisen auf den Key Vault müssen über eine ARM-Vorlage, Bicep, die Befehlszeilenschnittstelle oder PowerShell ausgeführt werden.

Hinweis

Das Angeben von Azure Key Vault-Zertifikaten für das Berechtigungsmodell „Rollenbasierte Zugriffssteuerung“ über das Portal wird nicht unterstützt.

In diesem Beispiel wird PowerShell verwendet, um auf ein neues Key Vault-Geheimnis zu verweisen.

# Get the Application Gateway we want to modify
$appgw = Get-AzApplicationGateway -Name MyApplicationGateway -ResourceGroupName MyResourceGroup
# Specify the resource id to the user assigned managed identity - This can be found by going to the properties of the managed identity
Set-AzApplicationGatewayIdentity -ApplicationGateway $appgw -UserAssignedIdentityId "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/MyResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/MyManagedIdentity"
# Get the secret ID from Key Vault
$secret = Get-AzKeyVaultSecret -VaultName "MyKeyVault" -Name "CertificateName"
$secretId = $secret.Id.Replace($secret.Version, "") # Remove the secret version so Application Gateway uses the latest version in future syncs
# Specify the secret ID from Key Vault 
Add-AzApplicationGatewaySslCertificate -KeyVaultSecretId $secretId -ApplicationGateway $appgw -Name $secret.Name
# Commit the changes to the Application Gateway
Set-AzApplicationGateway -ApplicationGateway $appgw

Navigieren Sie, nachdem die Befehle ausgeführt wurden, im Azure-Portal zu Ihrer Application Gateway-Instanz, und wählen Sie die Registerkarte „Listener“ aus. Klicken Sie auf „Listener hinzufügen“ (oder wählen Sie einen vorhandenen aus), und geben Sie als Protokoll „HTTPS“ an.

Wählen Sie unter Zertifikat auswählen das Zertifikat aus, das in den vorherigen Schritten benannt wurde. Wählen Sie nach der Auswahl Hinzufügen (bei Erstellung) oder Speichern (bei Bearbeitung) aus, um das referenzierte Key Vault-Zertifikat auf den Listener anzuwenden.

Untersuchen und Beheben von Key Vault-Fehlern

Hinweis

Es ist wichtig, alle Auswirkungen auf Ihre Anwendungsgatewayressource zu berücksichtigen, wenn Sie Änderungen vornehmen oder den Zugriff auf Ihre Key Vault-Ressource widerrufen. Wenn Ihr Anwendungsgateway nicht auf den zugeordneten Schlüsseltresor zugreifen kann oder das Zertifikatobjekt darin gefunden wird, legt das Anwendungsgateway den Listener automatisch auf einen deaktivierten Zustand fest.

Sie können dieses benutzergesteuerte Ereignis identifizieren, indem Sie den Ressourcenstatus für Ihr Anwendungsgateway anzeigen. Weitere Informationen

Azure Application Gateway ruft nicht nur alle vier Stunden die erneuerte Zertifikatversion von Key Vault ab. Es protokolliert auch alle Fehler und ist in Azure Advisor integriert, um ggf. vorhandene Fehlkonfigurationen sowie eine Empfehlung für deren Korrektur anzuzeigen.

  1. Melden Sie sich beim Azure-Portal an.
  2. Wählen Sie „Advisor“ aus.
  3. Wählen Sie im linken Menü die Kategorie „Optimaler Betrieb“ aus.
  4. Sie finden eine Empfehlung mit dem Titel "Beheben eines Azure Key Vault-Problems für Ihr Anwendungsgateway", wenn dieses Problem von Ihrem Gateway auftritt. Stellen Sie sicher, dass das richtige Abonnement in den obigen Dropdownoptionen ausgewählt ist.
  5. Treffen Sie die entsprechende Auswahl, um die Fehlerdetails, die zugeordnete Schlüsseltresorressource und den Leitfaden zur Problembehandlung für Ihr spezifisches Problem anzuzeigen.

Durch die Identifizierung eines solchen Ereignisses über Azure Advisor oder Resource Health können Sie ggf. vorhandene Konfigurationsprobleme für Ihre Key Vault-Instanz schnell beheben. Es wird dringend empfohlen, Warnungen von Azure Advisor und Resource Health zu nutzen, um bei der Erkennung eines Problems auf dem Laufenden zu bleiben.

Verwenden Sie für die Advisor-Warnung "Azure Key Vault-Problem für Ihr Anwendungsgateway beheben" in dem empfehlungstyp, der angezeigt wird:
Diagram that shows steps for Advisor alert.

Sie können die Warnung "Ressourcenintegrität" wie dargestellt konfigurieren:
Diagram that shows steps for Resource health alert.

Nächste Schritte

Konfigurieren von TLS-Terminierung mit Key Vault-Zertifikaten mithilfe von Azure PowerShell