Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Opmerking
U wordt aangeraden de Azure Az PowerShell-module te gebruiken om te communiceren met Azure. Zie Azure PowerShell installeren om aan de slag te gaan. Raadpleeg Azure PowerShell migreren van AzureRM naar Az om te leren hoe u naar de Azure PowerShell-module migreert.
Private DNS zones and records are critical resources. Als u een DNS-zone of één DNS-record verwijdert, kan dit leiden tot een storing in de service. Het is belangrijk dat DNS-zones en -records worden beveiligd tegen niet-geautoriseerde of onbedoelde wijzigingen.
In dit artikel wordt uitgelegd hoe u met Azure DNS uw privé-DNS-zones en -records kunt beveiligen tegen dergelijke wijzigingen. We passen twee krachtige beveiligingsfuncties van Azure Resource Manager toe: Azure's rolgebaseerde toegangsbeheer (Azure RBAC) en resourcevergrendelingen.
Op rollen gebaseerd toegangsbeheer van Azure
Op rollen gebaseerd toegangsbeheer van Azure (Azure RBAC) maakt gedetailleerd toegangsbeheer mogelijk voor Azure-gebruikers, -groepen en -resources. Met Azure RBAC kunt u het toegangsniveau verlenen dat gebruikers nodig hebben. Zie Wat is op rollen gebaseerd toegangsbeheer van Azure (Azure RBAC) voor meer informatie over hoe Azure RBAC u helpt bij het beheren van toegang.
The Private DNS Zone Contributor role
The Private DNS Zone Contributor role is a built-in role for managing private DNS resources. This role applied to a user or group enables them to manage private DNS resources.
The resource group myPrivateDNS contains five zones for Contoso Corporation. Granting the DNS administrator Private DNS Zone Contributor permissions to that resource group, enables full control over those DNS zones. Het voorkomt dat onnodige machtigingen worden verleend. De DNS-beheerder kan geen virtuele machines maken of stoppen.
De eenvoudigste manier om Azure RBAC-machtigingen toe te wijzen, is via Azure Portal.
Open Access control (IAM) for the resource group, select Add, then select the Private DNS Zone Contributor role. Selecteer de vereiste gebruikers of groepen om machtigingen te verlenen.
Machtigingen kunnen ook worden verleend met behulp van Azure PowerShell:
# 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
De equivalente opdracht is ook beschikbaar via de Azure CLI:
# 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>"
Private Zone level Azure RBAC
Azure RBAC-regels kunnen worden toegepast op een abonnement, een resourcegroep of op een afzonderlijke resource. Deze resource kan een afzonderlijke DNS-zone of een afzonderlijke recordset zijn.
For example, the resource group myPrivateDNS contains the zone private.contoso.com and a subzone customers.private.contoso.com. CNAME-records worden gemaakt voor elk klantaccount. The administrator account used to manage CNAME records is assigned permissions to create records in the customers.private.contoso.com zone. The account can manage customers.private.contoso.com only.
Azure RBAC-machtigingen op zoneniveau kunnen worden verleend via Azure Portal. Open Access control (IAM) for the zone, select Add, then select the Private DNS Zone Contributor role. Selecteer de vereiste gebruikers of groepen om machtigingen te verlenen.
Machtigingen kunnen ook worden verleend met behulp van Azure PowerShell:
# 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
De equivalente opdracht is ook beschikbaar via de Azure CLI:
# 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>/"
Record set level Azure RBAC
Permissions are applied at the record set level. De gebruiker krijgt controle over vermeldingen die ze nodig hebben en kan geen andere wijzigingen aanbrengen.
Record-set level Azure RBAC permissions can be configured via the Azure portal, using the Access Control (IAM) button in the record set page:
Azure RBAC-machtigingen op recordniveau kunnen ook worden verleend met behulp van Azure PowerShell:
# 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
De equivalente opdracht is ook beschikbaar via de Azure CLI:
# 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>"
Aangepaste rollen
The built-in Private DNS Zone Contributor role enables full control over a DNS resource. Het is mogelijk om uw eigen aangepaste Azure-rollen te bouwen om nauwkeurige controle te bieden.
Het account dat wordt gebruikt voor het beheren van CNAMEs wordt alleen gemachtigd om CNAME-records te beheren. Het account kan geen records van andere typen wijzigen. Het account kan geen bewerkingen op zoneniveau uitvoeren, zoals zone verwijderen.
In het volgende voorbeeld ziet u alleen een aangepaste roldefinitie voor het beheren van CNAME-records:
{
"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>"
]
}
De eigenschap Actions definieert de volgende DNS-specifieke machtigingen:
-
Microsoft.Network/privateDnsZones/CNAME/*
verleent volledige controle over CNAME-records -
Microsoft.Network/privateDNSZones/read
grants permission to read DNS private zones, but not to modify them, enabling you to see the zone in which the CNAME is being created.
Opmerking
Het gebruik van een aangepaste Azure-rol om te voorkomen dat recordsets worden verwijderen terwijl ze nog steeds kunnen worden bijgewerkt, is geen effectief besturingselement. Hiermee voorkomt u dat recordsets worden verwijderd, maar niet wordt voorkomen dat ze worden gewijzigd. Toegestane wijzigingen omvatten het toevoegen en verwijderen van records uit de recordset, inclusief het verwijderen van alle records om een lege recordset te verlaten. Dit heeft hetzelfde effect als het verwijderen van de recordset vanuit het oogpunt van DNS-resolutie.
Aangepaste roldefinities kunnen momenteel niet worden gedefinieerd via Azure Portal. Een aangepaste rol op basis van deze roldefinitie kan worden gemaakt met behulp van Azure PowerShell:
# Create new role definition based on input file
New-AzRoleDefinition -InputFile <file path>
Het kan ook worden gemaakt via de Azure CLI:
# Create new role definition based on input file
az role create -inputfile <file path>
De rol kan vervolgens op dezelfde manier worden toegewezen als ingebouwde rollen, zoals eerder in dit artikel is beschreven.
Zie Aangepaste Azure-rollen voor meer informatie over het maken, beheren en toewijzen van aangepaste rollen.
Resourcevergrendelingen
Azure Resource Manager ondersteunt een ander type beveiligingsbeheer, de mogelijkheid om resources te vergrendelen. Resourcevergrendelingen worden toegepast op de resource en zijn effectief voor alle gebruikers en rollen. Zie voor meer informatie Resources vergrendelen met Azure Resource Manager.
Er zijn twee typen resourcevergrendeling: CanNotDelete en ReadOnly. Deze vergrendelingstypen kunnen worden toegepast op een Privé-DNS zone of op een afzonderlijke recordset. In de volgende secties worden verschillende veelvoorkomende scenario's beschreven en wordt beschreven hoe u deze kunt ondersteunen met behulp van resourcevergrendelingen.
Bescherming tegen alle wijzigingen
Als u wilt voorkomen dat er wijzigingen worden aangebracht, past u een ReadOnly-vergrendeling toe op de zone. Met deze vergrendeling voorkomt u dat nieuwe recordsets worden gemaakt en dat bestaande recordsets niet worden gewijzigd of verwijderd.
Resourcevergrendelingen op zoneniveau kunnen worden gemaakt via Azure Portal. From the DNS zone page, select Locks, then select +Add:
Resourcevergrendelingen op zoneniveau kunnen ook worden gemaakt via Azure PowerShell:
# 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
De equivalente opdracht is ook beschikbaar via de Azure CLI:
# 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>"
Afzonderlijke records beveiligen
Als u wilt voorkomen dat een bestaande DNS-recordset wordt gewijzigd, past u een ReadOnly-vergrendeling toe op de recordset.
Opmerking
Het toepassen van een CanNotDelete-vergrendeling op een recordset is geen effectief besturingselement. Hiermee voorkomt u dat de recordset wordt verwijderd, maar niet wordt voorkomen dat deze wordt gewijzigd. Toegestane wijzigingen omvatten het toevoegen en verwijderen van records uit de recordset, inclusief het verwijderen van alle records om een lege recordset te verlaten. Dit heeft hetzelfde effect als het verwijderen van de recordset vanuit het oogpunt van DNS-resolutie.
Resourcevergrendelingen op recordsetniveau kunnen momenteel alleen worden geconfigureerd met behulp van Azure PowerShell. Ze worden niet ondersteund in Azure Portal of Azure CLI.
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
Beveiliging tegen zoneverwijdering
Wanneer een zone wordt verwijderd in Azure DNS, worden alle recordsets in de zone verwijderd. Deze bewerking kan niet ongedaan worden gemaakt. Het per ongeluk verwijderen van een kritieke zone heeft het potentieel om een aanzienlijke bedrijfsimpact te hebben. Het is belangrijk om te beschermen tegen onbedoelde zoneverwijdering.
Het toepassen van een CanNotDelete-vergrendeling op een zone voorkomt dat de zone wordt verwijderd. Locks are inherited by child resources. Een vergrendeling voorkomt dat recordsets in de zone worden verwijderd. Zoals beschreven in de bovenstaande opmerking, is het ineffectief omdat records nog steeds uit de bestaande recordsets kunnen worden verwijderd.
Als alternatief past u een CanNotDelete-vergrendeling toe op een recordset in de zone, zoals de SOA-recordset. De zone wordt niet verwijderd zonder ook de recordsets te verwijderen. Deze vergrendeling beschermt tegen zoneverwijdering, terwijl recordsets binnen de zone vrij kunnen worden gewijzigd. Als er een poging wordt gedaan om de zone te verwijderen, detecteert Azure Resource Manager deze verwijdering. Als u de SOA-recordset verwijdert, blokkeert Azure Resource Manager de aanroep omdat de SOA is vergrendeld. Er worden geen recordsets verwijderd.
Met de volgende PowerShell-opdracht maakt u een CanNotDelete-vergrendeling op basis van de SOA-record van de opgegeven zone:
# 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
Een andere optie om onbedoelde zoneverwijdering te voorkomen, is door een aangepaste rol te gebruiken. Deze rol zorgt ervoor dat de accounts die worden gebruikt voor het beheren van uw zones, geen machtigingen voor zone verwijderen hebben.
Wanneer u een zone moet verwijderen, kunt u een verwijdering in twee stappen afdwingen:
- Verleen eerst machtigingen voor het verwijderen van zones.
- Ten tweede verleent u machtigingen om de zone te verwijderen.
De aangepaste rol werkt voor alle zones die door deze accounts worden geopend. Accounts met machtigingen voor zone verwijderen, zoals de eigenaar van het abonnement, kunnen nog steeds per ongeluk een zone verwijderen.
Het is mogelijk om beide benaderingen te gebruiken: resourcevergrendelingen en aangepaste rollen, tegelijkertijd als een diepgaande verdedigingsbenadering voor DNS-zonebeveiliging.
Volgende stappen
- Zie Wat is op rollen gebaseerd toegangsbeheer van Azure (Azure RBAC) voor meer informatie over het werken met Azure RBAC.
- Zie Resources vergrendelen met Azure Resource Manager voor meer informatie over het werken met resourcevergrendelingen.