Özel DNS bölgelerini ve kayıtlarını koruma

Not

Azure ile etkileşime geçmek için Azure Az PowerShell modülünü kullanmanızı öneririz. Başlamak için bkz. Azure PowerShell'i yükleme. Az PowerShell modülüne nasıl geçeceğinizi öğrenmek için bkz. Azure PowerShell’i AzureRM’den Az’ye geçirme.

Özel DNS alanlar ve kayıtlar kritik kaynaklardır. DNS bölgesinin veya tek bir DNS kaydının silinmesi hizmet kesintisine neden olabilir. DNS bölgelerinin ve kayıtlarının yetkisiz veya yanlışlıkla yapılan değişikliklere karşı korunması önemlidir.

Bu makalede, Azure DNS'nin özel DNS bölgelerinizi ve kayıtlarınızı bu tür değişikliklere karşı korumanıza nasıl olanak sağladığı açıklanmaktadır. Azure Resource Manager tarafından sağlanan iki güçlü güvenlik özelliği uyguluyoruz: Azure rol tabanlı erişim denetimi (Azure RBAC) ve kaynak kilitleri.

Azure rol tabanlı erişim denetimi

Azure rol tabanlı erişim denetimi (Azure RBAC), Azure kullanıcıları, grupları ve kaynakları için ayrıntılı erişim yönetimi sağlar. Azure RBAC ile kullanıcıların ihtiyaç duyduğu erişim düzeyini vekleyebilirsiniz. Azure RBAC'nin erişimi yönetmenize nasıl yardımcı olduğu hakkında daha fazla bilgi için bkz. Azure rol tabanlı erişim denetimi (Azure RBAC) nedir?

Özel DNS Bölgesi Katkıda Bulunanı rolü

Özel DNS Bölgesi Katkıda Bulunanı rolü, özel DNS kaynaklarını yönetmek için yerleşik bir roldür. Bir kullanıcı veya gruba uygulanan bu rol, özel DNS kaynaklarını yönetmesini sağlar.

myPrivateDNS kaynak grubu Contoso Corporation için beş bölge içerir. DNS yöneticisine Özel DNS Bölge Katkıda Bulunanı izinlerinin bu kaynak grubuna verilmesi, bu DNS bölgeleri üzerinde tam denetim sağlar. Gereksiz izinler verilmesini önler. DNS yöneticisi sanal makine oluşturamaz veya durduramaz.

Azure RBAC izinlerini atamanın en basit yolu Azure portal.

Kaynak grubu için Erişim denetimi 'ni (IAM) açın, Ekle'yi ve ardından Özel DNS Bölge Katkıda Bulunanı rolünü seçin. İzin vermek için gerekli kullanıcıları veya grupları seçin.

Özel DNS kaynak grubu için RBAC'nin ekran görüntüsü.

İzinler Azure PowerShell kullanılarak da verilebilir:

# Grant 'Private DNS Zone Contributor' permissions to all zones in a resource group

$rsg = "<resource group name>"
$usr = "<user email address>"
$rol = "Private DNS Zone Contributor"

New-AzRoleAssignment -SignInName $usr -RoleDefinitionName $rol -ResourceGroupName $rsg

Eşdeğer komut , Azure CLI aracılığıyla da kullanılabilir:

# Grant 'Private DNS Zone Contributor' permissions to all zones in a resource group

az role assignment create \
--assignee "<user email address>" \
--role "Private DNS Zone Contributor" \
--resource-group "<resource group name>"

Özel Bölge düzeyi Azure RBAC

Azure RBAC kuralları bir aboneliğe, kaynak grubuna veya tek bir kaynağa uygulanabilir. Bu kaynak tek bir DNS bölgesi veya tek bir kayıt kümesi olabilir.

Örneğin , myPrivateDNS kaynak grubu bölge private.contoso.com ve bir alt bölge customers.private.contoso.com içerir. Her müşteri hesabı için CNAME kayıtları oluşturulur. CNAME kayıtlarını yönetmek için kullanılan yönetici hesabına customers.private.contoso.com bölgesinde kayıt oluşturma izinleri atanır. Hesap yalnızca customers.private.contoso.com yönetebilir.

Bölge düzeyinde Azure RBAC izinleri Azure portal aracılığıyla verilebilir. Bölge için Erişim denetimi 'ni (IAM) açın, Ekle'yi ve ardından Özel DNS Bölge Katkıda Bulunanı rolünü seçin. İzin vermek için gerekli kullanıcıları veya grupları seçin.

Özel DNS bölgesi için RBAC'nin ekran görüntüsü.

İzinler Azure PowerShell kullanılarak da verilebilir:

# Grant 'Private DNS Zone Contributor' permissions to a specific zone

$rsg = "<resource group name>"
$usr = "<user email address>"
$zon = "<zone name>"
$rol = "Private DNS Zone Contributor"
$rsc = "Microsoft.Network/privateDnsZones"

New-AzRoleAssignment -SignInName $usr -RoleDefinitionName $rol -ResourceGroupName $rsg -ResourceName $zon -ResourceType $rsc

Eşdeğer komut , Azure CLI aracılığıyla da kullanılabilir:

# Grant 'Private DNS Zone Contributor' permissions to a specific zone

az role assignment create \
--assignee <user email address> \
--role "Private DNS Zone Contributor" \
--scope "/subscriptions/<subscription id>/resourceGroups/<resource group name>/providers/Microsoft.Network/privateDnsZones/<zone name>/"

Kayıt kümesi düzeyi Azure RBAC

İzinler kayıt kümesi düzeyinde uygulanır. Kullanıcıya ihtiyacı olan girdilere denetim verilir ve başka bir değişiklik yapamaz.

Kayıt kümesi düzeyinde Azure RBAC izinleri, kayıt kümesi sayfasındaki Access Control (IAM) düğmesi kullanılarak Azure portal aracılığıyla yapılandırılabilir:

Özel DNS kayıt kümesi için RBAC'nin ekran görüntüsü.

Özel DNS kayıt kümesi için rol atamasının ekran görüntüsü.

Kayıt kümesi düzeyi Azure RBAC izinleri de Azure PowerShell kullanılarak verilebilir:

# Grant permissions to a specific record set

$usr = "<user email address>"
$rol = "Private DNS Zone Contributor"
$sco = 
"/subscriptions/<subscription id>/resourceGroups/<resource group name>/providers/Microsoft.Network/privateDnsZones/<zone name>/<record type>/<record name>"

New-AzRoleAssignment -SignInName $usr -RoleDefinitionName $rol -Scope $sco

Eşdeğer komut , Azure CLI aracılığıyla da kullanılabilir:

# Grant permissions to a specific record set

az role assignment create \
--assignee "<user email address>" \
--role "Private DNS Zone Contributor" \
--scope "/subscriptions/<subscription id>/resourceGroups/<resource group name>/providers/Microsoft.Network/privateDnsZones/<zone name>/<record type>/<record name>"

Özel roller

Yerleşik Özel DNS Bölge Katılımcısı rolü, DNS kaynağı üzerinde tam denetim sağlar. Daha ayrıntılı denetim sağlamak için kendi özel Azure rollerinizi oluşturabilirsiniz.

CNAME'leri yönetmek için kullanılan hesaba yalnızca CNAME kayıtlarını yönetme izni verilir. Hesap diğer türlerdeki kayıtları değiştiremiyor. Hesap, bölge silme gibi bölge düzeyinde işlemler gerçekleştiremiyor.

Aşağıdaki örnekte yalnızca CNAME kayıtlarını yönetmek için özel bir rol tanımı gösterilmektedir:

{
    "Name": "Private DNS CNAME Contributor",
    "Id": "",
    "IsCustom": true,
    "Description": "Can manage DNS CNAME records only.",
    "Actions": [
        "Microsoft.Network/privateDnsZones/CNAME/*",
        "Microsoft.Network/privateDNSZones/read",
        "Microsoft.Authorization/*/read",
        "Microsoft.Insights/alertRules/*",
        "Microsoft.ResourceHealth/availabilityStatuses/read",
        "Microsoft.Resources/deployments/*",
        "Microsoft.Resources/subscriptions/resourceGroups/read",
        "Microsoft.Support/*"
    ],
    "NotActions": [
    ],
    "AssignableScopes": [
        "/subscriptions/c276fc76-9cd4-44c9-99a7-4fd71546436e"
    ]
}

Actions özelliği aşağıdaki DNS'ye özgü izinleri tanımlar:

  • Microsoft.Network/privateDnsZones/CNAME/* CNAME kayıtları üzerinde tam denetim verir
  • Microsoft.Network/privateDNSZones/read DNS özel bölgelerini okuma izni verir, ancak bunları değiştirme izni vermez ve CNAME'nin oluşturulduğu bölgeyi görmenize olanak tanır.

Not

Kayıt kümelerinin yine de güncelleştirilmesine izin verirken silinmesini önlemek için Azure özel rolü kullanmak etkili bir denetim değildir. Kayıt kümelerinin silinmesini engeller, ancak bunların değiştirilmesini engellemez. İzin verilen değişiklikler, boş bir kayıt kümesinden çıkmak için tüm kayıtları kaldırmak da dahil olmak üzere kayıt kümesine kayıt ekleme ve kaldırmayı içerir. Bu, kayıt kümesini BIR DNS çözümlemesi bakış noktasından silmekle aynı etkiye sahiptir.

Özel rol tanımları şu anda Azure portal aracılığıyla tanımlanamaz. Bu rol tanımına dayalı özel bir rol Azure PowerShell kullanılarak oluşturulabilir:

# Create new role definition based on input file

New-AzRoleDefinition -InputFile <file path>

Azure CLI aracılığıyla da oluşturulabilir:

# Create new role definition based on input file

az role create -inputfile <file path>

Daha sonra rol, bu makalenin önceki bölümlerinde açıklandığı gibi yerleşik rollerle aynı şekilde atanabilir.

Özel roller oluşturma, yönetme ve atama hakkında daha fazla bilgi için bkz. Azure özel rolleri.

Kaynak kilitleri

Azure Resource Manager, kaynakları kilitleme özelliği olan başka bir güvenlik denetimi türünü destekler. Kaynak kilitleri kaynağa uygulanır ve tüm kullanıcılar ve roller için geçerlidir. Daha fazla bilgi için bkz. Azure Resource Manager ile kaynakları kilitleme.

İki tür kaynak kilidi vardır: CanNotDelete ve ReadOnly. Bu kilit türleri bir Özel DNS bölgesine veya tek bir kayıt kümesine uygulanabilir. Aşağıdaki bölümlerde çeşitli yaygın senaryolar ve bunların kaynak kilitleri kullanılarak nasıl desteklenmeleri açıklanmaktadır.

Tüm değişikliklere karşı koruma

Değişikliklerin yapılmasını önlemek için bölgeye ReadOnly kilidi uygulayın. Bu kilit, yeni kayıt kümelerinin oluşturulmasını ve mevcut kayıt kümelerinin değiştirilmesini veya silinmesini engeller.

Bölge düzeyinde kaynak kilitleri Azure portal aracılığıyla oluşturulabilir. DNS bölgesi sayfasında Kilitler'i ve ardından +Ekle'yi seçin:

Özel DNS bölgesi kilitlerinin ekran görüntüsü.

Bölge düzeyinde kaynak kilitleri de Azure PowerShell aracılığıyla oluşturulabilir:

# Lock a DNS zone

$lvl = "<lock level>"
$lnm = "<lock name>"
$rsc = "<zone name>"
$rty = "Microsoft.Network/privateDnsZones"
$rsg = "<resource group name>"

New-AzResourceLock -LockLevel $lvl -LockName $lnm -ResourceName $rsc -ResourceType $rty -ResourceGroupName $rsg

Eşdeğer komut , Azure CLI aracılığıyla da kullanılabilir:

# Lock a DNS zone

az lock create \
--lock-type "<lock level>" \
--name "<lock name>" \
--resource-name "<zone name>" \
--namespace "Microsoft.Network" \
--resource-type "privateDnsZones" \
--resource-group "<resource group name>"

Tek tek kayıtları koruma

Var olan bir DNS kayıt kümesinin değiştirilmesini önlemek için kayıt kümesine ReadOnly kilidi uygulayın.

Not

Bir kayıt kümesine CanNotDelete kilidi uygulamak etkili bir denetim değildir. Kayıt kümesinin silinmesini engeller, ancak değiştirilmesini engellemez. İzin verilen değişiklikler, boş bir kayıt kümesinden çıkmak için tüm kayıtları kaldırmak da dahil olmak üzere kayıt kümesine kayıt ekleme ve kaldırmayı içerir. Bu, kayıt kümesini BIR DNS çözümlemesi bakış noktasından silmekle aynı etkiye sahiptir.

Kayıt kümesi düzeyinde kaynak kilitleri şu anda yalnızca Azure PowerShell kullanılarak yapılandırılabilir. Bunlar Azure portal veya Azure CLI'da desteklenmez.

Azure PowerShell

# Lock a DNS record set

$lvl = "<lock level>"
$lnm = "<lock name>"
$rnm = "<zone name>/<record set name>"
$rty = "Microsoft.Network/privateDnsZones/<record type>"
$rsg = "<resource group name>"

New-AzResourceLock -LockLevel $lvl -LockName $lnm -ResourceName $rnm -ResourceType $rty -ResourceGroupName $rsg

Bölge silmeye karşı koruma

Azure DNS'de bir bölge silindiğinde, bölgedeki tüm kayıt kümeleri silinir. Bu işlem geri alınamaz. Kritik bir bölgeyi yanlışlıkla silmenin iş açısından önemli bir etkisi olabilir. Yanlışlıkla bölge silmeye karşı koruma sağlamak önemlidir.

Bölgeye CanNotDelete kilidi uygulanması, bölgenin silinmesini engeller. Kilitler alt kaynaklar tarafından devralınır. Kilit, bölgedeki tüm kayıt kümelerinin silinmesini engeller. Yukarıdaki notta açıklandığı gibi, kayıtlar mevcut kayıt kümelerinden kaldırılabildiği için etkisizdir.

Alternatif olarak, bölgedeki soA kayıt kümesi gibi bir kayıt kümesine CanNotDelete kilidi uygulayın. Bölge, kayıt kümeleri de silinmeden silinmez. Bu kilit, bölge içindeki kayıt kümelerinin serbestçe değiştirilmesine izin verirken bölge silmeye karşı koruma sağlar. Bölgeyi silme girişiminde bulunulması durumunda Azure Resource Manager bu kaldırma işlemini algılar. Kaldırma işlemi SOA kayıt kümesini de siler, Azure Resource Manager SOA kilitli olduğundan çağrıyı engeller. Hiçbir kayıt kümesi silinmez.

Aşağıdaki PowerShell komutu, verilen bölgenin SOA kaydına karşı bir CanNotDelete kilidi oluşturur:

# Protect against zone delete with CanNotDelete lock on the record set

$lvl = "CanNotDelete"
$lnm = "<lock name>"
$rnm = "<zone name>/@"
$rty = "Microsoft.Network/privateDnsZones/SOA"
$rsg = "<resource group name>"

New-AzResourceLock -LockLevel $lvl -LockName $lnm -ResourceName $rnm -ResourceType $rty -ResourceGroupName $rsg

Yanlışlıkla bölge silmeyi önlemeye yönelik bir diğer seçenek de özel bir rol kullanmaktır. Bu rol, bölgelerinizi yönetmek için kullanılan hesapların bölge silme izinlerine sahip olmamasını sağlar.

Bir bölgeyi silmeniz gerektiğinde, iki aşamalı silmeyi zorunlu kılabilirsiniz:

  • İlk olarak, bölge silme izinleri verin
  • İkincisi, bölgeyi silmek için izinler verin.

Özel rol, bu hesaplar tarafından erişilen tüm bölgelerde çalışır. Abonelik sahibi gibi bölge silme izinlerine sahip hesaplar, bir bölgeyi yanlışlıkla silmeye devam edebilir.

DNS bölge korumasına derinlemesine savunma yaklaşımı olarak hem kaynak kilitleri hem de özel roller gibi yaklaşımları aynı anda kullanmak mümkündür.

Sonraki adımlar