Megosztás a következőn keresztül:


Privát DNS-zónák és -rekordok védelme

Feljegyzés

Javasoljuk, hogy az Azure Az PowerShell modult használja az Azure-ral való interakcióhoz. Első lépésként tekintse meg az Azure PowerShell telepítését ismertető témakört. Az Az PowerShell-modulra történő migrálás részleteiről lásd: Az Azure PowerShell migrálása az AzureRM modulból az Az modulba.

saját DNS zónák és rekordok kritikus fontosságú erőforrások. Egy DNS-zóna vagy egyetlen DNS-rekord törlése szolgáltatáskimaradást eredményezhet. Fontos megvédeni a DNS-zónákat és -rekordokat a jogosulatlan vagy véletlen módosítások ellen.

Ez a cikk azt ismerteti, hogy az Azure DNS hogyan teszi lehetővé a privát DNS-zónák és -rekordok védelmét az ilyen változások ellen. Az Azure Resource Manager által biztosított két hatékony értékpapír-funkciót alkalmazunk: az Azure szerepköralapú hozzáférés-vezérlését (Azure RBAC) és az erőforrás-zárolásokat.

Azure szerepköralapú hozzáférés-vezérlő

Az Azure szerepköralapú hozzáférés-vezérlés (Azure RBAC) lehetővé teszi az Azure-felhasználók, csoportok és erőforrások részletes hozzáférés-kezelését. Az Azure RBAC-vel megadhatja a felhasználók számára szükséges hozzáférési szintet. Ha többet szeretne megtudni arról, hogy az Azure RBAC hogyan segíti a hozzáférés kezelését, tekintse meg az Azure szerepköralapú hozzáférés-vezérlését (Azure RBAC) ismertető témakört.

A saját DNS zóna közreműködői szerepköre

A saját DNS zóna közreműködői szerepköre egy beépített szerepkör a privát DNS-erőforrások kezeléséhez. Ez a felhasználóra vagy csoportra alkalmazott szerepkör lehetővé teszi számukra a privát DNS-erőforrások kezelését.

A myPrivateDNS erőforráscsoport öt zónát tartalmaz a Contoso Corporation számára. Ha a DNS-rendszergazda saját DNS zóna-közreműködői engedélyeket ad az adott erőforráscsoporthoz, teljes mértékben szabályozhatja ezeket a DNS-zónákat. Ezzel elkerülheti a szükségtelen engedélyek megadását. A DNS-rendszergazda nem tud virtuális gépeket létrehozni vagy leállítani.

Az Azure RBAC-engedélyek hozzárendelésének legegyszerűbb módja az Azure Portal.

Nyissa meg az erőforráscsoport hozzáférés-vezérlését (IAM), válassza a Hozzáadás, majd a saját DNS Zóna közreműködője szerepkört. Válassza ki a szükséges felhasználókat vagy csoportokat az engedélyek megadásához.

A privát DNS-erőforráscsoport RBAC-jének képernyőképe.

Az engedélyek az Azure PowerShell használatával is megadhatóak:

# 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

Az ezzel egyenértékű parancs az Azure CLI-en keresztül is elérhető:

# 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>"

Privát zónaszintű Azure RBAC

Az Azure RBAC-szabályok egy előfizetésre, egy erőforráscsoportra vagy egy adott erőforrásra alkalmazhatók. Ez az erőforrás lehet egyéni DNS-zóna vagy egyedi rekordkészlet.

A myPrivateDNS erőforráscsoport például tartalmazza a zóna private.contoso.com és egy alzóna customers.private.contoso.com. A CNAME rekordok minden ügyfélfiókhoz létrejönnek. A CNAME rekordok kezeléséhez használt rendszergazdai fiókhoz hozzá vannak rendelve engedélyek a rekordok létrehozásához a customers.private.contoso.com zónában. A fiók csak customers.private.contoso.com kezelhet.

Zónaszintű Azure RBAC-engedélyek az Azure Portalon keresztül adhatóak meg. Nyissa meg a zóna hozzáférés-vezérlését (IAM), válassza a Hozzáadás, majd a saját DNS Zóna közreműködője szerepkört. Válassza ki a szükséges felhasználókat vagy csoportokat az engedélyek megadásához.

A privát DNS-zóna RBAC-jének képernyőképe.

Az engedélyek az Azure PowerShell használatával is megadhatóak:

# 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

Az ezzel egyenértékű parancs az Azure CLI-en keresztül is elérhető:

# 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>/"

Rekordhalmaz szintje Azure RBAC

Az engedélyek a rekordhalmaz szintjén vannak alkalmazva. A felhasználónak hozzáférése van a szükséges bejegyzésekhez, és nem tud más módosításokat végrehajtani.

A rekordhalmaz szintű Azure RBAC-engedélyek az Azure Portalon konfigurálhatók a rekordhalmaz oldalán található Hozzáférés-vezérlés (IAM) gombbal:

A privát DNS-rekordkészlet RBAC-jének képernyőképe.

Képernyőkép a privát DNS-rekordkészlet szerepkör-hozzárendeléséről.

Rekordszintű Azure RBAC-engedélyek az Azure PowerShell használatával is megadhatóak:

# 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

Az ezzel egyenértékű parancs az Azure CLI-en keresztül is elérhető:

# 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>"

Egyéni szerepkörök

A beépített saját DNS zóna közreműködői szerepköre lehetővé teszi a DNS-erőforrások teljes körű vezérlését. Saját egyéni Azure-szerepköröket is létrehozhat, hogy részletesebb vezérlést biztosítson.

A CNAME-k kezelésére használt fiók csak a CNAME rekordok kezelésére jogosult. A fiók nem tudja módosítani más típusú rekordokat. A fiók nem tudja elvégezni a zónaszintű műveleteket, például a zóna törlését.

Az alábbi példa egy egyéni szerepkördefiníciót mutat be, amely csak a CNAME rekordokat kezeli:

{
    "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"
    ]
}

Az Actions tulajdonság a következő DNS-specifikus engedélyeket határozza meg:

  • Microsoft.Network/privateDnsZones/CNAME/* teljes felügyeletet biztosít a CNAME rekordok felett
  • Microsoft.Network/privateDNSZones/read engedélyt ad a DNS privát zónáinak olvasására, de nem módosíthatja őket, így láthatja a CNAME-t létrehozó zónát.

Feljegyzés

Ha egyéni Azure-szerepkört használ a rekordhalmazok törlésének megakadályozására, de továbbra is engedélyezi azok frissítését, az nem hatékony vezérlő. Megakadályozza a rekordhalmazok törlését, de nem akadályozza meg őket a módosításban. Az engedélyezett módosítások közé tartozik a rekordok hozzáadása és eltávolítása a rekordkészletből, beleértve az összes rekord eltávolítását is, hogy üres rekordhalmazt hagyjon. Ennek ugyanaz a hatása, mint a rekordhalmaz törlése DNS-feloldási szempontból.

Az egyéni szerepkör-definíciók jelenleg nem határozhatók meg az Azure Portalon. A szerepkördefiníción alapuló egyéni szerepkör az Azure PowerShell használatával hozható létre:

# Create new role definition based on input file

New-AzRoleDefinition -InputFile <file path>

Az Azure CLI-vel is létrehozható:

# Create new role definition based on input file

az role create -inputfile <file path>

A szerepkör ezután ugyanúgy rendelhető hozzá, mint a beépített szerepkörökhöz, a cikk korábbi részében leírtak szerint.

Az egyéni szerepkörök létrehozásával, kezelésével és hozzárendelésével kapcsolatos további információkért tekintse meg az Azure-ra vonatkozó egyéni szerepköröket.

Erőforrás-zárolások

Az Azure Resource Manager egy másik típusú biztonsági vezérlést támogat, amely lehetővé teszi az erőforrások zárolását. Az erőforrás-zárolások az erőforrásra vonatkoznak, és minden felhasználó és szerepkör esetében érvényesek. További információ: Erőforrások zárolása az Azure Resource Manager eszközzel.

Az erőforrás-zárolásnak két típusa van: a CanNotDelete és a ReadOnly. Ezek a zárolástípusok egy saját DNS zónára vagy egy adott rekordhalmazra alkalmazhatók. Az alábbi szakaszok számos gyakori forgatókönyvet ismertetnek, és azt ismertetik, hogyan támogathatók erőforrás-zárolásokkal.

Védelem az összes módosítás ellen

A módosítások megakadályozása érdekében alkalmazzon egy ReadOnly zárolást a zónára. Ez a zárolás megakadályozza az új rekordhalmazok létrehozását, valamint a meglévő rekordhalmazok módosítását vagy törlését.

A zónaszintű erőforrás-zárolások az Azure Portalon hozhatók létre. A DNS-zóna lapján válassza a Zárolások, majd a +Hozzáadás:

Képernyőkép a privát DNS-zóna zárolásáról.

Zónaszintű erőforrás-zárolások az Azure PowerShell használatával is létrehozhatók:

# 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

Az ezzel egyenértékű parancs az Azure CLI-en keresztül is elérhető:

# 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>"

Egyéni rekordok védelme

Ha meg szeretné akadályozni egy meglévő DNS-rekordkészlet módosítását, alkalmazzon olvasási zárolást a rekordkészletre.

Feljegyzés

A CanNotDelete-zárolások rekordhalmazokra való alkalmazása nem hatékony vezérlő. Megakadályozza a rekordhalmaz törlését, de nem akadályozza meg a módosítást. Az engedélyezett módosítások közé tartozik a rekordok hozzáadása és eltávolítása a rekordkészletből, beleértve az összes rekord eltávolítását is, hogy üres rekordhalmazt hagyjon. Ennek ugyanaz a hatása, mint a rekordhalmaz törlése DNS-feloldási szempontból.

A rekordhalmazszintű erőforrás-zárolások jelenleg csak az Azure PowerShell használatával konfigurálhatók. Az Azure Portalon vagy az Azure CLI-ben nem támogatottak.

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

Védelem a zónatörlés ellen

Ha egy zónát töröl az Azure DNS-ben, a rendszer törli a zónában lévő összes rekordhalmazt. Ez a művelet nem vonható vissza. A kritikus zónák véletlen törlésének jelentős üzleti hatása lehet. Fontos, hogy védelmet nyújtsunk a zóna véletlen törlése ellen.

A CanNotDelete-zárolás zónára való alkalmazása megakadályozza a zóna törlését. A zárolásokat a gyermekerőforrások öröklik. A zárolás megakadályozza a zónában lévő rekordhalmazok törlését. A fenti megjegyzésben leírtak szerint hatástalan, mivel a rekordok továbbra is eltávolíthatók a meglévő rekordkészletekből.

Alternatív megoldásként alkalmazzon Egy CanNotDelete-zárolást a zónában lévő rekordhalmazra, például az SOA rekordkészletre. A zóna nem törlődik a rekordhalmazok törlése nélkül. Ez a zárolás védelmet nyújt a zónatörlés ellen, ugyanakkor lehetővé teszi a zónán belüli rekordhalmazok szabadon történő módosítását. Ha megkísérli törölni a zónát, az Azure Resource Manager észleli ezt az eltávolítást. Az eltávolítás az SOA rekordkészletet is törli, az Azure Resource Manager letiltja a hívást, mert az SOA zárolva van. A rendszer nem töröl rekordhalmazokat.

A következő PowerShell-parancs létrehoz egy CanNotDelete-zárolást az adott zóna SOA rekordja ellen:

# 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

A zóna véletlen törlésének megelőzésére másik lehetőség az egyéni szerepkör használata. Ez a szerepkör biztosítja, hogy a zónák kezeléséhez használt fiókok ne rendelkezzenek zónatörlés engedélyekkel.

Ha törölnie kell egy zónát, kényszerítheti a kétlépéses törlést:

  • Először adjon zónatörléshez szükséges engedélyeket
  • Másodszor adjon engedélyeket a zóna törléséhez.

Az egyéni szerepkör az adott fiókok által elért összes zónában működik. A zónatörlés engedélyekkel (például az előfizetés tulajdonosával) rendelkező fiókok továbbra is véletlenül törölhetik a zónákat.

Mindkét megközelítés – erőforrás-zárolások és egyéni szerepkörök – egyidejűleg használható a DNS-zónavédelem részletes védelmi megközelítéseként.

Következő lépések