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


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.

A DNS-zónák és -rekordok kritikus 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 DNS-zóna közreműködői szerepköre

A 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 a DNS-erőforrások kezelését.

A myResourceGroup erőforráscsoport öt zónát tartalmaz a Contoso Corporation számára. A DNS-rendszergazda DNS-zóna közreműködői engedélyeinek megadása az adott erőforráscsoport számára lehetővé teszi a DNS-zónák teljes körű ellenőrzését. 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), majd válassza a + Hozzáadás lehetőséget, majd válassza ki a DNS-zóna közreműködői szerepkörét. Válassza ki a szükséges felhasználókat vagy csoportokat az engedélyek megadásához.

Képernyőkép az erőforráscsoport hozzáférés-vezérlési oldaláról.

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

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

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

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

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

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

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

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 myResourceGroup erőforráscsoport például tartalmazza a zóna contoso.com és egy alzóna customers.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 a rekordok létrehozásához szükséges engedélyek a customers.contoso.com zónában. A fiók csak customers.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 lehetőséget, majd válassza ki a DNS-zóna közreműködői szerepkörét, és válassza ki a szükséges felhasználókat vagy csoportokat az engedélyek megadásához.

Képernyőkép a DNS-zóna hozzáférés-vezérlési oldaláról.

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

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

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

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

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

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

az role assignment create \
--assignee <user email address> \
--role "DNS Zone Contributor" \
--scope "/subscriptions/<subscription id>/resourceGroups/<resource group name>/providers/Microsoft.Network/DnsZones/<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.

Rekordhalmaz szintű Azure RBAC-engedélyek konfigurálhatók az Azure Portalon, a Rekordkészlet lap Felhasználók gombjának használatával:

Képernyőkép a rekordhalmaz felhasználói gombjá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 = "DNS Zone Contributor"
$sco = 
"/subscriptions/<subscription id>/resourceGroups/<resource group name>/providers/Microsoft.Network/dnszones/<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 "DNS Zone Contributor" \
--scope "/subscriptions/<subscription id>/resourceGroups/<resource group name>/providers/Microsoft.Network/dnszones/<zone name>/<record type>/<record name>"

Egyéni szerepkörök

A beépített DNS-zóna közreműködői szerepköre lehetővé teszi a DNS-erőforrások teljes felügyeleté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": "DNS CNAME Contributor",
    "Id": "",
    "IsCustom": true,
    "Description": "Can manage DNS CNAME records only.",
    "Actions": [
        "Microsoft.Network/dnsZones/CNAME/*",
        "Microsoft.Network/dnsZones/read",
        "Microsoft.Authorization/*/read",
        "Microsoft.Insights/alertRules/*",
        "Microsoft.ResourceHealth/availabilityStatuses/read",
        "Microsoft.Resources/deployments/*",
        "Microsoft.Resources/subscriptions/resourceGroups/read",
        "Microsoft.Support/*"
    ],
    "NotActions": [
    ],
    "AssignableScopes": [
        "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"
    ]
}

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

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

A többi művelet ki lesz másolva a DNS-zóna közreműködője beépített szerepköréből.

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 definition create --role-definition <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 elemet:

Képernyőkép a zónaszintű erőforrás-zárolásokró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/DNSZones"
$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 "DnsZones" \
--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.

# Lock a DNS record set

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

New-AzResourceLock -LockLevel $lvl -LockName $lnm -ResourceName $rsc -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>"
$rsc = "<zone name>/@"
$rty = "Microsoft.Network/DNSZones/SOA"
$rsg = "<resource group name>"

New-AzResourceLock -LockLevel $lvl -LockName $lnm -ResourceName $rsc -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