Aracılığıyla paylaş


Kapsayıcı grubuna giden ve gelen trafik için tek bir genel IP adresi yapılandırma

Dış ip adresiyle bir kapsayıcı grubu ayarlamak, dış istemcilerin gruptaki bir kapsayıcıya erişmek için IP adresini kullanmasına olanak tanır. Örneğin, bir tarayıcı kapsayıcıda çalışan bir web uygulamasına erişebilir. Ancak, şu anda bir kapsayıcı grubu giden trafik için farklı bir IP adresi kullanıyor. Bu çıkış IP adresi program aracılığıyla kullanıma sunulmaz ve bu da kapsayıcı grubu izleme ve istemci güvenlik duvarı kurallarının yapılandırılmasını daha karmaşık hale getirir.

Bu makalede, Azure Güvenlik Duvarı ile tümleştirilmiş bir sanal ağda kapsayıcı grubu yapılandırma adımları sağlanır. Kapsayıcı grubuna ve güvenlik duvarı kurallarına kullanıcı tanımlı bir yol ayarlayarak, kapsayıcı grubuna gelen ve giden trafiği yönlendirebilir ve tanımlayabilirsiniz. Kapsayıcı grubu girişi ve çıkışı, güvenlik duvarının genel IP adresini kullanır. Sanal ağın alt ağına dağıtılan birden çok kapsayıcı grubu tek bir çıkış IP adresi kullanabilir.

Bu makalede, bu senaryoya yönelik kaynakları oluşturmak için Azure CLI'yi kullanacaksınız:

  • Sanal ağdaki temsilci alt ağına dağıtılan kapsayıcı grupları
  • Statik genel IP adresiyle ağda dağıtılan bir Azure güvenlik duvarı
  • Kapsayıcı gruplarının alt ağı üzerinde kullanıcı tanımlı bir yol
  • Güvenlik duvarı girişi için NAT kuralı ve çıkış için uygulama kuralı

Ardından güvenlik duvarı aracılığıyla örnek kapsayıcı gruplarından girişi ve çıkışı doğrularsınız.

Azure aboneliğiniz yoksa başlamadan önce birücretsiz Azure hesabı oluşturun.

Önkoşullar

  • Azure Cloud Shell'de Bash ortamını kullanın. Daha fazla bilgi için bkz . Azure Cloud Shell'de Bash için hızlı başlangıç.

  • CLI başvuru komutlarını yerel olarak çalıştırmayı tercih ediyorsanız Azure CLI'yı yükleyin . Windows veya macOS üzerinde çalışıyorsanız Azure CLI’yi bir Docker kapsayıcısında çalıştırmayı değerlendirin. Daha fazla bilgi için bkz . Docker kapsayıcısında Azure CLI'yi çalıştırma.

    • Yerel yükleme kullanıyorsanız az login komutunu kullanarak Azure CLI ile oturum açın. Kimlik doğrulama işlemini tamamlamak için terminalinizde görüntülenen adımları izleyin. Diğer oturum açma seçenekleri için bkz . Azure CLI ile oturum açma.

    • İstendiğinde, ilk kullanımda Azure CLI uzantısını yükleyin. Uzantılar hakkında daha fazla bilgi için bkz. Azure CLI ile uzantıları kullanma.

    • Yüklü sürümü ve bağımlı kitaplıkları bulmak için az version komutunu çalıştırın. En son sürüme yükseltmek için az upgrade komutunu çalıştırın.

Azure Cloud Shell'i başlatma

Azure Cloud Shell, bu makaledeki adımları çalıştırmak için kullanabileceğiniz ücretsiz bir etkileşimli kabuktur. Yaygın Azure araçları, kabuğa önceden yüklenmiştir ve kabuk, hesabınızla birlikte kullanılacak şekilde yapılandırılmıştır.

Cloud Shell'i açmak için kod bloğunun sağ üst köşesinden Deneyin'i seçmeniz yeterlidir. İsterseniz https://shell.azure.com adresine giderek Cloud Shell'i ayrı bir tarayıcı sekmesinde de başlatabilirsiniz.

Cloud Shell açıldığında ortamınız için Bash'in seçili olduğunu doğrulayın. Sonraki oturumlarda Bash ortamında Azure CLI kullanılır, kod bloklarını kopyalamak için Kopyala'yı seçin, Cloud Shell'e yapıştırın ve çalıştırmak için Enter tuşuna basın.

Azure'da oturum açma

Cloud Shell'de oturum açılan ilk hesapta otomatik olarak kimlik doğrulaması yapılır. Farklı bir abonelik kullanarak oturum açmak için aşağıdaki betiği kullanın ve subscriptionId değerini Azure abonelik kimliğiniz ile değiştirin.

Azure aboneliğiniz yoksa başlamadan önce birücretsiz Azure hesabı oluşturun.

subscription="subscriptionId" # Set Azure subscription ID here

az account set -s $subscription # ...or use 'az login'

Daha fazla bilgi için bkz . Etkin aboneliği ayarlama veya etkileşimli olarak oturum açma.

Not

Betiğin tamamını indirmek için tam betik bölümüne gidin.

Kullanmaya başlayın

Bu öğreticide rastgele değişken kullanılır. Mevcut bir kaynak grubunu kullandıysanız, bu değişkenin değerini uygun şekilde değiştirin.

resourceGroup=resourceGroup$RANDOM

Azure kaynak grubu: Henüz bir Azure kaynak grubunuz yoksa az group create komutuyla bir kaynak grubu oluşturun . Konum değerini uygun şekilde değiştirin.

az group create --name $resourceGroup --location eastus

ACI'yi sanal ağda dağıtma

Tipik bir durumda, kapsayıcı grubu dağıtabileceğiniz bir Azure sanal ağınız zaten olabilir. Tanıtım amacıyla, aşağıdaki komutlar kapsayıcı grubu oluşturulduğunda bir sanal ağ ve alt ağ oluşturur. Alt ağ Azure Container Instances'a devredilir.

Kapsayıcı grubu, görüntüden aci-helloworld küçük bir web uygulaması çalıştırır. Belgelerdeki diğer makalelerde gösterildiği gibi, bu görüntü statik bir HTML sayfası sunan Node.js yazılmış küçük bir web uygulamasını paketler.

az container create komutuyla kapsayıcı grubunu oluşturun :

az container create \
  --name appcontainer \
  --resource-group $resourceGroup \
  --image mcr.microsoft.com/azuredocs/aci-helloworld \
  --vnet aci-vnet \
  --vnet-address-prefix 10.0.0.0/16 \
  --subnet aci-subnet \
  --subnet-address-prefix 10.0.0.0/24

İpucu

Alt ağınızda ihtiyacınız olan IP adresi alanının değerini --subnet address-prefix ayarlayın. Desteklenen en küçük alt ağ, sekiz IP adresi sağlayan /29 alt ağıdır. Bazı IP adresleri Azure tarafından kullanılmak üzere ayrılmıştır.

Sonraki bir adımda kullanmak için [az container show][az-container-show] komutunu çalıştırarak kapsayıcı grubunun özel IP adresini alın:

aciPrivateIp="$(az container show --name appcontainer \
  --resource-group $resourceGroup \
  --query ipAddress.ip --output tsv)"

Ağda Azure Güvenlik Duvarı dağıtma

Aşağıdaki bölümlerde Azure CLI kullanarak sanal ağda bir Azure güvenlik duvarı dağıtın. Arka plan için bkz. Öğretici: Azure portalını kullanarak Azure Güvenlik Duvarı dağıtma ve yapılandırma.

İlk olarak az network vnet subnet create komutunu kullanarak güvenlik duvarı için AzureFirewallSubnet adlı bir alt ağ ekleyin. AzureFirewallSubnet bu alt ağın gerekli adıdır.

az network vnet subnet create \
  --name AzureFirewallSubnet \
  --resource-group $resourceGroup \
  --vnet-name aci-vnet   \
  --address-prefix 10.0.1.0/26

Alt ağda güvenlik duvarı oluşturmak için aşağıdaki Azure CLI komutlarını kullanın.

Henüz yüklü değilse az extension add komutunu kullanarak güvenlik duvarı uzantısını Azure CLI'ya ekleyin :

az extension add --name azure-firewall

az network firewall create komutunu kullanarak güvenlik duvarı kaynaklarını oluşturun :

az network firewall create \
  --name myFirewall \
  --resource-group $resourceGroup \
  --location eastus

az network public-ip create \
  --name fw-pip \
  --resource-group $resourceGroup \
  --location eastus \
  --allocation-method static \
  --sku standard
    
az network firewall ip-config create \
  --firewall-name myFirewall \
  --name FW-config \
  --public-ip-address fw-pip \
  --resource-group $resourceGroup \
  --vnet-name aci-vnet

az network firewall update komutunu kullanarak güvenlik duvarı yapılandırmasını güncelleştirin :

az network firewall update \
  --name myFirewall \
  --resource-group $resourceGroup

az network firewall ip-config list komutunu kullanarak güvenlik duvarının özel IP adresini alın. Bu özel IP adresi daha sonraki bir komutta kullanılır.

fwPrivateIp="$(az network firewall ip-config list \
  --resource-group $resourceGroup \
  --firewall-name myFirewall \
  --query "[].privateIpAddress" --output tsv)"

az network public-ip show komutunu kullanarak güvenlik duvarının genel IP adresini alın. Bu genel IP adresi sonraki bir komutta kullanılır.

fwPublicIp="$(az network public-ip show \
  --name fw-pip \
  --resource-group $resourceGroup \
  --query ipAddress --output tsv)"

ACI alt akında kullanıcı tanımlı yol tanımlama

Trafiği Azure güvenlik duvarına yönlendirmek için ACI alt akında kullanım tanımlı bir yol tanımlayın. Daha fazla bilgi için bkz . Ağ trafiğini yönlendirme.

Yönlendirme tablosu oluşturma

İlk olarak aşağıdaki az network route-table create komutunu çalıştırarak yol tablosunu oluşturun. Yönlendirme tablosunu sanal ağ ile aynı bölgede oluşturun.

az network route-table create \
  --name Firewall-rt-table \
  --resource-group $resourceGroup \
  --location eastus \
  --disable-bgp-route-propagation true

Yol oluşturma

Yol tablosunda bir yol oluşturmak için az network-route-table route create komutunu çalıştırın. Trafiği güvenlik duvarına yönlendirmek için sonraki atlama türünü olarak VirtualApplianceayarlayın ve güvenlik duvarının özel IP adresini sonraki atlama adresi olarak geçirin.

az network route-table route create \
  --resource-group $resourceGroup \
  --name DG-Route \
  --route-table-name Firewall-rt-table \
  --address-prefix 0.0.0.0/0 \
  --next-hop-type VirtualAppliance \
  --next-hop-ip-address $fwPrivateIp

Yönlendirme tablosunu ACI alt ağıyla ilişkilendirme

Yol tablosunu Azure Container Instances'a atanan alt ağ ile ilişkilendirmek için az network vnet subnet update komutunu çalıştırın.

az network vnet subnet update \
  --name aci-subnet \
  --resource-group $resourceGroup \
  --vnet-name aci-vnet \
  --address-prefixes 10.0.0.0/24 \
  --route-table Firewall-rt-table

Güvenlik duvarında kuralları yapılandırma

Varsayılan olarak, Azure Güvenlik Duvarı gelen ve giden trafiği reddeder (bloklar).

Güvenlik duvarında NAT kuralını ACI alt aya yapılandırma

Daha önce ağda başlattığınız uygulama kapsayıcısına gelen İnternet trafiğini çevirmek ve filtrelemek için güvenlik duvarında bir NAT kuralı oluşturun. Ayrıntılar için bkz. Azure Güvenlik Duvarı DNAT ile gelen İnternet trafiğini filtreleme

az network firewall nat-rule create komutunu kullanarak bir NAT kuralı ve koleksiyonu oluşturun :

az network firewall nat-rule create \
  --firewall-name myFirewall \
  --collection-name myNATCollection \
  --action dnat \
  --name myRule \
  --protocols TCP \
  --source-addresses '*' \
  --destination-addresses $fwPublicIp \
  --destination-ports 80 \
  --resource-group $resourceGroup \
  --translated-address $aciPrivateIp \
  --translated-port 80 \
  --priority 200

Alt ağdaki diğer IP adreslerine giden trafiği filtrelemek için gerektiğinde NAT kuralları ekleyin. Örneğin, alt ağdaki diğer kapsayıcı grupları gelen trafik için IP adreslerini kullanıma açabilir veya kapsayıcı grubuna yeniden başlatma sonrasında başka iç IP adresleri atanabilir.

Güvenlik duvarında giden uygulama kuralı oluşturma

Güvenlik duvarında bir giden kuralı oluşturmak için aşağıdaki az network firewall application-rule create komutunu çalıştırın. Bu örnek kural, Azure Container Instances'a temsilci olarak atanan alt ağdan FQDN'ye checkip.dyndns.orgerişime izin verir. Siteye HTTP erişimi, Azure Container Instances'tan çıkış IP adresini onaylamak için sonraki bir adımda kullanılır.

az network firewall application-rule create \
  --collection-name myAppCollection \
  --firewall-name myFirewall \
  --name Allow-CheckIP \
  --protocols Http=80 Https=443 \
  --resource-group $resourceGroup \
  --target-fqdns checkip.dyndns.org \
  --source-addresses 10.0.0.0/24 \
  --priority 200 \
  --action Allow

Güvenlik duvarı üzerinden kapsayıcı grubu erişimini test edin

Aşağıdaki bölümlerde Azure Container Instances'a atanan alt ağın Azure güvenlik duvarının arkasında düzgün yapılandırıldığı doğrulanmıştır. Önceki adımlar hem gelen trafiği alt ağa hem de güvenlik duvarı üzerinden alt ağdan giden trafiği yönlendirdi.

Kapsayıcı grubuna girişi test etme

Güvenlik duvarının appcontainer genel IP adresine göz atarak sanal ağda çalışana gelen erişimi test edin. Daha önce genel IP adresini $FW_PUBLIC_IP değişkeninde depolamiştiniz:

echo $fwPublicIp

Çıkış şuna benzer olacaktır:

52.142.18.133

Güvenlik duvarındaki NAT kuralı düzgün yapılandırıldıysa, tarayıcınıza güvenlik duvarının genel IP adresini girdiğinizde aşağıdakileri görürsünüz:

Güvenlik duvarının genel IP adresine göz atın

Kapsayıcı grubundan çıkış testi

Aşağıdaki örnek kapsayıcıyı sanal ağa dağıtın. Çalıştığında, gönderenin IP adresini (çıkış IP adresi) görüntüleyen öğesine tek bir HTTP isteği http://checkip.dyndns.orggönderir. Güvenlik duvarındaki uygulama kuralı düzgün yapılandırılırsa, güvenlik duvarının genel IP adresi döndürülür.

az container create \
  --resource-group $resourceGroup \
  --name testegress \
  --image mcr.microsoft.com/azuredocs/aci-tutorial-sidecar \
  --command-line "curl -s http://checkip.dyndns.org" \
  --restart-policy OnFailure \
  --vnet aci-vnet \
  --subnet aci-subnet

IP adresinin güvenlik duvarının genel IP adresiyle aynı olduğunu onaylamak için kapsayıcı günlüklerini görüntüleyin.

az container logs \
  --resource-group $resourceGroup \
  --name testegress 

Çıkış şuna benzer olacaktır:

<html><head><title>Current IP Check</title></head><body>Current IP Address: 52.142.18.133</body></html>

Kaynakları temizleme

Artık gerekli olmadığında az group delete komutunu kullanarak kaynak grubunu ve tüm ilgili kaynakları aşağıdaki gibi kaldırabilirsiniz. --no-wait parametresi işlemin tamamlanmasını beklemeden denetimi komut istemine döndürür. --yes parametresi, başka bir istem olmadan kaynakları silmek istediğinizi onaylar.

az group delete --name $resourceGroup --yes --no-wait

Sonraki adımlar

Bu makalede, Azure güvenlik duvarının arkasındaki bir sanal ağda kapsayıcı grupları ayarlarsınız. Güvenlik duvarında kullanıcı tanımlı bir yol ve NAT ve uygulama kuralları yapılandırmışsınız. Bu yapılandırmayı kullanarak, Azure Container Instances'tan giriş ve çıkış için tek bir statik IP adresi ayarlarsınız.

Trafiği yönetme ve Azure kaynaklarını koruma hakkında daha fazla bilgi için Azure Güvenlik Duvarı belgelerine bakın.