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

Not

Azure ile etkileşim kurmak 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 bölgeler 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ölge Katılımcısı 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 makineleri oluşturamaz veya durduramaz.

Azure RBAC izinlerini atamanın en basit yolu Azure portalından geçmektir.

Kaynak grubu için Erişim denetimi (IAM) öğesini 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ı üzerinden verilebilir. Bölge için Erişim denetimi 'ni (IAM) açın, Ekle'yi ve ardından Özel DNS Bölge Katılımcısı 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 girdiler için 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 Erişim Denetimi (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, Azure PowerShell kullanılarak da 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/<subscription id>"
    ]
}

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ştirmemenizi sağlayarak 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 değiştirilmesini engellemez. İzin verilen değişiklikler, kayıt kümesinden kayıt ekleme ve kaldırmayı içerir; boş bir kayıt kümesinden çıkmak için tüm kayıtları kaldırma da buna dahildir. Bu, kayıt kümesini DNS çözümlemesi görünümünden silmeyle aynı etkiye sahiptir.

Özel rol tanımları şu anda Azure portalı üzerinden tanımlanamaz. Azure PowerShell kullanılarak bu rol tanımına dayalı özel bir rol 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 genelinde etkilidir. 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 kaynak kilitleri kullanılarak bunların nasıl desteklenmeleri anlatılmaktadı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ı üzerinden 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 Azure PowerShell aracılığıyla da 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

CanNotDelete kilidini kayıt kümesine uygulamak etkili bir denetim değildir. Kayıt kümesinin silinmesini engeller, ancak değiştirilmesini engellemez. İzin verilen değişiklikler, kayıt kümesinden kayıt ekleme ve kaldırmayı içerir; boş bir kayıt kümesinden çıkmak için tüm kayıtları kaldırma da buna dahildir. Bu, kayıt kümesini DNS çözümlemesi görünümünden silmeyle aynı etkiye sahiptir.

Kayıt kümesi düzeyi kaynak kilitleri şu anda yalnızca Azure PowerShell kullanılarak yapılandırılabilir. Bunlar Azure portalında 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.

Bir bölgeye CanNotDelete kilidi uygulamak, bölgenin silinmesini engeller. Kilitler alt kaynaklar tarafından devralınır. Kilit, bölgedeki 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ölgede soA kayıt kümesi gibi bir kayıt kümesine CanNotDelete kilidi uygulayın. Bölge, kayıt kümelerini de silmeden silinmez. Bu kilit bölge silmeye karşı koruma sağlarken, bölge içindeki kayıt kümelerinin serbestçe değiştirilmesine izin verir. 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, SOA kilitli olduğundan Azure Resource Manager ç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.

HEM kaynak kilitleri hem de özel roller gibi her iki yaklaşımı da DNS bölgesi korumasına derinlemesine bir savunma yaklaşımı olarak kullanmak mümkündür.

Sonraki adımlar