Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Nota
Os planos Basic, Standarde Enterprise entraram em um período de aposentadoria em 17 de março de 2025. Para obter mais informações, consulte o anúncio de aposentadoria do Azure Spring Apps.
O plano de consumo padrão e o plano dedicado entraram em um período de desativação a 30 de setembro de 2024, com um encerramento completo até o final de março de 2025. Para obter mais informações, consulte Migrar o consumo padrão e o plano dedicado do Azure Spring Apps para Azure Container Apps.
Este artigo aplica-se a:✅ Java ✅ C#
Este artigo aplica-se a:✅ Basic/Standard ✅ Enterprise
Este artigo descreve como proteger o tráfego de saída de seus aplicativos hospedados no Azure Spring Apps. O artigo fornece um exemplo de uma rota definida pelo usuário. Uma rota definida pelo usuário é um recurso avançado que permite controlar totalmente o tráfego de saída. Você pode usar uma rota definida pelo usuário em cenários como não permitir um endereço IP público gerado automaticamente pelo Azure Spring Apps.
Pré-requisitos
- Todos os pré-requisitos para implantar o Azure Spring Apps em uma rede virtual
- A versão da API
2022-09-01 preview
ou posterior - Azure CLI versão 1.1.7 ou posterior
- Familiaridade com as informações dos seguintes artigos:
Criar uma rede virtual usando uma rota definida pelo usuário
A ilustração a seguir mostra um exemplo de uma rede virtual do Azure Spring Apps que usa uma rota definida pelo usuário (UDR).
Este diagrama ilustra as seguintes características da arquitetura:
- O tráfego de entrada pública deve fluir através de filtros de firewall.
- Cada instância do Azure Spring Apps é isolada em uma sub-rede dedicada.
- Os clientes possuem e gerenciam o firewall.
- Essa estrutura garante que o firewall permita um ambiente saudável para todas as funções que você precisa.
- O Azure Spring Apps não gera automaticamente recursos IP públicos.
Definir variáveis de ambiente
O exemplo a seguir mostra como definir um conjunto de variáveis de ambiente a serem usadas na criação de recursos:
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"
Criar uma rede virtual com várias sub-redes
Esta seção mostra como provisionar uma rede virtual com três sub-redes separadas: uma para os aplicativos do usuário, uma para o tempo de execução do serviço e uma para o firewall.
Primeiro, crie um grupo de recursos, conforme mostrado no exemplo a seguir:
# Create a resource group.
az group create --name $RG --___location $LOC
Em seguida, crie uma rede virtual com três sub-redes para hospedar as instâncias do Azure Spring Apps e do Firewall do Azure, conforme mostrado no exemplo a seguir:
# 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
Configurar uma instância do Firewall do Azure com uma rota definida pelo usuário
Use o comando a seguir para criar e configurar uma instância do Firewall do Azure com uma rota definida pelo usuário e para configurar as regras de saída do Firewall do Azure. O firewall permite configurar regras granulares de tráfego de saída do Azure Spring Apps.
Importante
Se o cluster ou a aplicação criar um grande número de conexões de saída direcionadas para o mesmo destino ou para um pequeno subconjunto de destinos, poderá necessitar de mais endereços IP de front-end do firewall para evitar atingir o máximo de portas por endereço IP de front-end. Para obter mais informações sobre como criar uma instância do Firewall do Azure com vários endereços IP, consulte Guia de início rápido: criar uma instância do Firewall do Azure com vários endereços IP públicos - modelo ARM. Crie um recurso IP público de SKU padrão para uso como o endereço front-end do Firewall do Azure.
az network public-ip create \
--resource-group $RG \
--name $FWPUBLICIP_NAME -l $LOC \
--sku "Standard"
O exemplo a seguir mostra como instalar a extensão da CLI de visualização do Firewall do Azure e implantar o Firewall do Azure:
# 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
O exemplo a seguir mostra como atribuir o endereço IP que você criou ao front-end do firewall.
Nota
Configurar o endereço IP público para a instância do Firewall do Azure pode levar alguns minutos. Para usar um nome de domínio totalmente qualificado (FQDN) em regras de rede, habilite um proxy DNS. Depois de ativar o proxy, a firewall escuta na porta 53 e reencaminha os pedidos DNS para o servidor DNS especificado. O firewall pode então traduzir o FQDN automaticamente.
# 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
Quando a operação estiver concluída, salve o endereço IP front-end do firewall para configuração posterior, conforme mostrado no exemplo a seguir:
# 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:]')
Criar uma rota definida pelo usuário com um salto para o Firewall do Azure
O Azure roteia automaticamente o tráfego entre sub-redes do Azure, redes virtuais e redes locais. Se você quiser alterar o roteamento padrão no Azure, crie uma tabela de rotas.
O exemplo a seguir mostra como criar uma tabela de rotas a ser associada a uma sub-rede especificada. A tabela de rotas define o próximo salto, como na instância do Firewall do Azure que você criou. Cada sub-rede pode ter uma tabela de rotas associada a ela ou pode não ter nenhuma tabela de rotas associada.
# 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
Adicionar regras de firewall
O exemplo a seguir mostra como adicionar regras ao firewall. Para obter mais informações, consulte Responsabilidades do cliente para executar o Azure Spring Apps em uma rede virtual.
# 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
Associar tabelas de rotas a sub-redes
Para associar o cluster ao firewall, verifique se a sub-rede dedicada para o cluster faz referência à tabela de rotas que você criou. As sub-redes de tempo de execução do aplicativo e do serviço devem ser associadas às tabelas de rotas correspondentes. O exemplo a seguir mostra como associar uma tabela de rotas a uma sub-rede:
# 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
Adicionar uma função para um provedor de recursos do Azure Spring Apps
O exemplo a seguir mostra como adicionar uma função para o provedor de recursos do Azure Spring Apps. A função é atribuída a todos os usuários identificados pela cadeia de caracteres 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
Criar uma instância do Azure Spring Apps com roteamento definido pelo usuário
O exemplo a seguir mostra como criar uma instância do Azure Spring Apps com roteamento definido pelo usuário:
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
Agora você pode acessar o endereço IP público do firewall a partir da Internet. O firewall roteia o tráfego para as sub-redes do Azure Spring Apps de acordo com suas regras de roteamento.