Öğretici: Azure CLI ile Linux sanal makineleri için Azure sanal ağlarını yönetme

Şunlar için geçerlidir: ✔️ Linux VM'leri ✔️ Esnek ölçek kümeleri

Azure sanal makineleri, iç ve dış ağ iletişimi için Azure ağını kullanır. Bu öğretici, iki sanal makineyi dağıtma ve bu VM’ler için Azure ağını yapılandırma konusunda rehberlik sunar. Bu öğreticideki örneklerde VM’lerde veritabanı arka ucuna sahip bir web uygulaması barındırıldığı varsayılır, ancak öğreticide uygulama dağıtılmaz. Bu öğreticide şunların nasıl yapıldığını öğreneceksiniz:

  • Sanal ağ ve alt ağ oluşturma
  • Genel IP adresi oluşturma
  • Ön uç VM’si oluşturma
  • Ağ trafiğinin güvenliğini sağlama
  • Arka uç VM’si oluşturma

Bu öğreticide, sürekli olarak en son sürüme güncelleştirilen Azure Cloud Shell CLI kullanılır. Cloud Shell açmak için herhangi bir kod bloğunun üst kısmından Deneyin'i seçin.

CLI'yi yerel olarak yükleyip kullanmayı tercih ederseniz bu öğretici için Azure CLI 2.0.30 veya sonraki bir sürümünü çalıştırmanız gerekir. Sürümü bulmak için az --version komutunu çalıştırın. Yüklemeniz veya yükseltmeniz gerekirse, bkz. Azure CLI yükleme.

VM ağına genel bakış

Azure sanal ağları sanal makineler, İnternet ve Azure SQL Veritabanı gibi diğer Azure hizmetleri arasında güvenli ağ bağlantıları sağlar. Sanal ağlar, alt ağ adı verilen mantıksal segmentlere ayrılır. Alt ağlar, ağ akışını denetlemek için ve güvenlik sınırı olarak kullanılır. Bir VM dağıtılırken, genellikle bir alt ağa eklenmiş sanal ağ arabirimine sahiptir.

Öğreticiyi tamamlarken, aşağıdaki sanal ağ kaynakları oluşturulur:

İki alt ağ içeren sanal ağ

  • myVNet - VM’lerin birbirleriyle ve İnternet’le iletişim kurmak için kullandığı sanal ağ.
  • myFrontendSubnet - Ön uç kaynakları tarafından kullanılan myVNet’teki alt ağ.
  • myPublicIPAddress - İnternet’ten myFrontendVM’ye erişmek için kullanılan genel IP adresi.
  • myFrontentNic - myBackendVM ile iletişim kurmak için myFrontendVM tarafından kullanılan ağ arabirimi.
  • myFrontendVM - İnternet ile myBackendVM arasında iletişim kurmak için kullanılan VM.
  • myBackendNSG - myFrontendVM ile myBackendVM arasındaki iletişimi denetleyen ağ güvenlik grubu.
  • myBackendSubnet - myBackendNSG ile ilişkilendirilmiş ve arka uç kaynakları tarafından kullanılan alt ağ.
  • myBackendNic - myFrontendVM ile iletişim kurmak için myBackendVM tarafından kullanılan ağ arabirimi.
  • myBackendVM - myFrontendVM ile iletişim kurmak için 22 ve 3306 numaralı bağlantı noktalarını kullanan VM.

Sanal ağ ve alt ağ oluşturma

Bu öğreticide iki alt ağa sahip tek bir sanal ağ oluşturulur. Web uygulamasını barındırmak için bir ön uç alt ağı ve veritabanı sunucusunu barındırmak için bir arka uç alt ağı.

Sanal ağ oluşturabilmek için önce az group create ile bir kaynak grubu oluşturun. Aşağıdaki örnekte eastus konumunda myRGNetwork adlı bir kaynak grubu oluşturulmaktadır.

az group create --name myRGNetwork --location eastus

Sanal ağ oluşturma

Sanal ağ oluşturmak için az network vnet create komutunu kullanın. Bu örnekte ağ, mvVNet olarak adlandırılmaktadır ve 10.0.0.0/16 adres öneki belirtilmiştir. Ayrıca myFrontendSubnet adıyla ve 10.0.1.0/24 önekiyle bir alt ağ oluşturulmaktadır. Bu öğreticinin ilerleyen bölümlerinde bu alt ağa bir ön uç bağlanmaktadır.

az network vnet create \
  --resource-group myRGNetwork \
  --name myVNet \
  --address-prefix 10.0.0.0/16 \
  --subnet-name myFrontendSubnet \
  --subnet-prefix 10.0.1.0/24

Alt ağ oluşturma

az network vnet subnet create komutu kullanılarak sanal ağa yeni bir alt ağ eklenir. Bu örnekte alt ağ, myBackendSubnet olarak adlandırılmaktadır ve 10.0.2.0/24 adres öneki belirtilmiştir. Bu alt ağ tüm arka uç hizmetleriyle kullanılır.

az network vnet subnet create \
  --resource-group myRGNetwork \
  --vnet-name myVNet \
  --name myBackendSubnet \
  --address-prefix 10.0.2.0/24

Bu noktada ağ oluşturulur ve biri ön uç hizmetlerine, diğeri ise arka uç hizmetlerine yönelik olan iki alt ağ segmentine ayrılır. Sonraki bölümde sanal makineler oluşturulacak ve bu alt ağlara bağlanacak.

Genel IP adresi oluşturma

Genel IP adresi, Azure kaynaklarına İnternet’ten erişilmesine izin verir. Genel IP adresi ayırma yöntemi dinamik veya statik olarak yapılandırılabilir. Genel IP adresi varsayılan olarak dinamik biçimde ayrılır. Bir VM serbest bırakıldığında dinamik IP adresleri de serbest bırakılır. Bu davranış, VM’nin serbest bırakılmasını içeren tüm işlemlerde IP adresinin değişmesine neden olur.

Ayırma yöntemi statik olarak ayarlanabilir; bu yöntem, VM serbest bırakılsa bile IP adresinin VM’ye atanmış olarak kalmasını sağlar. Statik olarak ayrılan bir IP adresi kullanılırken IP adresi belirtilemez. Bunun yerine IP adresi, kullanılabilen adresler havuzundan ayrılır.

az network public-ip create --resource-group myRGNetwork --name myPublicIPAddress

az vm create komutu ile bir VM oluşturulduğunda varsayılan genel IP adresi ayırma yöntemi dinamiktir. az vm create komutu kullanılarak bir sanal makine oluştururken statik genel IP adresi atamak için --public-ip-address-allocation static bağımsız değişkenini ekleyin. Bu işlem bu öğreticide gösterilmemektedir, ancak sonraki bölümde dinamik olarak ayrılan bir IP adresi statik olarak ayrılmış bir adrese dönüştürülecek.

Ayırma yöntemini değiştirme

IP adresi ayırma yöntemi az network public-ip update komutu kullanılarak değiştirilebilir. Bu örnekte, ön uç VM’nin IP adresi ayırma yöntemi statik olarak değiştirilmektedir.

Öncelikle VM’yi serbest bırakın.

az vm deallocate --resource-group myRGNetwork --name myFrontendVM

Ayırma yöntemini güncelleştirmek için az network public-ip update komutunu kullanın. Bu durumda --allocation-method, static olarak ayarlanır.

az network public-ip update --resource-group myRGNetwork --name myPublicIPAddress --allocation-method static

VM’yi başlatın.

az vm start --resource-group myRGNetwork --name myFrontendVM --no-wait

Genel IP adresi yok

Çoğunlukla bir VM’nin İnternet’ten erişilebilir olmasına gerek yoktur. Genel IP adresi olmayan bir VM oluşturmak için --public-ip-address "" bağımsız değişkenini boş çift tırnaklar ile kullanın. Bu yapılandırma, öğreticinin sonraki bölümlerinde gösterilmektedir.

Ön uç VM’si oluşturma

az vm create komutunu kullanarak myPublicIPAddress adresini kullanan myFrontendVM adlı bir VM oluşturun.

az vm create \
  --resource-group myRGNetwork \
  --name myFrontendVM \
  --vnet-name myVNet \
  --subnet myFrontendSubnet \
  --nsg myFrontendNSG \
  --public-ip-address myPublicIPAddress \
  --image Ubuntu2204 \
  --generate-ssh-keys

Ağ trafiğinin güvenliğini sağlama

Ağ güvenlik grubu (NSG), Azure Sanal Ağlara (VNet) bağlı kaynaklara ağ trafiğine izin veren veya reddeden güvenlik kurallarının listesini içerir. NSG’ler alt ağlarla veya tek tek ağ arabirimleriyle ilişkilendirilebilir. Bir NSG ağ arabirimiyle ilişkilendirildiğinde, yalnızca ilişkili VM için geçerli olur. Bir NSG bir alt ağ ile ilişkilendirildiğinde kurallar alt ağa bağlı tüm kaynaklar için geçerli olur.

Ağ güvenlik grubu kuralları

NSG kuralları trafiğe izin verilen veya trafiğin engellendiği ağ bağlantı noktalarını tanımlar. Trafiğin belirli sistemler veya alt ağlar arasında denetlenmesi için kurallar, kaynak ve hedef IP adresi aralıkları içerebilir. Ayrıca NSG kuralları öncelik (1 ile 4.096 arasında) içerir. Kurallar öncelik sırasına göre değerlendirilir. 100 önceliğine sahip bir kural, 200 önceliğine sahip kuraldan önce değerlendirilir.

Tüm NSG'ler bir varsayılan kurallar kümesini içerir. Varsayılan kurallar silinemez ancak en düşük önceliğe atanmış oldukları için sizin oluşturduğunuz kurallar tarafından geçersiz kılınabilirler.

NSG’ler için varsayılan kurallar şunlardır:

  • Sanal ağ - Kaynağı bir sanal ağ olan ve bir sanal ağda biten trafiğe hem gelen hem de giden yönlerde izin verilir.
  • İnternet - Giden trafiğe izin verilir, ancak gelen trafik engellenir.
  • Yük dengeleyici - VM’lerinizin ve rol örneklerinizin sistem durumunu araştıran Azure yük dengeleyicisine izin verir. Yük dengeli bir küme kullanmıyorsanız bu kuralı geçersiz kılabilirsiniz.

Ağ güvenlik grupları oluşturma

Ağ güvenlik grubu, az vm create komutu kullanılarak VM ile aynı anda oluşturulabilir. Bu işlem yapıldığında NSG, VM ağ arabirimi ile ilişkilendirilir ve herhangi bir kaynaktan 22 numaralı bağlantı noktası üzerinden gelen trafiğe izin veren NSG kuralı otomatik olarak oluşturulur. Bu öğreticinin önceki bölümlerinde ön uç NSG’si ön uç VM’si ile otomatik oluşturulmuştu. Ayrıca 22 numaralı bağlantı noktası için bir NSG kuralı otomatik olarak oluşturulmuştu.

Bazı durumlarda, örneğin varsayılan SSH kurallarının oluşturulmaması gerektiğinde veya NSG’nin bir alt ağa eklenmesi gerektiğinde NSG’yi önceden oluşturmak yararlı olabilir.

Bir ağ güvenlik grubu oluşturmak için az network nsg create komutunu kullanın.

az network nsg create --resource-group myRGNetwork --name myBackendNSG

NSG, bir ağ arabirimiyle ilişkilendirilmek yerine bir alt ağla ilişkilendirilir. Bu yapılandırmada alt ağa eklenmiş tüm VM’ler NSG kurallarını devralır.

myBackendSubnet adlı mevcut alt ağı yeni NSG ile güncelleştirin.

az network vnet subnet update \
  --resource-group myRGNetwork \
  --vnet-name myVNet \
  --name myBackendSubnet \
  --network-security-group myBackendNSG

Gelen trafiğin güvenliğini sağlama

Ön uç VM’si oluşturulduğunda 22 numaralı bağlantı noktasından gelen trafiğe izin veren bir NSG kuralı oluşturulur. Bu kural, VM ile SSH bağlantısı kurulmasına izin verir. Bu örnekte aynı zamanda 80 numaralı bağlantı noktasındaki trafiğe de izin verilmelidir. Bu yapılandırma VM’den web uygulamasına erişilmesine izin verir.

80 numaralı bağlantı noktası için bir kural oluşturmak üzere az network nsg rule create komutunu kullanın.

az network nsg rule create \
  --resource-group myRGNetwork \
  --nsg-name myFrontendNSG \
  --name http \
  --access allow \
  --protocol Tcp \
  --direction Inbound \
  --priority 200 \
  --source-address-prefix "*" \
  --source-port-range "*" \
  --destination-address-prefix "*" \
  --destination-port-range 80

Ön uç VM’sine yalnızca 22 ve 80 numaralı bağlantı noktalarından erişilebilir. Diğer gelen trafiğin tümü, ağ güvenlik grubunda engellenir. NSG kuralı yapılandırmalarını görselleştirmek yararlı olabilir. NSG kuralı yapılandırmasını az network rule list komutu ile döndürün.

az network nsg rule list --resource-group myRGNetwork --nsg-name myFrontendNSG --output table

VM’den VM’ye trafiğin güvenliğini sağlama

Ağ güvenlik grubu kuralları VM’ler arasında da uygulanabilir. Bu örnekte ön uç VM’sinin arka uç VM’siyle 22 ve 3306 numaralı bağlantı noktalarından iletişim kurması gerekiyor. Bu yapılandırma, ön uç VM’sinden SSH bağlantısı kurulmasına ve ön uçtaki bir uygulamanın arka uç MySQL veritabanı ile iletişim kurmasına izin verir. Diğer trafiğin tümünün ön uç ve arka uç sanal makineleri arasında engellenmesi gerekir.

22 numaralı bağlantı noktası için bir kural oluşturmak üzere az network nsg rule create komutunu kullanın. --source-address-prefix bağımsız değişkenin 10.0.1.0/24 değerini belirttiğini görebilirsiniz. Bu yapılandırma NSG’de yalnızca ön uç alt ağından gelen trafiğe izin verilmesini sağlar.

az network nsg rule create \
  --resource-group myRGNetwork \
  --nsg-name myBackendNSG \
  --name SSH \
  --access Allow \
  --protocol Tcp \
  --direction Inbound \
  --priority 100 \
  --source-address-prefix 10.0.1.0/24 \
  --source-port-range "*" \
  --destination-address-prefix "*" \
  --destination-port-range "22"

Şimdi 3306 numaralı bağlantı noktasına MySQL trafiği için bir kural ekleyin.

az network nsg rule create \
  --resource-group myRGNetwork \
  --nsg-name myBackendNSG \
  --name MySQL \
  --access Allow \
  --protocol Tcp \
  --direction Inbound \
  --priority 200 \
  --source-address-prefix 10.0.1.0/24 \
  --source-port-range "*" \
  --destination-address-prefix "*" \
  --destination-port-range "3306"

NSG’ler aynı VNet içinde yer alan VM’ler arasındaki tüm trafiğe izin veren bir varsayılan kurala sahiptir, bu nedenle arka uç NSG’lerinin tüm trafiği engellenmesi için bir kural oluşturulabilir. Burada --priority için, hem NSG hem de MySQL kurallarından küçük olan 300 değerinin belirtildiğini görebilirsiniz. Bu yapılandırma, NSG’de SSH ve MySQL trafiğine izin verilmesini sağlar.

az network nsg rule create \
  --resource-group myRGNetwork \
  --nsg-name myBackendNSG \
  --name denyAll \
  --access Deny \
  --protocol Tcp \
  --direction Inbound \
  --priority 300 \
  --source-address-prefix "*" \
  --source-port-range "*" \
  --destination-address-prefix "*" \
  --destination-port-range "*"

Arka uç VM’si oluşturma

myBackendSubnet’e eklenmiş bir sanal makine oluşturun. --nsg bağımsız değişkenin boş çift tırnak içerdiğini görebilirsiniz. VM ile bir NSG oluşturmak gerekemez. VM, önceden oluşturulmuş arka uç NSG’si ile korunan arka uç alt ağına eklenir. Bu NSG, VM için geçerlidir. Ayrıca burada --public-ip-address bağımsız değişkeninin boş çift tırnak değeri içerdiğini görebilirsiniz. Bu yapılandırma genel IP adresi olmayan bir VM oluşturur.

az vm create \
  --resource-group myRGNetwork \
  --name myBackendVM \
  --vnet-name myVNet \
  --subnet myBackendSubnet \
  --public-ip-address "" \
  --nsg "" \
  --image Ubuntu2204 \
  --generate-ssh-keys

Arka uç VM’sine, ön uç alt ağından yalnızca 22 ve 3306 numaralı bağlantı noktaları üzerinden erişilebilir. Diğer gelen trafiğin tümü, ağ güvenlik grubunda engellenir. NSG kuralı yapılandırmalarını görselleştirmek yararlı olabilir. NSG kuralı yapılandırmasını az network rule list komutu ile döndürün.

az network nsg rule list --resource-group myRGNetwork --nsg-name myBackendNSG --output table

Sonraki adımlar

Bu öğreticide sanal makinelerle ilgili Azure ağlarını oluşturup ve güvenliğini sağladınız. Şunları öğrendiniz:

  • Sanal ağ ve alt ağ oluşturma
  • Genel IP adresi oluşturma
  • Ön uç VM’si oluşturma
  • Ağ trafiğinin güvenliğini sağlama
  • Arka uç VM’si oluşturma

VM disklerinizi koruma hakkında bilgi edinmek için bkz. Diskler için yedekleme ve olağanüstü durum kurtarma.