Az Azure Spring Apps-példány kimenő forgalmának szabályozása
Feljegyzés
Az Alapszintű, a Standard és a Nagyvállalati csomag 2025. március közepétől megszűnik, 3 éves nyugdíjazási időszakkal. Javasoljuk, hogy váltson az Azure Container Appsre. További információkért lásd az Azure Spring Apps kivonási bejelentését.
A standard felhasználás és a dedikált csomag 2024. szeptember 30-tól megszűnik, hat hónap után pedig teljes leállítással. Javasoljuk, hogy váltson az Azure Container Appsre. További információ: Azure Spring Apps Standard-használat migrálása és dedikált csomag az Azure Container Appsbe.
Ez a cikk a következőre vonatkozik: ✔️ Java ✔️ C#
Ez a cikk a következőre vonatkozik: ✔️ Basic/Standard ✔️ Enterprise
Ez a cikk az Azure Spring Appsben üzemeltetett alkalmazások kimenő forgalmának védelmét ismerteti. A cikk egy felhasználó által megadott útvonalra mutat be példát. A felhasználó által megadott útvonal egy speciális funkció, amellyel teljes mértékben szabályozhatja a kimenő forgalmat. Felhasználó által definiált útvonalakat olyan helyzetekben használhat, mint például az Azure Spring Apps automatikusan létrehozott nyilvános IP-címének engedélyezése.
Előfeltételek
- Az Azure Spring Apps virtuális hálózaton való üzembe helyezésének összes előfeltétele
- API-verzió vagy
2022-09-01 preview
újabb verzió - Az Azure CLI 1.1.7-es vagy újabb verziója
- Az alábbi cikkek információinak ismerete:
Virtuális hálózat létrehozása felhasználó által megadott útvonallal
Az alábbi ábra egy felhasználó által definiált útvonalat (UDR) használó Azure Spring Apps virtuális hálózat példáját mutatja be.
Ez az ábra az architektúra alábbi funkcióit mutatja be:
- A nyilvános bejövő forgalomnak tűzfalszűrőken keresztül kell haladnia.
- Minden Azure Spring Apps-példány külön van elkülönítve egy dedikált alhálózaton belül.
- Az ügyfelek birtokolják és kezelik a tűzfalat.
- Ez a struktúra biztosítja, hogy a tűzfal minden szükséges funkcióhoz megfelelő környezetet biztosítjon.
- Az Azure Spring Apps nem hoz létre automatikusan nyilvános IP-erőforrásokat.
Környezeti változók definiálása
Az alábbi példa bemutatja, hogyan definiálhatók az erőforrás-létrehozáshoz használandó környezeti változók:
export PREFIX="asa-egress"
export RG="${PREFIX}-rg"
export LOC="eastus"
export ASANAME="${PREFIX}"
export VNET_NAME="${PREFIX}-vnet"
export ASA_APP_SUBNET_NAME="asa-app-subnet"
export ASA_SERVICE_RUNTIME_SUBNET_NAME="asa-service-runtime-subnet"
# Do not change FWSUBNET_NAME. This is currently a requirement for Azure Firewall.
export FWSUBNET_NAME="AzureFirewallSubnet"
export FWNAME="${PREFIX}-fw"
export FWPUBLICIP_NAME="${PREFIX}-fwpublicip"
export FWIPCONFIG_NAME="${PREFIX}-fwconfig"
export APP_ROUTE_TABLE_NAME="${PREFIX}-app-rt"
export SERVICE_RUNTIME_ROUTE_TABLE_NAME="${PREFIX}-service-runtime-rt"
export FWROUTE_NAME="${PREFIX}-fwrn"
export ASA_NAME="${PREFIX}-instance"
Több alhálózattal rendelkező virtuális hálózat létrehozása
Ez a szakasz bemutatja, hogyan építhet ki virtuális hálózatot három különálló alhálózattal: egyet a felhasználói alkalmazásokhoz, egyet a szolgáltatás futtatókörnyezetéhez, egyet pedig a tűzfalhoz.
Először hozzon létre egy erőforráscsoportot az alábbi példában látható módon:
# Create a resource group.
az group create --name $RG --location $LOC
Ezután hozzon létre egy virtuális hálózatot három alhálózattal az Azure Spring Apps és az Azure Firewall-példányok üzemeltetéséhez, ahogyan az az alábbi példában látható:
# Dedicated virtual network with an Azure Spring Apps app subnet.
az network vnet create \
--resource-group $RG \
--name $VNET_NAME \
--location $LOC \
--address-prefixes 10.42.0.0/16 \
--subnet-name $ASA_APP_SUBNET_NAME \
--subnet-prefix 10.42.1.0/24
# Dedicated subnet for the Azure Spring Apps service runtime subnet.
az network vnet subnet create \
--resource-group $RG \
--vnet-name $VNET_NAME \
--name $ASA_SERVICE_RUNTIME_SUBNET_NAME\
--address-prefix 10.42.2.0/24
# Dedicated subnet for Azure Firewall. (Firewall name can't be changed.)
az network vnet subnet create \
--resource-group $RG \
--vnet-name $VNET_NAME \
--name $FWSUBNET_NAME \
--address-prefix 10.42.3.0/24
Azure Firewall-példány beállítása felhasználó által megadott útvonallal
Az alábbi paranccsal létrehozhat és beállíthat egy Azure Firewall-példányt egy felhasználó által megadott útvonallal, és konfigurálhatja az Azure Firewall kimenő szabályait. A tűzfal lehetővé teszi részletes kimenő forgalom szabályainak konfigurálását az Azure Spring Appsből.
Fontos
Ha a fürt vagy alkalmazás nagy számú kimenő kapcsolatot hoz létre ugyanahhoz a célhelyhez vagy a célhelyek egy kis részhalmazához, előfordulhat, hogy több tűzfal előtér-IP-címre van szüksége, hogy ne érje el az előtérbeli IP-címenkénti maximális portokat. További információ arról, hogyan hozhat létre több IP-címmel rendelkező Azure Firewall-példányt: Rövid útmutató: Azure Firewall-példány létrehozása több nyilvános IP-címmel – ARM-sablon. Hozzon létre egy standard SKU nyilvános IP-erőforrást, amely az Azure Firewall előtér-címeként használható.
az network public-ip create \
--resource-group $RG \
--name $FWPUBLICIP_NAME -l $LOC \
--sku "Standard"
Az alábbi példa bemutatja, hogyan telepítheti az Azure Firewall előzetes cli-bővítményét, és hogyan helyezheti üzembe az Azure Firewallt:
# Install the Azure Firewall preview CLI extension.
az extension add --name azure-firewall
# Deploy Azure Firewall.
az network firewall create \
--resource-group $RG \
--name $FWNAME -l $LOC \
--enable-dns-proxy true
Az alábbi példa bemutatja, hogyan rendelheti hozzá a létrehozott IP-címet a tűzfal előtéréhez.
Feljegyzés
A nyilvános IP-cím azure firewall-példányra való beállítása eltarthat néhány percig. Ha teljes tartománynevet (FQDN) szeretne használni a hálózati szabályokon, engedélyezze a DNS-proxyt. A proxy engedélyezése után a tűzfal figyeli az 53-at, és továbbítja a DNS-kéréseket a megadott DNS-kiszolgálónak. A tűzfal ezután automatikusan lefordíthatja az FQDN-t.
# Configure the firewall IP address.
az network firewall ip-config create \
--resource-group $RG \
--firewall-name $FWNAME \
--name $FWIPCONFIG_NAME \
--public-ip-address $FWPUBLICIP_NAME \
--vnet-name $VNET_NAME
Ha a művelet befejeződött, mentse a tűzfal előtérbeli IP-címét a későbbi konfigurációhoz, ahogyan az az alábbi példában látható:
# Capture the firewall IP address for later use.
export FWPUBLIC_IP=$(az network public-ip show \
--resource-group $RG \
--name $FWPUBLICIP_NAME \
--query "ipAddress" \
--output tsv)
export FWPRIVATE_IP=$(az network firewall show \
--resource-group $RG \
--name $FWNAME \
--query "ipConfigurations[0].privateIPAddress" \
--output tsv | tr -d '[:space:]')
Felhasználó által definiált útvonal létrehozása ugrással az Azure Firewallra
Az Azure automatikusan irányítja a forgalmat az Azure-alhálózatok, a virtuális hálózatok és a helyszíni hálózatok között. Ha módosítani szeretné az alapértelmezett útválasztást az Azure-ban, hozzon létre egy útvonaltáblát.
Az alábbi példa bemutatja, hogyan hozhat létre útvonaltáblát egy adott alhálózathoz társítani. Az útvonaltábla a következő ugrást határozza meg, ahogyan a létrehozott Azure Firewall-példányban is. Minden alhálózathoz tartozhat egy útvonaltábla, vagy lehet, hogy nincs társított útvonaltáblája.
# Create a user-defined route and add a route for Azure Firewall.
az network route-table create \
--resource-group $RG -l $LOC \
--name $APP_ROUTE_TABLE_NAME
az network route-table route create \
--resource-group $RG \
--name $FWROUTE_NAME \
--route-table-name $APP_ROUTE_TABLE_NAME \
--address-prefix 0.0.0.0/0 \
--next-hop-type VirtualAppliance \
--next-hop-ip-address $FWPRIVATE_IP
az network route-table create \
--resource-group $RG -l $LOC \
--name $SERVICE_RUNTIME_ROUTE_TABLE_NAME
az network route-table route create \
--resource-group $RG \
--name $FWROUTE_NAME \
--route-table-name $SERVICE_RUNTIME_ROUTE_TABLE_NAME \
--address-prefix 0.0.0.0/0 \
--next-hop-type VirtualAppliance \
--next-hop-ip-address $FWPRIVATE_IP
Tűzfalszabályok hozzáadása
Az alábbi példa bemutatja, hogyan adhat hozzá szabályokat a tűzfalhoz. További információkért lásd az Azure Spring Apps virtuális hálózaton való futtatásával kapcsolatos ügyfél-felelősségeket.
# Add firewall network rules.
az network firewall network-rule create \
--resource-group $RG \
--firewall-name $FWNAME \
--collection-name 'asafwnr' \
--name 'springcloudtcp' \
--protocols 'TCP' \
--source-addresses '*' \
--destination-addresses "AzureCloud" \
--destination-ports 443 445 \
--action allow \
--priority 100
# Add firewall application rules.
az network firewall application-rule create \
--resource-group $RG \
--firewall-name $FWNAME \
--collection-name 'aksfwar'\
--name 'fqdn' \
--source-addresses '*' \
--protocols 'https=443' \
--fqdn-tags "AzureKubernetesService" \
--action allow \
--priority 100
Útvonaltáblák társítása alhálózatokkal
A fürt tűzfalhoz való társításához győződjön meg arról, hogy a fürt dedikált alhálózata a létrehozott útvonaltáblára hivatkozik. Az alkalmazás- és szolgáltatás-futtatókörnyezet alhálózatait a megfelelő útvonaltáblákkal kell társítani. Az alábbi példa bemutatja, hogyan társíthat útvonaltáblát egy alhálózathoz:
# Associate the route table with a next hop to the firewall for the Azure Spring Apps subnet.
az network vnet subnet update \
--resource-group $RG \
--vnet-name $VNET_NAME \
--name $ASA_APP_SUBNET_NAME \
--route-table $APP_ROUTE_TABLE_NAME
az network vnet subnet update
--resource-group $RG \
--vnet-name $VNET_NAME \
--name $ASA_SERVICE_RUNTIME_SUBNET_NAME \
--route-table $SERVICE_RUNTIME_ROUTE_TABLE_NAME
Szerepkör hozzáadása Azure Spring Apps-erőforrás-szolgáltatóhoz
Az alábbi példa bemutatja, hogyan adhat hozzá szerepkört az Azure Spring Apps erőforrás-szolgáltatóhoz. A szerepkör a sztring e8de9221-a19c-4c81-b814-fd37c6caf9d2
által azonosított összes felhasználóhoz van hozzárendelve:
export VIRTUAL_NETWORK_RESOURCE_ID=$(az network vnet show \
--name $VNET_NAME \
--resource-group $RG \
--query "id" \
--output tsv)
az role assignment create \
--role "Owner" \
--scope ${VIRTUAL_NETWORK_RESOURCE_ID} \
--assignee e8de9221-a19c-4c81-b814-fd37c6caf9d2
export APP_ROUTE_TABLE_RESOURCE_ID=$(az network route-table show \
--name $APP_ROUTE_TABLE_NAME \
--resource-group $RG \
--query "id" \
--output tsv)
az role assignment create \
--role "Owner" \
--scope ${APP_ROUTE_TABLE_RESOURCE_ID} \
--assignee e8de9221-a19c-4c81-b814-fd37c6caf9d2
export SERVICE_RUNTIME_ROUTE_TABLE_RESOURCE_ID=$(az network route-table show \
--name $SERVICE_RUNTIME_ROUTE_TABLE_NAME \
--resource-group $RG \
--query "id" \
--output tsv)
az role assignment create \
--role "Owner" \
--scope ${SERVICE_RUNTIME_ROUTE_TABLE_RESOURCE_ID} \
--assignee e8de9221-a19c-4c81-b814-fd37c6caf9d2
Azure Spring Apps-példány létrehozása felhasználó által megadott útválasztással
Az alábbi példa bemutatja, hogyan hozhat létre egy Azure Spring Apps-példányt felhasználó által megadott útválasztással:
az spring create \
--name $ASA_NAME \
--resource-group $RG \
--vnet $VNET_NAME \
--app-subnet $ASA_APP_SUBNET_NAME \
--service-runtime-subnet $ASA_SERVICE_RUNTIME_SUBNET_NAME \
--outbound-type userDefinedRouting
Mostantól az internetről is elérheti a tűzfal nyilvános IP-címét. A tűzfal az útválasztási szabályoknak megfelelően irányítja a forgalmat az Azure Spring Apps-alhálózatokra.