PowerShell kullanarak sanal ağ hizmet uç noktalarıyla PaaS kaynaklarına ağ erişimini kısıtlama

Sanal ağ hizmet uç noktaları bazı Azure hizmet uç noktalarına ağ erişimini bir sanal ağ alt ağı ile sınırlamanıza olanak tanır. Ayrıca, kaynaklara internet erişimini de kaldırabilirsiniz. Hizmet uç noktaları, sanal ağınızdan desteklenen Azure hizmetlerine doğrudan bağlantı sağlar, böylece Azure hizmetlerine erişmek için sanal ağınızın özel adres alanını kullanabilirsiniz. Hizmet uç noktaları aracılığıyla Azure kaynaklarına gönderilen trafik her zaman Microsoft Azure omurga ağı üzerinde kalır. Bu makalede şunları öğreneceksiniz:

  • Alt ağ ile sanal ağ oluşturma
  • Alt ağ ekleme ve hizmet uç noktasını etkinleştirme
  • Azure kaynağı oluşturma ve yalnızca bir alt ağdan ağ erişimine izin verme
  • Her alt ağa bir sanal makine (VM) dağıtma
  • Bir alt ağdan kaynağa erişimi onaylama
  • Bir alt ağdan ve internetten kaynağa erişimin reddedildiğini onaylama

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

Azure Cloud Shell

Azure, tarayıcınız aracılığıyla kullanabileceğiniz etkileşimli bir kabuk ortamı olan Azure Cloud Shell'i barındırıyor. Azure hizmetleriyle çalışmak için Cloud Shell ile Bash veya PowerShell kullanabilirsiniz. Yerel ortamınıza herhangi bir şey yüklemek zorunda kalmadan bu makaledeki kodu çalıştırmak için Cloud Shell önceden yüklenmiş komutlarını kullanabilirsiniz.

Azure Cloud Shell'i başlatmak için:

Seçenek Örnek/Bağlantı
Kodun veya komut bloğunun sağ üst köşesindeki Deneyin'i seçin. Deneyin seçildiğinde kod veya komut otomatik olarak Cloud Shell'e kopyalanmaz. Screenshot that shows an example of Try It for Azure Cloud Shell.
https://shell.azure.comadresine gidin veya Cloud Shell'i tarayıcınızda açmak için Cloud Shell'i Başlat düğmesini seçin. Button to launch Azure Cloud Shell.
Azure portalının sağ üst kısmındaki menü çubuğunda Cloud Shell düğmesini seçin. Screenshot that shows the Cloud Shell button in the Azure portal

Azure Cloud Shell'i kullanmak için:

  1. Cloud Shell'i başlatın.

  2. Kodu veya komutu kopyalamak için kod bloğundaki (veya komut bloğundaki) Kopyala düğmesini seçin.

  3. Windows ve Linux'ta Ctrl+Shift V'yi seçerek veya macOS üzerinde Cmd+Shift++V'yi seçerek kodu veya komutu Cloud Shell oturumuna yapıştırın.

  4. Kodu veya komutu çalıştırmak için Enter'ı seçin.

PowerShell'i yerel olarak yükleyip kullanmayı seçerseniz, bu makale Için Azure PowerShell modülünün 1.0.0 veya sonraki bir sürümü gerekir. Yüklü sürümü bulmak için Get-Module -ListAvailable Az komutunu çalıştırın. Yükseltmeniz gerekirse, bkz. Azure PowerShell modülünü yükleme. PowerShell'i yerel olarak çalıştırıyorsanız Azure bağlantısı oluşturmak için Connect-AzAccount komutunu da çalıştırmanız gerekir.

Sanal ağ oluşturma

Sanal ağ oluşturmadan önce, sanal ağ ve bu makalede oluşturulan diğer tüm kaynaklar için bir kaynak grubu oluşturmanız gerekir. New-AzResourceGroup ile bir kaynak grubu oluşturun. Aşağıdaki örnek myResourceGroup adlı bir kaynak grubu oluşturur:

New-AzResourceGroup -ResourceGroupName myResourceGroup -Location EastUS

New-AzVirtualNetwork ile bir sanal ağ oluşturun. Aşağıdaki örnek, 10.0.0.0/16 adres ön ekiyle myVirtualNetwork adlı bir sanal ağ oluşturur.

$virtualNetwork = New-AzVirtualNetwork `
  -ResourceGroupName myResourceGroup `
  -Location EastUS `
  -Name myVirtualNetwork `
  -AddressPrefix 10.0.0.0/16

New-AzVirtualNetworkSubnetConfig ile bir alt ağ yapılandırması oluşturun. Aşağıdaki örnek, Genel adlı bir alt ağ için bir alt ağ yapılandırması oluşturur:

$subnetConfigPublic = Add-AzVirtualNetworkSubnetConfig `
  -Name Public `
  -AddressPrefix 10.0.0.0/24 `
  -VirtualNetwork $virtualNetwork

Alt ağ yapılandırmasını Set-AzVirtualNetwork ile sanal ağa yazarak sanal ağda alt ağı oluşturun:

$virtualNetwork | Set-AzVirtualNetwork

Hizmet uç noktasını girin

Hizmet uç noktalarını yalnızca hizmet uç noktalarını destekleyen hizmetler için etkinleştirebilirsiniz. Get-AzVirtualNetworkAvailableEndpointService ile Azure konumunda kullanılabilen hizmet uç noktası etkin hizmetleri görüntüleyin. Aşağıdaki örnek, eastus bölgesinde kullanılabilen hizmet uç nokta özellikli hizmetlerin listesini döndürür. Daha fazla Azure hizmeti hizmet uç noktası etkinleştirildikçe döndürülen hizmetlerin listesi zamanla büyüyecektir.

Get-AzVirtualNetworkAvailableEndpointService -Location eastus | Select Name

Sanal ağda ek bir alt ağ oluşturun. Bu örnekte, Microsoft.Depolama için hizmet uç noktası ile Özel adlı bir alt ağ oluşturulur:

$subnetConfigPrivate = Add-AzVirtualNetworkSubnetConfig `
  -Name Private `
  -AddressPrefix 10.0.1.0/24 `
  -VirtualNetwork $virtualNetwork `
  -ServiceEndpoint Microsoft.Storage

$virtualNetwork | Set-AzVirtualNetwork

Bir kaynak için ağ erişimini kısıtlama

New-AzNetworkSecurityRuleConfig ile ağ güvenlik grubu güvenlik kuralları oluşturun. Aşağıdaki kural, Azure Depolama hizmetine atanan genel IP adreslerine giden erişime izin verir:

$rule1 = New-AzNetworkSecurityRuleConfig `
  -Name Allow-Storage-All `
  -Access Allow `
  -DestinationAddressPrefix Storage `
  -DestinationPortRange * `
  -Direction Outbound `
  -Priority 100 `
  -Protocol * `
  -SourceAddressPrefix VirtualNetwork `
  -SourcePortRange *

Aşağıdaki kural tüm genel IP adreslerine erişimi reddeder. Önceki kural, Azure Depolama genel IP adreslerine erişim sağlayan yüksek önceliği nedeniyle bu kuralı geçersiz kılar.

$rule2 = New-AzNetworkSecurityRuleConfig `
  -Name Deny-Internet-All `
  -Access Deny `
  -DestinationAddressPrefix Internet `
  -DestinationPortRange * `
  -Direction Outbound `
  -Priority 110 `
  -Protocol * `
  -SourceAddressPrefix VirtualNetwork `
  -SourcePortRange *

Aşağıdaki kural, alt ağa her yerden gelen Uzak Masaüstü Protokolü (RDP) trafiğine izin verir. Alt ağa uzak masaüstü bağlantılarına izin verilir, böylece sonraki bir adımda kaynağa ağ erişimini onaylayabilirsiniz.

$rule3 = New-AzNetworkSecurityRuleConfig `
  -Name Allow-RDP-All `
  -Access Allow `
  -DestinationAddressPrefix VirtualNetwork `
  -DestinationPortRange 3389 `
  -Direction Inbound `
  -Priority 120 `
  -Protocol * `
  -SourceAddressPrefix * `
  -SourcePortRange *

New-AzNetworkSecurityGroup ile bir ağ güvenlik grubu oluşturun. Aşağıdaki örnek, myNsgPrivate adlı bir ağ güvenlik grubu oluşturur.

$nsg = New-AzNetworkSecurityGroup `
  -ResourceGroupName myResourceGroup `
  -Location EastUS `
  -Name myNsgPrivate `
  -SecurityRules $rule1,$rule2,$rule3

Ağ güvenlik grubunu Set-AzVirtualNetworkSubnetConfig ile Özel alt ağ ile ilişkilendirin ve ardından alt ağ yapılandırmasını sanal ağa yazın. Aşağıdaki örnek, myNsgPrivate ağ güvenlik grubunu Özel alt ağ ile ilişkilendirir:

Set-AzVirtualNetworkSubnetConfig `
  -VirtualNetwork $VirtualNetwork `
  -Name Private `
  -AddressPrefix 10.0.1.0/24 `
  -ServiceEndpoint Microsoft.Storage `
  -NetworkSecurityGroup $nsg

$virtualNetwork | Set-AzVirtualNetwork

Bir kaynağa ağ erişimini kısıtlama

Hizmet uç noktaları için etkinleştirilmiş Azure hizmetleri aracılığıyla oluşturulan kaynaklara ağ erişimini kısıtlamak için gereken adımlar, hizmetler arasında farklılık gösterir. Bir hizmete yönelik belirli adımlar için ilgili hizmetin belgelerine bakın. Bu makalenin geri kalanında, örnek olarak azure Depolama hesabı için ağ erişimini kısıtlama adımları yer alır.

Depolama hesabı oluşturma

New-Az Depolama Account ile bir Azure depolama hesabı oluşturun. değerini, yalnızca sayıları ve küçük harfleri kullanarak tüm Azure konumlarında 3-24 karakter uzunluğunda benzersiz bir adla değiştirin <replace-with-your-unique-storage-account-name> .

$storageAcctName = '<replace-with-your-unique-storage-account-name>'

New-AzStorageAccount `
  -Location EastUS `
  -Name $storageAcctName `
  -ResourceGroupName myResourceGroup `
  -SkuName Standard_LRS `
  -Kind StorageV2

Depolama hesabı oluşturulduktan sonra, Get-Az Depolama AccountKey ile depolama hesabının anahtarını bir değişkene alın:

$storageAcctKey = (Get-AzStorageAccountKey `
  -ResourceGroupName myResourceGroup `
  -AccountName $storageAcctName).Value[0]

Anahtar, sonraki bir adımda dosya paylaşımı oluşturmak için kullanılır. Dosya paylaşımını bir VM'deki bir sürücüye eşlerken daha sonraki bir adımda el ile girmeniz gerekdiğinden değeri girin $storageAcctKey ve not edin.

Depolama hesabında dosya paylaşımı oluşturma

New-Az Depolama Context ile depolama hesabınız ve anahtarınız için bir bağlam oluşturun. Bağlam, depolama hesabı adını ve hesap anahtarını kapsüller:

$storageContext = New-AzStorageContext $storageAcctName $storageAcctKey

New-Az Depolama Share ile dosya paylaşımı oluşturma:

$share = New-Az Depolama Share my-file-share -Context $storageContext

Depolama hesabına tüm ağ erişimini reddetme

Varsayılan olarak, depolama hesapları herhangi bir ağdaki istemcilerden gelen ağ bağlantılarını kabul eder. Seçili ağlara erişimi sınırlamak için, varsayılan eylemi Update-Az Depolama AccountNetworkRuleSet ile Reddet olarak değiştirin. Ağ erişimi reddedildiğinde depolama hesabı hiçbir ağdan erişilebilir olmaz.

Update-AzStorageAccountNetworkRuleSet  `
  -ResourceGroupName "myresourcegroup" `
  -Name $storageAcctName `
  -DefaultAction Deny

Bir alt ağdan ağ erişimini etkinleştirme

Get-AzVirtualNetwork ile oluşturulan sanal ağı alın ve get-AzVirtualNetworkSubnetConfig ile özel alt ağ nesnesini bir değişkene alın:

$privateSubnet = Get-AzVirtualNetwork `
  -ResourceGroupName "myResourceGroup" `
  -Name "myVirtualNetwork" `
  | Get-AzVirtualNetworkSubnetConfig `
  -Name "Private"

Add-Az Depolama AccountNetworkRule ile Özel alt ağdan depolama hesabına ağ erişimine izin verin.

Add-AzStorageAccountNetworkRule `
  -ResourceGroupName "myresourcegroup" `
  -Name $storageAcctName `
  -VirtualNetworkResourceId $privateSubnet.Id

Sanal makineleri oluşturma

Bir depolama hesabına ağ erişimini test etmek için her alt ağa bir VM dağıtın.

İlk sanal makineyi oluşturma

New-AzVM ile Ortak alt ağda bir sanal makine oluşturun. Sonraki komutu çalıştırırken kimlik bilgileri istenir. Girdiğiniz değerler, sanal makinenin kullanıcı adı ve parolası olarak yapılandırılır. -AsJob seçeneği, sonraki adıma devam edebilmeniz için arka planda sanal makineyi oluşturur.

New-AzVm `
    -ResourceGroupName "myResourceGroup" `
    -Location "East US" `
    -VirtualNetworkName "myVirtualNetwork" `
    -SubnetName "Public" `
    -Name "myVmPublic" `
    -AsJob

Aşağıdaki örnek çıktıya benzer bir çıkış döndürülür:

Id     Name            PSJobTypeName   State         HasMoreData     Location             Command                  
--     ----            -------------   -----         -----------     --------             -------                  
1      Long Running... AzureLongRun... Running       True            localhost            New-AzVM     

İkinci sanal makineyi oluşturma

Özel alt ağda bir sanal makine oluşturun:

New-AzVm `
    -ResourceGroupName "myResourceGroup" `
    -Location "East US" `
    -VirtualNetworkName "myVirtualNetwork" `
    -SubnetName "Private" `
    -Name "myVmPrivate"

Azure'ın VM'yi oluşturması birkaç dakika sürer. Azure VM'yi oluşturmayı tamamlayıp Çıkışı PowerShell'e döndürene kadar sonraki adıma devam etmeyin.

Depolama hesabına erişimi onaylama

Bir VM'nin genel IP adresini döndürmek için Get-AzPublicIpAddress komutunu kullanın. Aşağıdaki örnek, myVmPrivate VM'sinin genel IP adresini döndürür:

Get-AzPublicIpAddress `
  -Name myVmPrivate `
  -ResourceGroupName myResourceGroup `
  | Select IpAddress

Aşağıdaki komuttaki <publicIpAddress> öğesini, önceki komuttan döndürülen genel IP adresiyle değiştirin ve sonra aşağıdaki komutu girin:

mstsc /v:<publicIpAddress>

Uzak Masaüstü Protokolü (.rdp) dosyası oluşturulur ve bilgisayarınıza indirilir. İndirilen rdp dosyasını açın. İstendiğinde Bağlan’ı seçin. Sanal makine oluştururken belirttiğiniz kullanıcı adını ve parolayı girin. Sanal makineyi oluştururken girdiğiniz kimlik bilgilerini belirtmek için Diğer seçenekler’i ve sonra Farklı bir hesap kullan seçeneğini belirlemeniz gerekebilir. Tamam'ı seçin. Oturum açma işlemi sırasında bir sertifika uyarısı alabilirsiniz. Uyarı alırsanız, bağlantıya devam etmek için Evet’i veya Bağlan’ı seçin.

myVmPrivate VM üzerinde PowerShell kullanarak Azure dosya paylaşımını Z sürücüsüne eşleyin. Aşağıdaki komutları çalıştırmadan önce depolama <storage-account-name> hesabı oluşturma bölümünde sağladığınız veya aldığınız değerleri ve değerlerini değiştirin<storage-account-key>.

$acctKey = ConvertTo-SecureString -String "<storage-account-key>" -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential -ArgumentList "Azure\<storage-account-name>", $acctKey
New-PSDrive -Name Z -PSProvider FileSystem -Root "\\<storage-account-name>.file.core.windows.net\my-file-share" -Credential $credential

PowerShell aşağıdaki örnek çıktıya benzer bir çıktı döndürür:

Name           Used (GB)     Free (GB) Provider      Root
----           ---------     --------- --------      ----
Z                                      FileSystem    \\vnt.file.core.windows.net\my-f...

Z sürücüsüne başarıyla eşlenen Azure dosya paylaşımı.

VM'nin diğer genel IP adreslerine giden bağlantısı olmadığını onaylayın:

ping bing.com

Özel alt ağ ile ilişkili ağ güvenlik grubu Azure Depolama hizmetine atanan adreslerden başka genel IP adreslerine giden erişime izin vermediği için bir yanıt almazsınız.

myVmPrivate VM ile uzak masaüstü oturumunu kapatın.

Depolama hesabına erişimin reddedildiğini onaylama

myVmPublic VM'sinin genel IP adresini alın:

Get-AzPublicIpAddress `
  -Name myVmPublic `
  -ResourceGroupName myResourceGroup `
  | Select IpAddress

Aşağıdaki komuttaki <publicIpAddress> öğesini, önceki komuttan döndürülen genel IP adresiyle değiştirin ve sonra aşağıdaki komutu girin:

mstsc /v:<publicIpAddress>

myVmPublic SANAL makinesinde Azure dosya paylaşımını Z sürücüsüne eşlemeyi deneme. Aşağıdaki komutları çalıştırmadan önce depolama <storage-account-name> hesabı oluşturma bölümünde sağladığınız veya aldığınız değerleri ve değerlerini değiştirin<storage-account-key>.

$acctKey = ConvertTo-SecureString -String "<storage-account-key>" -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential -ArgumentList "Azure\<storage-account-name>", $acctKey
New-PSDrive -Name Z -PSProvider FileSystem -Root "\\<storage-account-name>.file.core.windows.net\my-file-share" -Credential $credential

Paylaşıma erişim reddedilir ve bir New-PSDrive : Access is denied hata alırsınız. myVmPublic VM Genel alt ağa dağıtıldığı için erişim reddedilir. Genel alt ağında Azure Depolama için etkinleştirilmiş bir hizmet uç noktası bulunmaz ve depolama hesabı Genel alt ağından değil, yalnızca Özel alt ağından ağ erişimine izin verir.

myVmPublic VM ile uzak masaüstü oturumunu kapatın.

Bilgisayarınızdan aşağıdaki komutla depolama hesabında dosya paylaşımlarını görüntülemeyi deneyin:

Get-AzStorageFile `
  -ShareName my-file-share `
  -Context $storageContext

Erişim reddedildi ve Get-Az Depolama File : Uzak sunucu şu hatayı döndürdü: (403) Yasak. HTTP Durum Kodu: 403 - HTTP Hata İletisi: Bilgisayarınız MyVirtualNetwork sanal ağının Özel alt ağında olmadığından, bu istek bu işlem hatasını gerçekleştirme yetkisine sahip değil.

Kaynakları temizleme

Artık gerekli olmadığında Remove-AzResourceGroup kullanarak kaynak grubunu ve içerdiği tüm kaynakları kaldırabilirsiniz:

Remove-AzResourceGroup -Name myResourceGroup -Force

Sonraki adımlar

Bu makalede, bir sanal ağ alt ağı için hizmet uç noktasını etkinleştirmişsinizdir. Hizmet uç noktalarının birden fazla Azure hizmeti ile dağıtılmış kaynaklar için etkinleştirilebildiğini öğrendiniz. Bir Azure Depolama hesabı oluşturdunuz ve depolama hesabına ağ erişimini yalnızca bir sanal ağ alt ağındaki kaynaklarla sınırladınız. Hizmet uç noktaları hakkında daha fazla bilgi için bkz. Hizmet uç noktalarına genel bakış ve Alt ağları yönetme.

Hesabınızda birden fazla sanal ağ varsa, her bir sanal ağın içindeki kaynakların birbiriyle iletişim kurabilmesi iki sanal ağı birbirine bağlamak isteyebilirsiniz. Nasıl yapılacağını öğrenmek için bkz. sanal ağları Bağlan.