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.
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.
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:
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 felettMicrosoft.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:
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
- Az Azure RBAC használatával kapcsolatos további információkért lásd : Mi az Azure szerepköralapú hozzáférés-vezérlés (Azure RBAC).
- Az erőforrás-zárolások használatával kapcsolatos további információkért lásd : Erőforrások zárolása az Azure Resource Managerrel.