Share via


Verfügbarmachen von Anwendungen im Internet mit TLS-Abschluss mit Application Gateway

Hinweis

Azure Spring Apps ist der neue Name für den Azure Spring Cloud-Dienst. Obwohl der Dienst einen neuen Namen hat, wird der alte Name noch an einigen Stellen verwendet, solange wir Ressourcen wie Screenshots, Videos und Diagramme aktualisieren.

In diesem Artikel wird die Vorgehensweise beim Verfügbarmachen von Anwendungen für das Internet mithilfe von Application Gateway erläutert.

Wenn eine Azure Spring Apps-Dienstinstanz in Ihrem virtuellen Netzwerk (VNet) bereitgestellt wird, kann auf Anwendungen in der Dienstinstanz nur im privaten Netzwerk zugegriffen werden. Um die Anwendungen über das Internet verfügbar zu machen, müssen Sie eine Integration in Azure Application Gateway durchführen. Der eingehende verschlüsselte Datenverkehr kann am Anwendungsgateway entschlüsselt oder verschlüsselt an Azure Spring Apps übergeben werden, um End-to-End-TLS/-SSL zu erreichen. Zu Entwicklungs- und Testzwecken können Sie mit der SSL-Terminierung am Anwendungsgateway beginnen. Dies wird in diesem Leitfaden behandelt. Für die Produktion empfehlen wir End-to-End-TLS/-SSL mit privatem Zertifikat, wie unter Verfügbarmachen von Anwendungen mit End-to-End-TLS in einem virtuellen Netzwerk beschrieben.

Voraussetzungen

Konfigurieren von Application Gateway für Azure Spring Apps

Es wird empfohlen, dass der Domänenname, wie er vom Browser angezeigt wird, mit dem Hostnamen identisch ist, den Application Gateway verwendet, um Datenverkehr an das Azure Spring Apps-Back-End weiterzuleiten. Diese Empfehlung bietet die beste Erfahrung bei der Verwendung von Application Gateway, um Anwendungen verfügbar zu machen, die in Azure Spring Apps gehostet werden und sich in einem virtuellen Netzwerk befinden. Wenn sich die von Application Gateway verfügbar gemachte Domäne von der Domäne unterscheidet, die von Azure Spring Apps akzeptiert wird, können Cookies und generierte Umleitungs-URLs (als Beispiel) beschädigt werden. Weitere Informationen finden Sie unter Beibehalten von Hostnamen.

Führen Sie die folgenden Schritte aus, um Application Gateway vor Azure Spring Apps in einem privaten VNet zu konfigurieren.

  1. Befolgen Sie die Anweisungen unter Bereitstellen von Azure Spring Apps in einem virtuellen Netzwerk.
  2. Befolgen Sie die Anweisungen unter Zugreifen auf eine Anwendung im privaten Netzwerk.
  3. Rufen Sie ein Zertifikat für Ihre gewünschte Domäne ab, und speichern Sie es in Key Vault. Weitere Informationen finden Sie unter Tutorial: Importieren eines Zertifikats in Azure Key Vault.
  4. Konfigurieren Sie eine benutzerdefinierte Domäne und ein entsprechendes Zertifikat aus Key Vault in einer App, die unter Azure Spring Apps bereitgestellt wird. Weitere Informationen finden Sie unter Tutorial: Zuordnen einer bereits vorhandenen benutzerdefinierten Domäne zu Azure Spring Apps.
  5. Bereitstellen des Anwendungsgateways in einem virtuellen Netzwerk, das gemäß der folgenden Liste konfiguriert ist:
    • Verwenden Sie Azure Spring Apps im Back-End-Pool, auf den die Domäne mit dem Suffix private.azuremicroservices.io verweist.
    • Schließen Sie einen HTTPS-Listener ein, der dasselbe Zertifikat von Key Vault verwendet.
    • Konfigurieren Sie das virtuelle Netzwerk mit HTTP-Einstellungen, die den auf Azure Spring Apps konfigurierten benutzerdefinierten Domänennamen anstelle der Domäne mit dem Suffix private.azuremicroservices.io verwenden.
  6. Konfigurieren Sie Ihr öffentliches DNS so, dass es auf das Anwendungsgateway verweist.

Definieren von Variablen

Verwenden Sie als nächstes die folgenden Befehle, um die Variablen für die Ressourcengruppe und das virtuelle Netzwerk zu definieren, die Sie gemäß der Beschreibung unter Bereitstellen von Azure Spring Apps in einem virtuellen Netzwerk erstellt haben. Ersetzen Sie die Platzhalter <...> durch reale Werte basierend auf Ihrer tatsächlichen Umgebung. Wenn Sie SPRING_APP_PRIVATE_FQDN definieren, entfernen Sie https:// aus dem URI.

export SUBSCRIPTION='<subscription-id>'
export RESOURCE_GROUP='<resource-group-name>'
export LOCATION='eastus'
export SPRING_CLOUD_NAME='<name-of-Azure-Spring-Apps-instance>'
export APPNAME='<name-of-app-in-Azure-Spring-Apps>'
export SPRING_APP_PRIVATE_FQDN='$APPNAME.private.azuremicroservices.io'
export VIRTUAL_NETWORK_NAME='azure-spring-apps-vnet'
export APPLICATION_GATEWAY_SUBNET_NAME='app-gw-subnet'
export APPLICATION_GATEWAY_SUBNET_CIDR='10.1.2.0/24'

Anmelden bei Azure

Verwenden Sie den folgenden Befehl, um sich bei der Azure CLI anzumelden und Ihr aktives Abonnement auszuwählen.

az login
az account set --subscription $SUBSCRIPTION

Konfigurieren des öffentlichen Domänennamens unter Azure Spring Apps

Der Datenverkehr wird mithilfe des öffentlichen Domänennamens in die unter Azure Spring Apps bereitgestellte Anwendung gelangen. Um Ihre Anwendung so zu konfigurieren, dass sie auf diesen Hostnamen über HTTPS lauscht, verwenden Sie die folgenden Befehle, um Ihrer App eine benutzerdefinierte Domäne hinzuzufügen. Ersetzen Sie dabei die Platzhalter <...> durch reale Werte:

export KV_NAME='<name-of-key-vault>'
export KV_RG='<resource-group-name-of-key-vault>'
export CERT_NAME_IN_KV='<name-of-certificate-with-intermediaries-in-key-vault>'
export DOMAIN_NAME=myapp.mydomain.com

az spring app custom-domain bind \
    --resource-group $RESOURCE_GROUP \
    --service $SPRING_CLOUD_NAME \
    --domain-name $DOMAIN_NAME \
    --app $APPNAME

Erstellen von Netzwerkressourcen

Das zu erstellende Anwendungsgateway tritt dem gleichen virtuellen Netzwerk wie die Azure Spring Apps-Dienstinstanz bei. Erstellen Sie zunächst ein neues Subnetz für das Anwendungsgateway im virtuellen Netzwerk. Erstellen Sie anschließend wie im folgenden Beispiel gezeigt eine öffentliche IP-Adresse als Front-End des Anwendungsgateways:

export APPLICATION_GATEWAY_PUBLIC_IP_NAME='app-gw-public-ip'
az network vnet subnet create \
    --name $APPLICATION_GATEWAY_SUBNET_NAME \
    --resource-group $RESOURCE_GROUP \
    --vnet-name $VIRTUAL_NETWORK_NAME \
    --address-prefix $APPLICATION_GATEWAY_SUBNET_CIDR
az network public-ip create \
    --resource-group $RESOURCE_GROUP \
    --location $LOCATION \
    --name $APPLICATION_GATEWAY_PUBLIC_IP_NAME \
    --allocation-method Static \
    --sku Standard

Erstellen einer verwalteten Identität für das Anwendungsgateway

Ihr Anwendungsgateway muss auf Key Vault zugreifen können, um das Zertifikat zu lesen. Zu diesem Zweck verwendet das Anwendungsgateway eine benutzerseitig zugewiesene verwaltete Identität. Weitere Informationen finden Sie unter Was sind verwaltete Identitäten für Azure-Ressourcen? Erstellen Sie die verwaltete Identität mithilfe des folgenden Befehls, und ersetzen Sie den <Platzhalter ...>

export APPGW_IDENTITY_NAME='<name-for-appgw-managed-identity>'
az identity create \
    --resource-group $RESOURCE_GROUP \
    --name $APPGW_IDENTITY_NAME

Verwenden Sie dann den folgenden Befehl, um die Objekt-ID (objectId) für die verwaltete Identität abzurufen. Dieser Wert wird später verwendet, um Rechte für den Zugriff auf das Zertifikat in Key Vault zu erteilen.

export APPGW_IDENTITY_CLIENTID=$(az identity show \
    --resource-group $RESOURCE_GROUP \
    --name $APPGW_IDENTITY_NAME \
    --query clientId \
    --output tsv)
export APPGW_IDENTITY_OID=$(az ad sp show \
    --id $APPGW_IDENTITY_CLIENTID \
    --query objectId \
    --output tsv)

Festlegen der Richtlinie für Key Vault

Konfigurieren Sie Key Vault mit dem folgenden Befehl, damit die verwaltete Identität für das Anwendungsgateway auf das in Key Vault gespeicherte Zertifikat zugreifen kann:

az keyvault set-policy \
    --resource-group $KV_RG \
    --name $KV_NAME \
    --object-id $APPGW_IDENTITY_OID \
    --secret-permissions get list \
    --certificate-permissions get list

Erstellen eines Anwendungsgateways

Erstellen Sie ein Anwendungsgateway mit az network application-gateway create, und geben Sie den privaten vollqualifizierten Domänennamen (FQDN) Ihrer Anwendung als Server im Back-End-Pool an. Stellen Sie sicher, dass Sie die benutzerseitig zugewiesene verwaltete Identität verwenden und auf das Zertifikat in Key Vault verweisen, indem Sie die Geheimnis-ID des Zertifikats verwenden.

export APPGW_NAME='<name-for-application-gateway>'
export CERT_NAME_IN_KV='<name-of-certificate-in-key-vault>'
export KEYVAULT_SECRET_ID_FOR_CERT=$(az keyvault certificate show \
    --name $CERT_NAME_IN_KV \
    --vault-name $KV_NAME \
    --query sid \
    --output tsv)

az network application-gateway create \
    --name $APPGW_NAME \
    --resource-group $RESOURCE_GROUP \
    --location $LOCATION \
    --capacity 2 \
    --sku Standard_v2 \
    --frontend-port 443 \
    --http-settings-cookie-based-affinity Disabled \
    --http-settings-port 80 \
    --http-settings-protocol Http \
    --public-ip-address $APPLICATION_GATEWAY_PUBLIC_IP_NAME \
    --vnet-name $VIRTUAL_NETWORK_NAME \
    --subnet $APPLICATION_GATEWAY_SUBNET_NAME \
    --servers $SPRING_APP_PRIVATE_FQDN \
    --key-vault-secret-id $KEYVAULT_SECRET_ID_FOR_CERT \
    --identity $APPGW_IDENTITY_NAME

Die Erstellung des Anwendungsgateways in Azure kann bis zu 30 Minuten in Anspruch nehmen.

Aktualisieren der HTTP-Einstellungen zur Verwendung des Domänennamens für das Back-End

Aktualisieren Sie die HTTP-Einstellungen so, dass der öffentliche Domänenname als Hostname anstelle der Domäne mit dem Suffix .private.azuremicroservices.io verwendet wird, um Datenverkehr an Azure Spring Apps zu senden.

az network application-gateway http-settings update \
    --resource-group $RESOURCE_GROUP \
    --gateway-name $APPGW_NAME \
    --host-name-from-backend-pool false \
    --host-name $DOMAIN_NAME \
    --name appGatewayBackendHttpSettings

Überprüfen der Bereitstellung des Anwendungsgateways

Überprüfen Sie nach der Erstellung die Back-End-Integrität mit dem folgenden Befehl. Mit der Ausgabe dieses Befehls können Sie bestimmen, ob das Anwendungsgateway Ihre Anwendung über seinen privaten vollqualifizierten Domänennamen (Fully Qualified Domain Name, FQDN) erreicht.

az network application-gateway show-backend-health \
    --name $APPGW_NAME \
    --resource-group $RESOURCE_GROUP

Die Ausgabe gibt den fehlerfreien Status des Back-End-Pools an, wie im folgenden Beispiel gezeigt:

{
  "backendAddressPools": [
    {
      "backendHttpSettingsCollection": [
        {
          "servers": [
            {
              "address": "my-azure-spring-apps-hello-vnet.private.azuremicroservices.io",
              "health": "Healthy",
              "healthProbeLog": "Success. Received 200 status code",
              "ipConfiguration": null
            }
          ]
        }
      ]
    }
  ]
}

Konfigurieren von DNS und Zugreifen auf die Anwendung

Konfigurieren Sie das öffentliche DNS so, dass es mithilfe eines CNAME- oder A-Eintrags auf das Anwendungsgateway verweist. Sie können die öffentliche Adresse für das Anwendungsgateway mithilfe des folgenden Befehls ermitteln:

az network public-ip show \
    --resource-group $RESOURCE_GROUP \
    --name $APPLICATION_GATEWAY_PUBLIC_IP_NAME \
    --query [ipAddress] \
    --output tsv

Sie können jetzt mithilfe des öffentlichen Domänennamens auf die Anwendung zugreifen.

Bereinigen von Ressourcen

Falls Sie mit weiteren Artikeln fortfahren möchten, sollten Sie die Ressourcen nicht bereinigen. Wenn Sie die Ressourcen nicht mehr benötigen, löschen Sie die Ressourcengruppe. Dadurch werden die Ressourcen in der Ressourcengruppe gelöscht. Wenn Sie die Ressourcengruppe mithilfe der Azure CLI löschen möchten, verwenden Sie die folgenden Befehle:

az group delete --name $RESOURCE_GROUP

Nächste Schritte