Zveřejnění aplikací s kompletním protokolem TLS ve virtuální síti

Poznámka:

Azure Spring Apps je nový název služby Azure Spring Cloud. Přestože má služba nový název, na některých místech uvidíte starý název, protože pracujeme na aktualizaci prostředků, jako jsou snímky obrazovky, videa a diagramy.

Tento článek se vztahuje na: ✔️ Basic/Standard ✔️ Enterprise

Tento článek vysvětluje, jak zpřístupnit aplikace na internetu pomocí služby Application Gateway. Když je instance služby Azure Spring Apps nasazená ve vaší virtuální síti, aplikace v instanci služby jsou přístupné jenom v privátní síti. Pokud chcete, aby aplikace byly přístupné na internetu, je potřeba integrovat se službou Aplikace Azure Gateway.

Požadavky

  • Azure CLI verze 2.0.4 nebo novější.
  • Instance služby Azure Spring Apps nasazená ve virtuální síti s aplikací přístupnou přes privátní síť s použitím výchozí .private.azuremicroservices.io přípony domény. Další informace najdete v tématu Nasazení služby Azure Spring Apps ve virtuální síti.
  • Vlastní doména, která se má použít pro přístup k aplikaci.
  • Certifikát uložený ve službě Key Vault, který odpovídá vlastní doméně, která se má použít k navázání naslouchacího procesu HTTPS. Další informace najdete v tématu Kurz: Import certifikátu ve službě Azure Key Vault.

Konfigurace služby Application Gateway pro Azure Spring Apps

Doporučujeme, aby název domény, jak je vidět v prohlížeči, byl stejný jako název hostitele, který Application Gateway používá k směrování provozu do back-endu Azure Spring Apps. Toto doporučení poskytuje nejlepší prostředí při používání služby Application Gateway ke zveřejnění aplikací hostovaných v Azure Spring Apps a umístění ve virtuální síti. Pokud se doména vystavená službou Application Gateway liší od domény přijaté službou Azure Spring Apps, soubory cookie a vygenerované adresy URL pro přesměrování (například) můžou být přerušené. Další informace naleznete v tématu Zachování názvu hostitele.

Pokud chcete službu Application Gateway nakonfigurovat před azure Spring Apps, postupujte následovně.

  1. Postupujte podle pokynů v tématu Nasazení azure Spring Apps ve virtuální síti.
  2. Postupujte podle pokynů v Accessu k aplikaci v privátní síti.
  3. Získejte certifikát pro zvolenou doménu a uložte ho ve službě Key Vault. Další informace najdete v tématu Kurz: Import certifikátu ve službě Azure Key Vault.
  4. Nakonfigurujte vlastní doménu a odpovídající certifikát ze služby Key Vault v aplikaci nasazené do Azure Spring Apps. Další informace najdete v tématu Kurz: Mapování existující vlastní domény na Azure Spring Apps.
  5. Nasaďte službu Application Gateway ve virtuální síti nakonfigurované podle následujícího seznamu:
    • Použijte Azure Spring Apps v back-endovém fondu, na který odkazuje přípona domény s private.azuremicroservices.iopříponou .
    • Zahrňte naslouchací proces HTTPS, který používá stejný certifikát ze služby Key Vault.
    • Nakonfigurujte virtuální síť s nastavením HTTP, které místo přípony private.azuremicroservices.iodomény s příponou domény používají vlastní název domény nakonfigurovaný v Azure Spring Apps.
  6. Nakonfigurujte veřejný DNS tak, aby odkazovali na Službu Application Gateway.

Definování proměnných

Dále pomocí následujících příkazů definujte proměnné pro skupinu prostředků a virtuální síť, kterou jste vytvořili podle pokynů v nasazení Azure Spring Apps ve virtuální síti. Přizpůsobte hodnoty na základě skutečného prostředí. Při definování SPRING_APP_PRIVATE_FQDNodeberte https:// z identifikátoru 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'

Přihlášení k Azure

Pomocí následujícího příkazu se přihlaste k Azure CLI a zvolte aktivní předplatné.

az login
az account set --subscription $SUBSCRIPTION

Získání certifikátu

Pro produkční nasazení budete pravděpodobně používat veřejně podepsaný certifikát. V tomto případě importujte certifikát do služby Azure Key Vault. Další informace najdete v tématu Kurz: Import certifikátu ve službě Azure Key Vault. Ujistěte se, že certifikát obsahuje celý řetěz certifikátů.

Konfigurace názvu veřejné domény v Azure Spring Apps

Provoz zadá aplikaci nasazenou v Azure Spring Apps s použitím názvu veřejné domény. Pokud chcete aplikaci nakonfigurovat tak, aby naslouchala tomuto názvu hostitele a aby to udělala přes HTTPS, přidejte do aplikace vlastní doménu pomocí následujících příkazů:

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

Vytvoření síťových prostředků

Brána Aplikace Azure, která se má vytvořit, připojí stejnou virtuální síť jako partnerský vztah k instanci služby Azure Spring Apps. Nejprve vytvořte novou podsíť pro službu Application Gateway ve virtuální síti pomocí az network vnet subnet createa také vytvořte veřejnou IP adresu jako front-end služby Application Gateway pomocí 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

Vytvoření spravované identity pro Službu Application Gateway

Application Gateway bude muset mít přístup ke službě Key Vault, aby mohl číst certifikát. K tomu použije spravovanou identitu přiřazenou uživatelem. Spravovanou identitu vytvořte pomocí následujícího příkazu:

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

Potom načtěte ID objektu pro spravovanou identitu, protože se později použije k udělení oprávnění pro přístup k certifikátu ve službě 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)

Nastavení zásad ve službě Key Vault

Nakonfigurujte službu Key Vault pomocí následujícího příkazu, aby spravovaná identita služby Application Gateway byla povolena pro přístup k certifikátu uloženému ve službě 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

Vytvoření služby Application Gateway

Vytvořte aplikační bránu pomocí az network application-gateway create privátního plně kvalifikovaného názvu domény (FQDN) vaší aplikace jako servery v back-endovém fondu. Nezapomeňte použít spravovanou identitu přiřazenou uživatelem a odkazovat na certifikát ve službě Key Vault pomocí ID tajného klíče certifikátu. Potom aktualizujte nastavení HTTP tak az network application-gateway http-settings update , aby používalo veřejný název hostitele.

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

Vytvoření aplikační brány azure může trvat až 30 minut.

Aktualizace Nastavení HTTP tak, aby používala název domény směrem k back-endu

Aktualizujte nastavení HTTP tak, aby používalo název veřejné domény jako název hostitele místo přípony domény s příponou .private.azuremicroservices.io, aby se provoz odesílal do Azure Spring Apps.

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

Kontrola nasazení služby Application Gateway

Po vytvoření zkontrolujte stav back-endu pomocí následujícího příkazu. Výstup tohoto příkazu umožňuje určit, jestli služba Application Gateway dosáhne vaší aplikace prostřednictvím privátního plně kvalifikovaného názvu domény.

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

Výstup označuje stav back-endového fondu v pořádku, jak je znázorněno v následujícím příkladu:

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

Konfigurace DNS a přístup k aplikaci

Teď nakonfigurujte veřejný DNS tak, aby odkazovali na Službu Application Gateway pomocí záznamu CNAME nebo A. Veřejnou adresu služby Application Gateway najdete pomocí následujícího příkazu:

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

Teď můžete k aplikaci přistupovat pomocí názvu veřejné domény.

Další kroky