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 VirtualAppliance
ayarlayı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.org
eriş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:
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.org
gö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.