Řízení výchozího provozu instance Azure Spring Apps

Tento článek se vztahuje na: ✔️ Java ✔️ C#

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

Tento článek popisuje, jak zabezpečit odchozí provoz z aplikací hostovaných v Azure Spring Apps. Článek obsahuje příklad trasy definované uživatelem. Trasa definovaná uživatelem je pokročilá funkce, která umožňuje plně řídit odchozí provoz. Trasu definovanou uživatelem můžete použít ve scénářích, jako je zakázání automaticky vygenerované veřejné IP adresy azure Spring Apps.

Požadavky

Vytvoření virtuální sítě pomocí trasy definované uživatelem

Následující obrázek ukazuje příklad virtuální sítě Azure Spring Apps, která používá trasu definovanou uživatelem (UDR).

Diagram znázorňující architekturu virtuální sítě Azure Spring Apps využívající trasu definovanou uživatelem

Tento diagram znázorňuje následující funkce architektury:

  • Veřejný příchozí provoz musí probíhat přes filtry brány firewall.
  • Každá instance Azure Spring Apps je izolovaná v rámci vyhrazené podsítě.
  • Zákazníci vlastní a spravují bránu firewall.
  • Tato struktura zajišťuje, aby brána firewall umožňovala dobré prostředí pro všechny funkce, které potřebujete.
  • Azure Spring Apps automaticky nevygeneruje prostředky veřejné IP adresy.

Definování proměnných prostředí

Následující příklad ukazuje, jak definovat sadu proměnných prostředí, které se mají použít při vytváření prostředků:

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"

Vytvoření virtuální sítě s několika podsítěmi

V této části se dozvíte, jak zřídit virtuální síť se třemi samostatnými podsítěmi: jednu pro uživatelské aplikace, jednu pro modul runtime služby a jednu pro bránu firewall.

Nejprve vytvořte skupinu prostředků, jak je znázorněno v následujícím příkladu:

# Create a resource group.

az group create --name $RG --location $LOC

Pak vytvořte virtuální síť se třemi podsítěmi pro hostování instancí Azure Spring Apps a Azure Firewallu, jak je znázorněno v následujícím příkladu:

# 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

Nastavení instance služby Azure Firewall s uživatelsky definovanou trasou

Pomocí následujícího příkazu vytvořte a nastavte instanci služby Azure Firewall s trasou definovanou uživatelem a nakonfigurujte odchozí pravidla služby Azure Firewall. Brána firewall umožňuje nakonfigurovat podrobná pravidla odchozího provozu z Azure Spring Apps.

Důležité

Pokud váš cluster nebo aplikace vytvoří velký počet odchozích připojení směrovaných do stejného cíle nebo malé podmnožině cílů, můžete vyžadovat více front-endových IP adres brány firewall, abyste se vyhnuli dosažení maximálního počtu portů na front-endovou IP adresu. Další informace o tom, jak vytvořit instanci služby Azure Firewall s více IP adresami, najdete v rychlém startu: Vytvoření instance služby Azure Firewall s několika veřejnými IP adresami – šablona ARM. Vytvořte prostředek veřejné IP adresy skladové položky Standard, který se použije jako front-endová adresa služby Azure Firewall.

az network public-ip create \
    --resource-group $RG \
    --name $FWPUBLICIP_NAME -l $LOC \
    --sku "Standard"

Následující příklad ukazuje, jak nainstalovat rozšíření Azure Firewall Preview CLI a nasadit Azure Firewall:

# 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

Následující příklad ukazuje, jak přiřadit IP adresu, kterou jste vytvořili k front-endu brány firewall.

Poznámka:

Nastavení veřejné IP adresy pro instanci služby Azure Firewall může trvat několik minut. Pokud chcete v pravidlech sítě použít plně kvalifikovaný název domény (FQDN), povolte proxy server DNS. Po povolení proxy serveru brána firewall naslouchá na portu 53 a předává požadavky DNS na zadaný server DNS. Brána firewall pak může plně kvalifikovaný název domény přeložit automaticky.

# 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

Po dokončení operace uložte front-endovou IP adresu brány firewall pro pozdější konfiguraci, jak je znázorněno v následujícím příkladu:

# 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:]')

Vytvoření trasy definované uživatelem s segmentem směrování do služby Azure Firewall

Azure automaticky směruje provoz mezi podsítěmi Azure, virtuálními sítěmi a místními sítěmi. Pokud chcete změnit výchozí směrování v Azure, vytvořte směrovací tabulku.

Následující příklad ukazuje, jak vytvořit směrovací tabulku, která se má přidružit k zadané podsíti. Směrovací tabulka definuje další segment směrování, jako v instanci služby Azure Firewall, kterou jste vytvořili. Každá podsíť může mít přidruženou jednu směrovací tabulku nebo nemusí mít přidruženou směrovací tabulku.

# 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

Přidání pravidel brány firewall

Následující příklad ukazuje, jak přidat pravidla do brány firewall. Další informace najdete v tématu Odpovědnost zákazníka za spouštění azure Spring Apps ve virtuální síti.

# 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

Přidružení směrovacích tabulek k podsítím

Pokud chcete cluster přidružit k bráně firewall, ujistěte se, že vyhrazená podsíť clusteru odkazuje na tabulku směrování, kterou jste vytvořili. Podsítě modulu runtime služby App a Service musí být přidružené k odpovídajícím směrovacím tabulkám. Následující příklad ukazuje, jak přidružit směrovací tabulku k podsíti:

# 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

Přidání role pro poskytovatele prostředků Azure Spring Apps

Následující příklad ukazuje, jak přidat roli pro poskytovatele prostředků Azure Spring Apps. Role je přiřazena všem uživatelům identifikovaným řetězcem e8de9221-a19c-4c81-b814-fd37c6caf9d2:

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

Vytvoření instance Azure Spring Apps s uživatelsky definovaným směrováním

Následující příklad ukazuje, jak vytvořit instanci Azure Spring Apps s uživatelsky definovaným směrováním:

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

Teď máte přístup k veřejné IP adrese brány firewall z internetu. Brána firewall směruje provoz do podsítí Azure Spring Apps podle vašich pravidel směrování.

Další kroky