Aracılığıyla paylaş


Azure Spring Apps örneği için çıkış trafiğini denetleme

Not

Temel, Standart ve Kurumsal planları, 3 yıllık kullanımdan kaldırma süresiyle Mart 2025 ortasından itibaren kullanımdan kaldırılacaktır. Azure Container Apps'e geçiş yapmanızı öneririz. Daha fazla bilgi için bkz . Azure Spring Apps kullanımdan kaldırma duyurusu.

Standart tüketim ve ayrılmış plan, altı ay sonra tamamen kapatılarak 30 Eylül 2024'den itibaren kullanımdan kaldırılacaktır. Azure Container Apps'e geçiş yapmanızı öneririz. Daha fazla bilgi için bkz . Azure Spring Apps Standart tüketimini ve ayrılmış planı Azure Container Apps'e geçirme.

Bu makale şunlar için geçerlidir: ✔️ Java ✔️ C#

Bu makale şunlar için geçerlidir: ✔️ Temel/Standart ✔️ Kurumsal

Bu makalede, Azure Spring Apps'te barındırılan uygulamalarınızdan giden trafiğin güvenliğini sağlama açıklanmaktadır. Makale, kullanıcı tanımlı bir yol örneği sağlar. Kullanıcı tanımlı yol, çıkış trafiğini tam olarak denetlemenizi sağlayan gelişmiş bir özelliktir. Azure Spring Apps'in otomatik olarak oluşturulan genel IP adresine izin vermeme gibi senaryolarda kullanıcı tanımlı bir yol kullanabilirsiniz.

Önkoşullar

Kullanıcı tanımlı yol kullanarak sanal ağ oluşturma

Aşağıdaki çizimde, kullanıcı tanımlı yol (UDR) kullanan bir Azure Spring Apps sanal ağı örneği gösterilmektedir.

Kullanıcı tanımlı yol (UDR) kullanan bir Azure Spring Apps sanal ağının mimarisini gösteren diyagram.

Bu diyagramda mimarinin aşağıdaki özellikleri gösterilmektedir:

  • Genel giriş trafiğinin güvenlik duvarı filtrelerine akması gerekir.
  • Her Azure Spring Apps örneği ayrılmış bir alt ağ içinde yalıtılır.
  • Müşteriler güvenlik duvarının sahibidir ve güvenlik duvarını yönetir.
  • Bu yapı, güvenlik duvarının ihtiyacınız olan tüm işlevler için iyi durumda bir ortam sağlamasını sağlar.
  • Azure Spring Apps otomatik olarak genel IP kaynakları oluşturmaz.

Ortam değişkenlerini tanımlama

Aşağıdaki örnekte, kaynak oluşturmada kullanılacak ortam değişkenleri kümesinin nasıl tanımlanacağı gösterilmektedir:

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"

Birden fazla alt ağa sahip bir sanal ağ oluşturma

Bu bölümde, biri kullanıcı uygulamaları, biri hizmet çalışma zamanı ve diğeri de güvenlik duvarı için olmak üzere üç ayrı alt ağa sahip bir sanal ağın nasıl sağlanıp sağlanmayabileceğiniz gösterilmektedir.

İlk olarak aşağıdaki örnekte gösterildiği gibi bir kaynak grubu oluşturun:

# Create a resource group.

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

Ardından, aşağıdaki örnekte gösterildiği gibi Azure Spring Apps'i ve Azure Güvenlik Duvarı örneklerini barındırmak için üç alt ağa sahip bir sanal ağ oluşturun:

# 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

Kullanıcı tanımlı bir yol ile Azure Güvenlik Duvarı örneği ayarlama

Kullanıcı tanımlı bir yol ile Azure Güvenlik Duvarı örneği oluşturmak ve ayarlamak ve Azure Güvenlik Duvarı giden kurallarını yapılandırmak için aşağıdaki komutu kullanın. Güvenlik duvarı, Azure Spring Apps'ten ayrıntılı çıkış trafiği kuralları yapılandırmanıza olanak tanır.

Önemli

Kümeniz veya uygulamanız aynı hedefe veya hedeflerin küçük bir alt kümesine yönlendirilmiş çok sayıda giden bağlantı oluşturuyorsa, ön uç IP adresi başına maksimum bağlantı noktasına ulaşmamak için daha fazla güvenlik duvarı ön uç IP adresi gerekebilir. Birden çok IP adresi olan bir Azure Güvenlik Duvarı örneği oluşturma hakkında daha fazla bilgi için bkz. Hızlı Başlangıç: Birden çok genel IP adresiyle Azure Güvenlik Duvarı örneği oluşturma - ARM şablonu. Azure Güvenlik Duvarı ön uç adresi olarak kullanılacak standart bir SKU genel IP kaynağı oluşturun.

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

Aşağıdaki örnekte, Azure Güvenlik Duvarı önizleme CLI uzantısının nasıl yükleneceği ve Azure Güvenlik Duvarı nasıl dağıtılacağı gösterilmektedir:

# 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

Aşağıdaki örnek, oluşturduğunuz IP adresinin güvenlik duvarı ön ucuna nasıl atandığını gösterir.

Not

genel IP adresinin Azure Güvenlik Duvarı örneğine ayarlanması birkaç dakika sürebilir. Ağ kurallarında tam etki alanı adı (FQDN) kullanmak için dns ara sunucusunu etkinleştirin. Ara sunucuyu etkinleştirdikten sonra güvenlik duvarı 53 numaralı bağlantı noktasını dinler ve DNS isteklerini belirtilen DNS sunucusuna iletir. Ardından güvenlik duvarı FQDN'yi otomatik olarak çevirebilir.

# 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

İşlem tamamlandığında, aşağıdaki örnekte gösterildiği gibi güvenlik duvarının ön uç IP adresini yapılandırma için daha sonra kaydedin:

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

Azure Güvenlik Duvarı atlama ile kullanıcı tanımlı yol oluşturma

Azure, Azure alt ağları, sanal ağlar ve şirket içi ağlar arasındaki trafiği otomatik olarak yönlendirir. Azure'da varsayılan yönlendirmeyi değiştirmek istiyorsanız bir yol tablosu oluşturun.

Aşağıdaki örnekte, belirtilen alt ağ ile ilişkilendirilecek bir yol tablosunun nasıl oluşturulacağı gösterilmektedir. Yol tablosu, oluşturduğunuz Azure Güvenlik Duvarı örneğinde olduğu gibi sonraki atlamayı tanımlar. Her alt ağın kendisiyle ilişkilendirilmiş bir yol tablosu olabilir veya ilişkili yol tablosu olmayabilir.

# 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

Güvenlik duvarı kuralları ekleme

Aşağıdaki örnekte güvenlik duvarınıza kuralların nasıl ekleneceği gösterilmektedir. Daha fazla bilgi için bkz . Azure Spring Apps'i sanal ağda çalıştırmaya yönelik müşteri sorumlulukları.

# 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

Yol tablolarını alt ağlarla ilişkilendirme

Kümeyi güvenlik duvarıyla ilişkilendirmek için, küme için ayrılmış alt ağın oluşturduğunuz yol tablosuna başvurdığından emin olun. Uygulama ve hizmet çalışma zamanı alt ağları ilgili yol tablolarıyla ilişkilendirilmelidir. Aşağıdaki örnekte, bir yönlendirme tablosunun alt ağ ile nasıl ilişkilendirilecekleri gösterilmektedir:

# 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

Azure Spring Apps kaynak sağlayıcısı için rol ekleme

Aşağıdaki örnekte Azure Spring Apps kaynak sağlayıcısı için nasıl rol ekleneceği gösterilmektedir. Rol, dizesi e8de9221-a19c-4c81-b814-fd37c6caf9d2tarafından tanımlanan tüm kullanıcılara atanır:

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

Kullanıcı tanımlı yönlendirme ile Azure Spring Apps örneği oluşturma

Aşağıdaki örnekte, kullanıcı tanımlı yönlendirme ile bir Azure Spring Apps örneğinin nasıl oluşturulacağı gösterilmektedir:

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

Artık güvenlik duvarının genel IP adresine İnternet'ten erişebilirsiniz. Güvenlik duvarı, trafiği yönlendirme kurallarınıza göre Azure Spring Apps alt ağlarına yönlendirir.

Sonraki adımlar