Teljes körű TLS-t tartalmazó alkalmazások elérhetővé tehetők egy virtuális hálózaton

Feljegyzés

Az Azure Spring Apps az Azure Spring Cloud szolgáltatás új neve. Bár a szolgáltatásnak új neve van, bizonyos helyeken a régi nevet fogja látni egy darabig, miközben az eszközök, például képernyőképek, videók és diagramok frissítésével dolgozunk.

Ez a cikk a következőre vonatkozik: ✔️ Basic/Standard ✔️ Enterprise

Ez a cikk azt ismerteti, hogyan teheti elérhetővé az alkalmazásokat az interneten az Application Gateway használatával. Amikor üzembe helyez egy Azure Spring Apps-szolgáltatáspéldányt a virtuális hálózaton, a szolgáltatáspéldányon lévő alkalmazások csak a magánhálózaton érhetők el. Ahhoz, hogy az alkalmazások elérhetők legyenek az interneten, integrálnia kell Azure-alkalmazás Gateway-nel.

Előfeltételek

Az Application Gateway konfigurálása az Azure Spring Appshez

Javasoljuk, hogy a böngésző által látott tartománynév megegyezik azzal a gazdagépnévvel, amelyet az Application Gateway az Azure Spring Apps háttérrendszerébe irányuló forgalom irányításához használ. Ez a javaslat a legjobb élményt nyújtja az Application Gateway használata során az Azure Spring Appsben üzemeltetett és egy virtuális hálózaton található alkalmazások felfedéséhez. Ha az Application Gateway által közzétett tartomány eltér az Azure Spring Apps által elfogadott tartománytól, a cookie-k és a létrehozott átirányítási URL-címek (például) megszakadhatnak. További információ: Gazdagépnév megőrzése.

Az Application Gateway Azure Spring Apps előtti konfigurálásához kövesse az alábbi lépéseket.

  1. Kövesse az Azure Spring Apps virtuális hálózaton való üzembe helyezésére vonatkozó utasításokat.
  2. Kövesse az Access alkalmazás privát hálózaton való elérésére vonatkozó utasításait.
  3. Szerezzen be egy tanúsítványt a választott tartományhoz, és tárolja azt a Key Vaultban. További információ : Oktatóanyag: Tanúsítvány importálása az Azure Key Vaultban.
  4. Egyéni tartomány és megfelelő tanúsítvány konfigurálása a Key Vaultból az Azure Spring Appsben üzembe helyezett alkalmazáson. További információ : Oktatóanyag: Meglévő egyéni tartomány leképezése az Azure Spring Appsbe.
  5. Az Application Gateway üzembe helyezése az alábbi lista szerint konfigurált virtuális hálózaton:
    • Használja az Azure Spring Appst a háttérkészletben, amellyel a tartomány utótagja private.azuremicroservices.iohivatkozik.
    • Adjon meg egy HTTPS-figyelőt ugyanazzal a Key Vault-tanúsítvánnyal.
    • Konfigurálja a virtuális hálózatot OLYAN HTTP-beállításokkal, amelyek az Azure Spring Appsben konfigurált egyéni tartománynevet használják a tartomány utótagja private.azuremicroservices.iohelyett.
  6. Konfigurálja a nyilvános DNS-t úgy, hogy az Application Gatewayre mutasson.

Változók meghatározása

Ezután a következő parancsokkal definiálhat változókat az Azure Spring Apps üzembe helyezése virtuális hálózaton létrehozott erőforráscsoporthoz és virtuális hálózathoz. A valós környezet alapján testre szabhatja az értékeket. A definiáláskor SPRING_APP_PRIVATE_FQDNtávolítsa el https:// az URI-ból.

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'

Bejelentkezés az Azure-ba

Az alábbi paranccsal jelentkezzen be az Azure CLI-be, és válassza ki az aktív előfizetését.

az login
az account set --subscription $SUBSCRIPTION

Tanúsítvány beszerzése

Éles környezetekben valószínűleg egy nyilvánosan aláírt tanúsítványt fog használni. Ebben az esetben importálja a tanúsítványt az Azure Key Vaultban. További információ : Oktatóanyag: Tanúsítvány importálása az Azure Key Vaultban. Győződjön meg arról, hogy a tanúsítvány tartalmazza a teljes tanúsítványláncot.

A nyilvános tartománynév konfigurálása az Azure Spring Appsben

A forgalom a nyilvános tartománynév használatával adja meg az Azure Spring Appsben üzembe helyezett alkalmazást. Ha úgy szeretné konfigurálni az alkalmazást, hogy hallgassa meg ezt a gazdagépnevet, és ezt HTTPS-en keresztül végezze el, az alábbi parancsokkal adjon hozzá egy egyéni tartományt az alkalmazáshoz:

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

Hálózati erőforrások létrehozása

A létrehozandó Azure-alkalmazás-átjáró ugyanahhoz a virtuális hálózathoz csatlakozik, mint az Azure Spring Apps szolgáltatáspéldánya vagy társhálózata. Először hozzon létre egy új alhálózatot az Application Gateway számára a virtuális hálózaton az network vnet subnet create, majd hozzon létre egy nyilvános IP-címet az Application Gateway az network public-ip createelőtereként.

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

Felügyelt identitás létrehozása az Application Gatewayhez

Az Application Gatewaynek hozzá kell férnie a Key Vaulthoz a tanúsítvány olvasásához. Ehhez egy felhasználó által hozzárendelt felügyelt identitást fog használni. A felügyelt identitás létrehozása a következő paranccsal:

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

Ezután kérje le az objectId azonosítót a felügyelt identitáshoz, mivel később a Key Vaultban a tanúsítványhoz való hozzáféréshez szükséges jogosultságokat fogja használni:

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)

Szabályzat beállítása a Key Vaulton

Konfigurálja a Key Vaultot a következő paranccsal, hogy az Application Gateway felügyelt identitása hozzáférhessen a Key Vaultban tárolt tanúsítványhoz:

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

Application Gateway létrehozása

Hozzon létre egy application gatewayt az alkalmazás privát teljes tartománynevének (FQDN) használatával az network application-gateway create , és adja meg kiszolgálóként a háttérkészletben. Ügyeljen arra, hogy a felhasználó által hozzárendelt felügyelt identitást használja, és a tanúsítvány titkos azonosítójával mutasson a Key Vault tanúsítványára. Ezután frissítse a HTTP-beállítást az network application-gateway http-settings update a nyilvános gazdagépnév használatával.

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

Az Application Gateway létrehozása akár 30 percet is igénybe vehet.

A HTTP-Gépház frissítése a tartománynév háttérrendszer felé történő használatához

Frissítse a HTTP-beállításokat úgy, hogy a nyilvános tartománynevet használja gazdagépnévként a ".private.azuremicroservices.io" utótagú tartomány helyett, amellyel forgalmat küldhet az Azure Spring Appsnek.

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

Az Application Gateway üzembe helyezésének ellenőrzése

A létrehozás után ellenőrizze a háttérrendszer állapotát az alábbi paranccsal. A parancs kimenete lehetővé teszi annak meghatározását, hogy az Application Gateway a saját teljes tartománynevén keresztül éri-e el az alkalmazást.

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

A kimenet a háttérkészlet kifogástalan állapotát jelzi az alábbi példában látható módon:

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

A DNS konfigurálása és az alkalmazás elérése

Most konfigurálja a nyilvános DNS-t úgy, hogy egy CNAME vagy A rekord használatával mutasson az Application Gatewayre. Az Application Gateway nyilvános címét az alábbi paranccsal találja meg:

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

Mostantól a nyilvános tartománynév használatával is elérheti az alkalmazást.

Következő lépések