Jak chronić prywatne strefy i rekordy DNS

Uwaga

Zalecamy korzystanie z modułu Azure Az programu PowerShell do interakcji z platformą Azure. Zobacz Instalowanie programu Azure PowerShell, aby rozpocząć. Aby dowiedzieć się, jak przeprowadzić migrację do modułu Az PowerShell, zobacz Migracja programu Azure PowerShell z modułu AzureRM do modułu Az.

Prywatna strefa DNS strefy i rekordy są zasobami krytycznymi. Usunięcie strefy DNS lub pojedynczego rekordu DNS może spowodować awarię usługi. Ważne jest, aby strefy i rekordy DNS chroniły przed nieautoryzowanymi lub przypadkowymi zmianami.

W tym artykule wyjaśniono, jak usługa Azure DNS umożliwia ochronę prywatnych stref DNS i rekordów przed takimi zmianami. Stosujemy dwie zaawansowane funkcje papierów wartościowych udostępniane przez usługę Azure Resource Manager: kontrolę dostępu opartą na rolach (RBAC)platformy Azure i blokady zasobów.

Kontrola dostępu na podstawie ról na platformie Azure

Kontrola dostępu oparta na rolach (RBAC) platformy Azure umożliwia szczegółowe zarządzanie dostępem dla użytkowników, grup i zasobów platformy Azure. Dzięki kontroli dostępu opartej na rolach platformy Azure można przyznać poziom dostępu, którego potrzebują użytkownicy. Aby uzyskać więcej informacji o tym, jak kontrola dostępu oparta na rolach platformy Azure ułatwia zarządzanie dostępem, zobacz Co to jest kontrola dostępu oparta na rolach (RBAC) platformy Azure.

Rola Współautor strefy Prywatna strefa DNS

Rola współautora strefy Prywatna strefa DNS jest wbudowaną rolą do zarządzania prywatnymi zasobami DNS. Ta rola zastosowana do użytkownika lub grupy umożliwia zarządzanie prywatnymi zasobami DNS.

Grupa zasobów myPrivateDNS zawiera pięć stref dla firmy Contoso Corporation. Udzielanie administratorowi DNS Prywatna strefa DNS uprawnienia Współautor strefy do tej grupy zasobów umożliwia pełną kontrolę nad tymi strefami DNS. Pozwala uniknąć udzielania niepotrzebnych uprawnień. Administrator DNS nie może utworzyć ani zatrzymać maszyn wirtualnych.

Najprostszym sposobem przypisania uprawnień RBAC platformy Azure jest użycie Azure Portal.

Otwórz pozycję Kontrola dostępu (zarządzanie dostępem i tożsamościami) dla grupy zasobów, wybierz pozycję Dodaj, a następnie wybierz rolę Współautor strefy Prywatna strefa DNS. Wybierz wymaganych użytkowników lub grupy, aby przyznać uprawnienia.

Zrzut ekranu przedstawiający kontrolę dostępu opartą na rolach dla prywatnej grupy zasobów DNS.

Uprawnienia można również przyznać przy użyciu 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

Równoważne polecenie jest również dostępne za pośrednictwem interfejsu wiersza polecenia platformy Azure:

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

Kontrola dostępu oparta na rolach platformy Azure na poziomie strefy prywatnej

Reguły RBAC platformy Azure można stosować do subskrypcji, grupy zasobów lub pojedynczego zasobu. Ten zasób może być pojedynczą strefą DNS lub pojedynczym zestawem rekordów.

Na przykład grupa zasobów myPrivateDNS zawiera strefę private.contoso.com i podstrefę customers.private.contoso.com. Rekordy CNAME są tworzone dla każdego konta klienta. Konto administratora używane do zarządzania rekordami CNAME ma przypisane uprawnienia do tworzenia rekordów w strefie customers.private.contoso.com . Konto może zarządzać tylko customers.private.contoso.com .

Uprawnienia RBAC platformy Azure na poziomie strefy można przyznać za pośrednictwem Azure Portal. Otwórz pozycję Kontrola dostępu (IAM) dla strefy, wybierz pozycję Dodaj, a następnie wybierz rolę współautora strefy Prywatna strefa DNS. Wybierz wymaganych użytkowników lub grupy, aby przyznać uprawnienia.

Zrzut ekranu przedstawiający kontrolę dostępu opartą na rolach dla prywatnej strefy DNS.

Uprawnienia można również przyznać przy użyciu 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

Równoważne polecenie jest również dostępne za pośrednictwem interfejsu wiersza polecenia platformy Azure:

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

Kontrola dostępu oparta na rolach platformy Azure na poziomie zestawu rekordów

Uprawnienia są stosowane na poziomie zestawu rekordów. Użytkownik ma kontrolę nad potrzebnymi wpisami i nie może wprowadzać żadnych innych zmian.

Uprawnienia RBAC na poziomie zestawu rekordów platformy Azure można skonfigurować za pośrednictwem Azure Portal przy użyciu przycisku Access Control (IAM) na stronie zestawu rekordów:

Zrzut ekranu przedstawiający kontrolę dostępu opartą na rolach dla prywatnego zestawu rekordów DNS.

Zrzut ekranu przedstawiający przypisanie roli dla prywatnego zestawu rekordów DNS.

Uprawnienia kontroli dostępu opartej na rolach platformy Azure na poziomie zestawu rekordów można również przyznać przy użyciu 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

Równoważne polecenie jest również dostępne za pośrednictwem interfejsu wiersza polecenia platformy Azure:

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

Role niestandardowe

Wbudowana rola współautora strefy Prywatna strefa DNS umożliwia pełną kontrolę nad zasobem DNS. Istnieje możliwość utworzenia własnych niestandardowych ról platformy Azure w celu zapewnienia bardziej szczegółowej kontroli.

Konto, które jest używane do zarządzania rekordami CAM, ma uprawnienie tylko do zarządzania rekordami CNAME. Konto nie może modyfikować rekordów innych typów. Konto nie może wykonywać operacji na poziomie strefy, takich jak usuwanie strefy.

W poniższym przykładzie przedstawiono niestandardową definicję roli do zarządzania tylko rekordami CNAME:

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

Właściwość Actions definiuje następujące uprawnienia specyficzne dla systemu DNS:

  • Microsoft.Network/privateDnsZones/CNAME/* zapewnia pełną kontrolę nad rekordami CNAME
  • Microsoft.Network/privateDNSZones/read udziela uprawnień do odczytu stref prywatnych DNS, ale nie do ich modyfikowania, umożliwiając wyświetlanie strefy, w której jest tworzona nazwa CNAME.

Uwaga

Używanie roli niestandardowej platformy Azure do zapobiegania usuwaniu zestawów rekordów przy jednoczesnym umożliwieniu ich aktualizacji nie jest efektywną kontrolą. Zapobiega usuwaniu zestawów rekordów, ale nie uniemożliwia ich modyfikowania. Dozwolone modyfikacje obejmują dodawanie i usuwanie rekordów z zestawu rekordów, w tym usuwanie wszystkich rekordów w celu pozostawienia pustego zestawu rekordów. Ma to taki sam efekt jak usunięcie zestawu rekordów z punktu widzenia rozpoznawania nazw DNS.

Definicje ról niestandardowych nie mogą być obecnie zdefiniowane za pośrednictwem Azure Portal. Rolę niestandardową opartą na tej definicji roli można utworzyć przy użyciu Azure PowerShell:

# Create new role definition based on input file

New-AzRoleDefinition -InputFile <file path>

Można go również utworzyć za pomocą interfejsu wiersza polecenia platformy Azure:

# Create new role definition based on input file

az role create -inputfile <file path>

Następnie rolę można przypisać w taki sam sposób, jak role wbudowane, jak opisano wcześniej w tym artykule.

Aby uzyskać więcej informacji na temat tworzenia ról niestandardowych, zarządzania nimi i przypisywania ich, zobacz Role niestandardowe platformy Azure.

Blokady zasobów

Usługa Azure Resource Manager obsługuje inny typ kontroli zabezpieczeń, czyli możliwość blokowania zasobów. Blokady zasobów są stosowane do zasobu i obowiązują we wszystkich użytkownikach i rolach. Aby uzyskać więcej informacji, zobacz Lock resources with Azure Resource Manager (Blokowanie zasobów w usłudze Azure Resource Manager).

Istnieją dwa typy blokady zasobów: CanNotDelete i ReadOnly. Te typy blokad można zastosować do strefy Prywatna strefa DNS lub do pojedynczego zestawu rekordów. W poniższych sekcjach opisano kilka typowych scenariuszy i sposób ich obsługi przy użyciu blokad zasobów.

Ochrona przed wszystkimi zmianami

Aby zapobiec wprowadzeniu zmian, zastosuj blokadę ReadOnly do strefy. Ta blokada uniemożliwia tworzenie nowych zestawów rekordów, a istniejące zestawy rekordów nie są modyfikowane lub usuwane.

Blokady zasobów na poziomie strefy można utworzyć za pośrednictwem Azure Portal. Na stronie Strefa DNS wybierz pozycję Blokady, a następnie wybierz pozycję +Dodaj:

Zrzut ekranu przedstawiający blokady prywatnej strefy DNS.

Blokady zasobów na poziomie strefy można również utworzyć za pośrednictwem 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

Równoważne polecenie jest również dostępne za pośrednictwem interfejsu wiersza polecenia platformy Azure:

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

Ochrona poszczególnych rekordów

Aby zapobiec modyfikacji istniejącego zestawu rekordów DNS, zastosuj blokadę ReadOnly do zestawu rekordów.

Uwaga

Zastosowanie blokady CanNotDelete do zestawu rekordów nie jest efektywną kontrolką. Zapobiega on usuwaniu zestawu rekordów, ale nie uniemożliwia jego modyfikacji. Dozwolone modyfikacje obejmują dodawanie i usuwanie rekordów z zestawu rekordów, w tym usuwanie wszystkich rekordów w celu pozostawienia pustego zestawu rekordów. Ma to taki sam efekt jak usunięcie zestawu rekordów z punktu widzenia rozpoznawania nazw DNS.

Blokady zasobów na poziomie zestawu rekordów można obecnie konfigurować tylko przy użyciu Azure PowerShell. Nie są one obsługiwane w Azure Portal ani w interfejsie wiersza polecenia platformy Azure.

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

Ochrona przed usunięciem strefy

Gdy strefa zostanie usunięta w usłudze Azure DNS, wszystkie zestawy rekordów w strefie zostaną usunięte. Tej operacji nie można cofnąć. Przypadkowe usunięcie strefy krytycznej może mieć znaczący wpływ na działalność biznesową. Ważne jest, aby chronić przed przypadkowym usunięciem strefy.

Zastosowanie blokady CanNotDelete do strefy uniemożliwia usunięcie strefy. Blokady są dziedziczone przez zasoby podrzędne. Blokada uniemożliwia usunięcie wszystkich zestawów rekordów w strefie. Jak opisano w powyższej notatce, jest nieskuteczne, ponieważ rekordy mogą być nadal usuwane z istniejących zestawów rekordów.

Alternatywnie zastosuj blokadę CanNotDelete do zestawu rekordów w strefie, takiego jak zestaw rekordów SOA. Strefa nie jest usuwana bez usuwania również zestawów rekordów. Ta blokada chroni przed usunięciem strefy, a jednocześnie pozwala na swobodne modyfikowanie zestawów rekordów w strefie. Jeśli zostanie podjęta próba usunięcia strefy, usługa Azure Resource Manager wykryje to usunięcie. Usunięcie spowoduje również usunięcie zestawu rekordów SOA, usługa Azure Resource Manager blokuje wywołanie, ponieważ soa jest zablokowana. Żadne zestawy rekordów nie są usuwane.

Następujące polecenie programu PowerShell tworzy blokadę CanNotDelete względem rekordu SOA danej strefy:

# 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

Inną opcją zapobiegania przypadkowemu usunięciu strefy jest użycie roli niestandardowej. Ta rola zapewnia, że konta używane do zarządzania strefami nie mają uprawnień do usuwania strefy.

Jeśli musisz usunąć strefę, możesz wymusić usunięcie dwuetapowe:

  • Najpierw przyznaj uprawnienia do usuwania strefy
  • Po drugie przyznaj uprawnienia do usuwania strefy.

Rola niestandardowa działa dla wszystkich stref, do których uzyskują dostęp te konta. Konta z uprawnieniami usuwania strefy, takimi jak właściciel subskrypcji, mogą nadal przypadkowo usunąć strefę.

Można użyć obu metod — blokad zasobów i ról niestandardowych — w tym samym czasie, co podejście do ochrony strefy DNS w głębi systemu .

Następne kroki