Share via


Az Azure Spring Apps-példány kimenő forgalmának szabályozása

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

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.

Egy felhasználó által definiált útvonalat (UDR) használó Azure Spring Apps virtuális hálózat architektúráját bemutató ábra.

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.

Következő lépések