Delen via


Toepassingen beschikbaar maken met end-to-end TLS in een virtueel netwerk

Notitie

Azure Spring Apps is de nieuwe naam voor de Azure Spring Cloud-service. Hoewel de service een nieuwe naam heeft, ziet u de oude naam op sommige plaatsen terwijl we werken aan het bijwerken van assets, zoals schermopnamen, video's en diagrammen.

Dit artikel is van toepassing op: ✔️ Basic/Standard ✔️ Enterprise

In dit artikel wordt uitgelegd hoe u toepassingen beschikbaar maakt op internet met Application Gateway. Wanneer een Azure Spring Apps-service-exemplaar wordt geïmplementeerd in uw virtuele netwerk, zijn toepassingen op het service-exemplaar alleen toegankelijk in het privénetwerk. Als u de toepassingen toegankelijk wilt maken op internet, moet u integreren met Azure-toepassing Gateway.

Vereisten

Application Gateway configureren voor Azure Spring Apps

Het is raadzaam dat de domeinnaam, zoals wordt gezien door de browser, dezelfde is als de hostnaam die Application Gateway gebruikt om verkeer naar de Back-end van Azure Spring Apps te leiden. Deze aanbeveling biedt de beste ervaring bij het gebruik van Application Gateway om toepassingen beschikbaar te maken die worden gehost in Azure Spring Apps en zich in een virtueel netwerk bevinden. Als het domein dat wordt weergegeven door Application Gateway verschilt van het domein dat wordt geaccepteerd door Azure Spring Apps, kunnen cookies en gegenereerde omleidings-URL's (bijvoorbeeld) worden verbroken. Zie Behoud van hostnamen voor meer informatie.

Voer de volgende stappen uit om Application Gateway vóór Azure Spring Apps te configureren.

  1. Volg de instructies in Azure Spring Apps implementeren in een virtueel netwerk.
  2. Volg de instructies in Access uw toepassing in een particulier netwerk.
  3. Verwerf een certificaat voor uw keuzedomein en sla dit op in Key Vault. Zie Zelfstudie: Een certificaat importeren in Azure Key Vault voor meer informatie.
  4. Configureer een aangepast domein en het bijbehorende certificaat van Key Vault op een app die is geïmplementeerd in Azure Spring Apps. Zie Zelfstudie: Een bestaand aangepast domein toewijzen aan Azure Spring Apps voor meer informatie.
  5. Implementeer Application Gateway in een virtueel netwerk dat is geconfigureerd volgens de volgende lijst:
    • Gebruik Azure Spring Apps in de back-endpool waarnaar wordt verwezen door het domeinachtervoegsel met private.azuremicroservices.io.
    • Neem een HTTPS-listener op met hetzelfde certificaat uit Key Vault.
    • Configureer het virtuele netwerk met HTTP-instellingen die gebruikmaken van de aangepaste domeinnaam die is geconfigureerd in Azure Spring Apps in plaats van het domeinachtervoegsel met private.azuremicroservices.io.
  6. Configureer uw openbare DNS zodat deze verwijst naar Application Gateway.

Variabelen definiëren

Gebruik vervolgens de volgende opdrachten om variabelen te definiëren voor de resourcegroep en het virtuele netwerk dat u hebt gemaakt zoals beschreven in Azure Spring Apps implementeren in een virtueel netwerk. Pas de waarden aan op basis van uw echte omgeving. Wanneer u definieert SPRING_APP_PRIVATE_FQDN, verwijdert u deze https:// uit de URI.

export SUBSCRIPTION='subscription-id'
export RESOURCE_GROUP='my-resource-group'
export LOCATION='eastus'
export SPRING_CLOUD_NAME='name-of-spring-cloud-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'

Aanmelden bij Azure

Gebruik de volgende opdracht om u aan te melden bij de Azure CLI en uw actieve abonnement te kiezen.

az login
az account set --subscription $SUBSCRIPTION

Een certificaat verkrijgen

Voor productie-implementaties gebruikt u waarschijnlijk een openbaar ondertekend certificaat. In dit geval importeert u het certificaat in Azure Key Vault. Zie Zelfstudie: Een certificaat importeren in Azure Key Vault voor meer informatie. Zorg ervoor dat het certificaat de hele certificaatketen bevat.

De naam van het openbare domein configureren in Azure Spring Apps

Verkeer voert de toepassing in die is geïmplementeerd in Azure Spring Apps met behulp van de openbare domeinnaam. Als u uw toepassing wilt configureren om naar deze hostnaam te luisteren en dit via HTTPS te doen, gebruikt u de volgende opdrachten om een aangepast domein toe te voegen aan uw app:

export KV_NAME='name-of-key-vault'
export KV_RG='resource-group-name-of-key-vault'
export CERT_NAME_IN_AZURE_SPRING_APPS='name-of-certificate-in-Azure-Spring-Apps'
export CERT_NAME_IN_KEY_VAULT='name-of-certificate-with-intermediaries-in-key-vault'
export DOMAIN_NAME=myapp.mydomain.com

# provide permissions to Azure Spring Apps to read the certificate from Key Vault:
export VAULTURI=$(az keyvault show \
    --resource-group $KV_RG \
    --name $KV_NAME \
    --query properties.vaultUri \
    --output tsv)

# get the object id for the Azure Spring Apps Domain-Management Service Principal:
export ASADM_OID=$(az ad sp show \
    --id 03b39d0f-4213-4864-a245-b1476ec03169 \
    --query objectId \
    --output tsv)

# allow this Service Principal to read and list certificates and secrets from Key Vault:
az keyvault set-policy \
    --resource-group $KV_RG \
    --name $KV_NAME \
    --object-id $ASADM_OID \
    --certificate-permissions get list \
    --secret-permissions get list

# add custom domain name and configure TLS using the certificate:
az spring certificate add \
    --resource-group $RESOURCE_GROUP \
    --service $SPRING_CLOUD_NAME \
    --name $CERT_NAME_IN_AZURE_SPRING_APPS \
    --vault-certificate-name $CERT_NAME_IN_KEY_VAULT \
    --vault-uri $VAULTURI
az spring app custom-domain bind \
    --resource-group $RESOURCE_GROUP \
    --service $SPRING_CLOUD_NAME \
    --domain-name $DOMAIN_NAME \
    --certificate $CERT_NAME_IN_AZURE_SPRING_APPS \
    --app $APPNAME

Netwerkbronnen maken

De Azure-toepassing Gateway die moet worden gemaakt, wordt gekoppeld aan hetzelfde virtuele netwerk als het gekoppelde virtuele netwerk naar het Azure Spring Apps-service-exemplaar. Maak eerst een nieuw subnet voor de Toepassingsgateway in het virtuele netwerk met behulp van az network vnet subnet createen maak ook een openbaar IP-adres als de front-end van de Toepassingsgateway met behulp van az network public-ip create.

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

Een beheerde identiteit maken voor Application Gateway

Application Gateway moet toegang hebben tot Key Vault om het certificaat te kunnen lezen. Hiervoor wordt een door de gebruiker toegewezen beheerde identiteit gebruikt. Maak de beheerde identiteit met behulp van de volgende opdracht:

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

Haal vervolgens de object-id op voor de beheerde identiteit, omdat deze later wordt gebruikt om toegang te krijgen tot het certificaat in Key Vault:

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)

Beleid instellen voor Key Vault

Configureer Key Vault met behulp van de volgende opdracht, zodat de beheerde identiteit voor Application Gateway toegang heeft tot het certificaat dat is opgeslagen in Key Vault:

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

Een toepassingsgateway maken

Maak een toepassingsgateway met behulp van az network application-gateway create en geef de privé FQDN (Fully Qualified Domain Name) van uw toepassing op als servers in de back-endpool. Zorg ervoor dat u de door de gebruiker toegewezen beheerde identiteit gebruikt en verwijst naar het certificaat in Key Vault met behulp van de geheime id van het certificaat. Werk vervolgens de HTTP-instelling bij met behulp van az network application-gateway http-settings update de openbare hostnaam.

export APPGW_NAME='name-for-application-gateway'

export KEYVAULT_SECRET_ID_FOR_CERT=$(az keyvault certificate show \
    --name $CERT_NAME_IN_KEY_VAULT \
    --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 443 \
    --http-settings-protocol Https \
    --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

Het kan tot 30 minuten duren om de toepassingsgateway te maken in Azure.

HTTP-Instellingen bijwerken om de domeinnaam naar de back-end te gebruiken

Werk de HTTP-instellingen bij om de openbare domeinnaam te gebruiken als hostnaam in plaats van het domeinachtervoegsel '.private.azuremicroservices.io' om verkeer naar Azure Spring Apps te verzenden.

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

De implementatie van Application Gateway controleren

Nadat deze is gemaakt, controleert u de back-endstatus met behulp van de volgende opdracht. Met de uitvoer van deze opdracht kunt u bepalen of de toepassingsgateway uw toepassing bereikt via de eigen FQDN.

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

De uitvoer geeft de status van de back-endpool aan, zoals wordt weergegeven in het volgende voorbeeld:

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

DNS configureren en toegang krijgen tot de toepassing

Configureer nu de openbare DNS zodat deze verwijst naar Application Gateway met behulp van een CNAME- of A-record. U vindt het openbare adres voor Application Gateway met behulp van de volgende opdracht:

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

U hebt nu toegang tot de toepassing met behulp van de openbare domeinnaam.

Volgende stappen