Bagikan melalui


Mengontrol lalu lintas keluar untuk instans Azure Spring Apps

Catatan

Paket Basic, Standard, dan Enterprise memasuki periode pensiun pada 17 Maret 2025. Untuk informasi selengkapnya, lihat pengumuman penghentian Azure Spring Apps.

Paket konsumsi standar dan paket khusus memasuki masa penghentian pada 30 September 2024, dengan penutupan sepenuhnya pada akhir Maret 2025. Untuk informasi selengkapnya, lihat Memigrasikan konsumsi Azure Spring Apps Standard dan paket khusus ke Azure Container Apps.

Artikel ini berlaku untuk:✅ Java ✅ C#

Artikel ini berlaku untuk:✅ Basic/Standard ✅ Enterprise

Artikel ini menjelaskan cara mengamankan lalu lintas keluar dari aplikasi Anda yang dihosting di Azure Spring Apps. Artikel ini menyediakan contoh rute yang ditentukan pengguna. Rute yang ditentukan pengguna adalah fitur lanjutan yang memungkinkan Anda mengontrol lalu lintas keluar sepenuhnya. Anda dapat menggunakan rute yang ditentukan pengguna dalam skenario seperti melarang alamat IP publik yang dibuat secara otomatis Azure Spring Apps.

Prasyarat

Membuat jaringan virtual dengan menggunakan rute yang ditentukan pengguna

Ilustrasi berikut menunjukkan contoh jaringan virtual Azure Spring Apps yang menggunakan rute yang ditentukan pengguna (UDR).

Diagram yang memperlihatkan arsitektur jaringan virtual Azure Spring Apps yang menggunakan rute yang ditentukan pengguna (UDR).

Diagram ini mengilustrasikan fitur arsitektur berikut:

  • Lalu lintas masuk publik harus mengalir melalui filter firewall.
  • Setiap instans Azure Spring Apps diisolasi dalam subnet khusus.
  • Pelanggan memiliki dan mengelola firewall.
  • Struktur ini memastikan bahwa firewall memungkinkan lingkungan yang sehat untuk semua fungsi yang Anda butuhkan.
  • Azure Spring Apps tidak secara otomatis menghasilkan sumber daya IP publik.

Menentukan variabel lingkungan

Contoh berikut menunjukkan cara menentukan sekumpulan variabel lingkungan yang akan digunakan dalam pembuatan sumber daya:

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"

Membuat jaringan virtual dengan beberapa subnet

Bagian ini menunjukkan kepada Anda cara menyediakan jaringan virtual dengan tiga subnet terpisah: satu untuk aplikasi pengguna, satu untuk runtime layanan, dan satu untuk firewall.

Pertama-tama buat grup sumber daya, seperti yang ditunjukkan dalam contoh berikut:

# Create a resource group.

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

Kemudian buat jaringan virtual dengan tiga subnet untuk menghosting instans Azure Spring Apps dan Azure Firewall, seperti yang ditunjukkan dalam contoh berikut:

# 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

Menyiapkan instans Azure Firewall dengan rute yang ditentukan pengguna

Gunakan perintah berikut untuk membuat dan menyiapkan instans Azure Firewall dengan rute yang ditentukan pengguna, dan untuk mengonfigurasi aturan keluar Azure Firewall. Firewall memungkinkan Anda mengonfigurasi aturan lalu lintas keluar terperinci dari Azure Spring Apps.

Penting

Jika kluster atau aplikasi Anda membuat sejumlah besar koneksi keluar yang diarahkan ke tujuan yang sama atau ke subset kecil tujuan, Anda mungkin memerlukan lebih banyak alamat IP front-end firewall untuk menghindari mencapai port maksimum per alamat IP front-end. Untuk informasi selengkapnya tentang cara membuat instans Azure Firewall dengan beberapa alamat IP, lihat Mulai Cepat: Membuat instans Azure Firewall dengan beberapa alamat IP publik - templat ARM. Buat sumber daya IP publik SKU Standar untuk digunakan sebagai alamat front-end Azure Firewall.

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

Contoh berikut menunjukkan cara menginstal ekstensi CLI pratinjau Azure Firewall dan menyebarkan 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

Contoh berikut menunjukkan cara menetapkan alamat IP yang Anda buat ke ujung depan firewall.

Catatan

Menyiapkan alamat IP publik ke instans Azure Firewall mungkin memakan waktu beberapa menit. Untuk menggunakan nama domain yang sepenuhnya memenuhi syarat (FQDN) pada aturan jaringan, aktifkan proksi DNS. Setelah Anda mengaktifkan proksi, firewall mendengarkan di port 53 dan meneruskan permintaan DNS ke server DNS yang ditentukan. Firewall kemudian dapat menerjemahkan FQDN secara otomatis.

# 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

Setelah operasi selesai, simpan alamat IP front-end firewall untuk konfigurasi nanti, seperti yang ditunjukkan dalam contoh berikut:

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

Membuat rute yang ditentukan pengguna dengan lompatan ke Azure Firewall

Azure secara otomatis merutekan traffic antara subnet Azure, jaringan virtual, dan jaringan lokal. Jika Anda ingin mengubah perutean default di Azure, buat tabel rute.

Contoh berikut menunjukkan cara membuat tabel rute yang akan dikaitkan dengan subnet tertentu. Tabel rute menentukan hop berikutnya, seperti dalam instans Azure Firewall yang Anda buat. Setiap subnet dapat memiliki satu tabel rute yang terkait dengannya, atau mungkin tidak memiliki tabel rute terkait.

# 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

Tambah aturan firewall

Contoh berikut menunjukkan cara menambahkan aturan ke firewall Anda. Untuk informasi selengkapnya, lihat Tanggung jawab pelanggan untuk menjalankan Azure Spring Apps di jaringan 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

Mengaitkan tabel rute dengan subnet

Untuk mengaitkan kluster dengan firewall, pastikan subnet khusus untuk kluster mereferensikan tabel rute yang Anda buat. Subnet runtime untuk aplikasi dan layanan harus dikaitkan dengan tabel jalur yang sesuai. Contoh berikut menunjukkan cara mengaitkan tabel rute dengan subnet:

# 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

Menambahkan peran untuk penyedia sumber daya Azure Spring Apps

Contoh berikut menunjukkan cara menambahkan peran untuk penyedia sumber daya Azure Spring Apps. Peran ditetapkan untuk semua pengguna yang diidentifikasi oleh string 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

Membuat instans Azure Spring Apps dengan perutean yang ditentukan pengguna

Contoh berikut menunjukkan cara membuat instans Azure Spring Apps dengan perutean yang ditentukan pengguna:

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

Anda sekarang dapat mengakses alamat IP publik firewall dari internet. Firewall merutekan lalu lintas ke subnet Azure Spring Apps sesuai dengan aturan perutean Anda.

Langkah berikutnya