DNS-Subdomain-Delegierung¶
Ein Weg, workload-Teams die DNS-Einträge für ihre eigenen private endpoints und internen Dienste selbst verwalten zu lassen, ohne bei jeder Änderung ein Ticket an die zentrale IT. Die Idee: Eine Subdomain des internen Namensraums der Organisation wird an Azure delegiert, und jedes Team besitzt darunter eine Zone.
Das Problem¶
Wenn workloads auf die Plattform ziehen, brauchen Teams DNS-Einträge für private endpoints und interne Dienste. Wenn alle Änderungen über ein zentrales DNS-Team laufen:
- werden Anfragen zum Engpass und bremsen Deployment-pipelines,
- gibt es kein Self-Service,
- ist die Zuständigkeit für Zonen unklar,
- skaliert der zentrale Ansatz nicht mit der Zahl der workloads.
Wie das bestehende DNS meist aussieht¶
- Ein zentraler DNS-Betreiber, der die DNS-Hauptinfrastruktur betreibt.
- Möglicherweise ein Netzwerkanbieter mit eigener Namensauflösung.
- Active Directory (oder Ähnliches), das den internen Namensraum enthält.
- Azure Firewall (oder ein anderer freigegebener DNS-Proxy), der regionales DNS-Forwarding bereitstellt.
- Zentrale Private-DNS-Zonen für Azure-Dienste (
privatelink.*). - Policies, die Zonen mit den hub-Netzwerken verknüpfen. Siehe DNS-Design.
Empfehlung¶
Eine Subdomain delegieren¶
Wähle eine Subdomain des internen Namensraums, zum Beispiel azure.<organisation-domain>. Der zentrale DNS-Betreiber
richtet für diese Subdomain das Forwarding an die Adressen der regionalen DNS-Proxys ein. Alles darunter wird über
die Azure-Private-DNS-Zonen aufgelöst.
Zonenbenennung¶
Teams erstellen ihre Private-DNS-Zonen nach einem festen Muster:
<environment>.<workload-id>.azure.<organisation-domain>
| Teil | Bedeutung |
|---|---|
<environment> |
Eine von der Organisation definierte Umgebungskennung |
<workload-id> |
Eine von der Organisation definierte workload-Kennung |
Beispiele: prod.app1.azure.contoso.example, test.app2.azure.contoso.example.
Teams dürfen unterhalb ihrer Zone Subzonen anlegen, solange sie das Wurzelmuster beibehalten, zum Beispiel pro Region
(<region>.prod.app1.azure.contoso.example) oder pro Dienst (api.prod.app1.azure.contoso.example).
Als Code deployen und verwalten¶
- Teams deployen die Zonen mit Infrastructure as Code in ihren eigenen Subscriptions.
- Teams verwalten die Einträge in den Zonen aus ihren eigenen pipelines.
- Die Zonenverknüpfung ist automatisiert mit Azure Policy: Eine neue Private-DNS-Zone wird mit den regionalen hub-Netzwerken verknüpft, sodass die Zone von jedem Spoke aus aufgelöst wird, ohne manuelle Netzwerkverknüpfungen.
Governance¶
| Kontrolle | Wie |
|---|---|
| Die Benennung wird erzwungen | Eine Azure Policy verweigert Private-DNS-Zonen, die dem Muster nicht folgen |
| Die Verknüpfung ist automatisch | Eine Policy verknüpft neue Zonen mit den hub-Netzwerken |
| Dokumentation | Teams dokumentieren ihre Zonenstruktur in der workload-Dokumentation, und der Zweck eines Eintrags ergibt sich aus seinem Namen oder ist dokumentiert |
Ablauf der Namensauflösung¶
Client or service
-> upstream DNS resolver
-> regional DNS proxy
-> private DNS zone (linked to the hub networks by policy)
-> record, for example api.prod.app1.azure.contoso.example -> private IP
Konsequenzen¶
Positiv:
- Teams ändern ihre DNS-Einträge unabhängig und in ihren pipelines,
- die Zuständigkeit ergibt sich aus dem Zonennamen,
- das Modell skaliert mit der Zahl der workloads,
- Umgebungen sind in getrennten Zonen isoliert,
- keine manuellen Netzwerkverknüpfungen.
Negativ:
- viele Zonen (mindestens vier pro workload, wenn jede Umgebung eine eigene Zone hat),
- die Fehlersuche über workloads hinweg ist schwieriger, wenn DNS verteilt ist.
In MCP¶
| Baustein | Status |
|---|---|
| Zentrale Private-DNS-Zonen für private endpoints und die Policy, die private endpoints dort registriert | Im Produkt: create_private_dns_zones und enable_private_dns_zone_policies (Feature Flags) |
| Eine Private-DNS-Zone pro Spoke, verknüpft mit dem Netzwerk des hub-DNS-Resolvers | Im Spoke-JSON: resourceconfiguration.privatedns (Spoke-JSON-Referenz) |
| Die Policy, die das Muster der Zonenbenennung erzwingt, und die Policy, die von Teams erstellte Zonen mit den hub-Netzwerken verknüpft | Soweit diese Dokumentation zeigt, nicht Teil der Produkt-Baseline. Füge sie als benutzerdefinierte Policy-Definitionen und -Zuweisungen hinzu (Policy-Zuweisungen). |
| Das Forwarding auf Seiten des zentralen DNS-Betreibers | Außerhalb der Plattform: erledigt der DNS-Betreiber |