AZURE PRIVATE LINK → STACKIT · ARCHITEKTUR
Azure Private Link und privates Netzwerk auf STACKIT
Azure Private Link gibt einem Managed Service eine private Adresse in Ihrem virtuellen Netzwerk. STACKIT-Managed-Services bieten das nicht: Sie erreichen sie über ihren eigenen Endpunkt, beschränkt durch eine Zugriffsliste, oder Sie beschränken einige von ihnen auf eine Network Area, oder Sie betreiben den Dienst in Ihrem Netzwerk. StackToIT stuft jeden Private Endpoint als REDESIGN ein; diese Seite zeigt, was das heißt und wie Sie wählen.
Zwei Private Endpoints und eine DNS-Zone, bewertet
Eine für diese Seite geschriebene Demo-Umgebung, am 4. November 2026 mit StackToIT bewertet: ein Hub-Netzwerk, ein Storage Account und ein SQL-Server ohne öffentlichen Zugriff, zwei Private Endpoints und eine privatelink-Zone. Links die privatelink-Zone, ihre Netzwerkverknüpfung und der Blob-Endpoint aus der Eingabe (main.tf, Zeilen 61 bis 90); rechts, wie assessment.json die Endpoints, die Zone, das Netzwerk und ein Subnetz festhält (id sowie Klasse, Konfidenz und Zieldienst jedes Ergebnisses, Werte wie geschrieben).
resource "azurerm_private_dns_zone" "blob" {
name = "privatelink.blob.core.windows.net"
resource_group_name = azurerm_resource_group.net.name
}
resource "azurerm_private_dns_zone_virtual_network_link" "blob" {
name = "blob-hub"
resource_group_name = azurerm_resource_group.net.name
private_dns_zone_name = azurerm_private_dns_zone.blob.name
virtual_network_id = azurerm_virtual_network.hub.id
}
resource "azurerm_private_endpoint" "blob" {
name = "pe-docs-blob"
location = azurerm_resource_group.net.location
resource_group_name = azurerm_resource_group.net.name
subnet_id = azurerm_subnet.endpoints.id
private_service_connection {
name = "psc-docs-blob"
private_connection_resource_id = azurerm_storage_account.docs.id
subresource_names = ["blob"]
is_manual_connection = false
}
private_dns_zone_group {
name = "blob"
private_dns_zone_ids = [azurerm_private_dns_zone.blob.id]
}
}[
{
"id": "azurerm_private_endpoint.blob",
"result": {
"class": "REDESIGN",
"confidence": "LOW",
"target": {
"service": "none — no Private Link equivalent"
}
}
},
{
"id": "azurerm_private_endpoint.sql",
"result": {
"class": "REDESIGN",
"confidence": "LOW",
"target": {
"service": "none — no Private Link equivalent"
}
}
},
{
"id": "azurerm_private_dns_zone.blob",
"result": {
"class": "RECONFIGURE",
"confidence": "LOW",
"target": {
"service": "not needed (belongs to Private Link)"
}
}
},
{
"id": "azurerm_virtual_network.hub",
"result": {
"class": "RECONFIGURE",
"confidence": "MEDIUM",
"target": {
"service": "STACKIT project networking / Network Area (SNA)"
}
}
},
{
"id": "azurerm_subnet.endpoints",
"result": {
"class": "RECONFIGURE",
"confidence": "MEDIUM",
"target": {
"service": "STACKIT network"
}
}
}
]Der Endpoint wird zur Entscheidung
Beide Endpoints sind REDESIGN mit Konfidenz LOW und ohne Ziel, weil STACKIT-Managed-Services keine Private-Link-Endpoints haben. Der Lauf schreibt dafür kein Terraform; die Bezüge auf Storage Account, SQL-Server und Subnetz stellt eine Person im Redesign neu her.
Die Zone geht mit ihren Endpoints
Die privatelink-Zone löst nur Private Endpoints von Azure-Diensten auf; deshalb führt der Lauf sie für STACKIT als nicht nötig auf.
Subnetze bleiben, das Netzwerk verschwindet
Jedes Subnetz wird ein STACKIT-Netzwerk mit demselben Präfix. Das virtuelle Netzwerk selbst hat kein Gegenstück; eine Network Area empfiehlt der Lauf nur, wenn Netzwerke privat miteinander routen müssen.
Was die Dienste stattdessen bekommen
Derselbe Lauf, dieselbe Eingabe. Storage Account und SQL-Server werden weiterhin migriert; offen ist ihre private Erreichbarkeit. Ressourcenblöcke unverändert, ein Ausschnitt je Datei; die Prüfkommentare über jedem Block sind hier ausgelassen.
resource "azurerm_storage_account" "docs" {
name = "stplatformdocsgwc"
resource_group_name = azurerm_resource_group.net.name
location = azurerm_resource_group.net.location
account_tier = "Standard"
account_replication_type = "LRS"
public_network_access_enabled = false
}
resource "azurerm_mssql_server" "core" {
name = "sql-platform-core"
resource_group_name = azurerm_resource_group.net.name
location = azurerm_resource_group.net.location
version = "12.0"
administrator_login = "coreadmin"
administrator_login_password = var.sql_admin_password
public_network_access_enabled = false
}resource "stackit_objectstorage_bucket" "docs" {
project_id = var.project_id
name = "stplatformdocsgwc"
}resource "stackit_sqlserverflex_instance" "core" {
project_id = var.project_id
name = "sql-platform-core"
flavor_id = var.core_flavor_id
storage = {
class = var.sqlserverflex_storage_class
size = var.core_storage_size
}
backup_schedule = "0 2 * * *"
network = {
acl = var.core_allowed_cidrs
}
version = "2022"
retention_days = 30
}variable "core_allowed_cidrs" {
type = list(string)
description = "CIDRs allowed to reach azurerm_mssql_server.core. The source used VNet integration, private endpoints or no firewall rule the ACL can take; list the STACKIT network prefixes of the clients."
}Die Zugriffsliste hat keinen Standardwert
Die Variable für die erlaubten CIDRs hält fest, dass die Quelle Private Endpoints nutzte, und bittet Sie, die STACKIT-Netzwerkpräfixe der Clients aufzulisten.
Der Schalter für öffentlichen Zugriff hat kein Gegenstück
Der Entwurf vermerkt für den SQL-Server, dass der Schalter für den öffentlichen Netzwerkzugriff nicht übernommen wird und Clients die Instanz in jedem Fall über deren ACL erreichen. Er erklärt auch die Version: 12.0 ist bei Azure eine API-Version, deshalb übernimmt der Entwurf SQL Server 2022 aus dem Regionskatalog.
Buckets brauchen eine Entscheidung zur Einschränkung
Der Lauf warnt, dass Bucket-Richtlinien Quell-IP-Adressen einschränken können, aber keine netzwerkbezogene Bedingung dokumentiert ist. Die STACKIT-Referenz der Bedingungsschlüssel für Bucket-Richtlinien bestätigt das (Stand November 2026): aws:SourceIp, aws:username, s3:delimiter, s3:max-keys und s3:prefix, kein Schlüssel für Netzwerk oder Endpoint. Entscheiden Sie, wie die Buckets eingeschränkt werden; sonst sind sie für jeden mit Zugangsdaten aus dem Internet erreichbar.
Vier Wege, einen Private Endpoint zu ersetzen
| Option | So funktioniert es auf STACKIT | Abwägung |
|---|---|---|
| Zugriffsliste am Dienst-Endpunkt | Der Dienst hat einen eigenen Hostnamen und eine Adresse; die ACL lässt die Bereiche zu, die Sie auflisten, zusätzlich zu vordefinierten STACKIT-Bereichen | Einfach und sofort verfügbar; der Dienst behält eine erreichbare Adresse, und Clients brauchen stabile Quellbereiche |
| Network-Area-Scope | PostgreSQL Flex und SQLServer Flex nehmen den Access-Scope SNA, und ein KMS-Key kennt dasselbe Attribut | Private Adresse, aber ein Opt-in für freigeschaltete Konten, das sich noch ändern kann, und nicht bei jedem Dienst vorhanden |
| Dienst im eigenen Netzwerk | Datenbank oder Broker auf Servern oder in SKE betreiben | Volle Kontrolle über die Adresse, aber Sie betreiben Patching, Backups und Failover |
| Network Area zwischen Ihren Netzwerken | Projekte einer Organisation werden auf Netzwerkebene verbunden, das Routing aktualisiert sich selbst | Löst Verkehr von Netzwerk zu Netzwerk, nicht die Erreichbarkeit eines Managed Service |
Optionen so, wie der Lauf und die genannten STACKIT-Seiten sie beschreiben. Keine Option übernimmt die Endpoint-Freigabe je Dienst, die Azure kennt; für diesen Ablauf gibt es kein Gegenstück.
Was jede Einheit im Lauf wurde
| Azure-Ressource | STACKIT-Ziel | Klasse |
|---|---|---|
| SQL Logical Server | SQLServer-Flex-Instanz | Replatforming |
| Storage Account | Object-Storage-Bucket | Replatforming |
| Virtuelles Netzwerk | Keine Ressource: jedes Subnetz wird ein Netzwerk | Rekonfigurieren |
| Subnetze (apps, endpoints) | STACKIT-Netzwerk mit demselben Präfix | Rekonfigurieren |
| Private DNS Zone | Nicht nötig | Rekonfigurieren |
| Private Endpoint, Blob | Kein Ziel: es gibt kein Private-Link-Gegenstück | Redesign |
| Private Endpoint, SQL | Kein Ziel: es gibt kein Private-Link-Gegenstück | Redesign |
Acht Einheiten: vier entworfen, zwei ohne nötige Ressource und zwei für den Architekten, so wie es die Konsolenzusammenfassung des Laufs angibt.
So entscheiden Sie
Ist eine private Adresse Pflicht?
Verlangt eine Vorgabe, dass der Dienst keine erreichbare Adresse hat, reichen die ACL-Optionen nicht. Prüfen Sie den Network-Area-Scope für diesen Dienst oder betreiben Sie ihn im eigenen Netzwerk.
Können Sie die Clients benennen?
Eine ACL braucht Quellbereiche. Wo Clients hinter wechselnden Adressen sitzen, listen Sie die Netzwerkpräfixe der STACKIT-Netzwerke auf, in denen sie laufen.
Wer braucht die Namensauflösung?
Azure löst einen Dienstnamen über eine privatelink-Zone in eine private Adresse auf. STACKIT DNS ist öffentliches autoritatives DNS, und der Lauf sagt, dass private Namen einen eigenen DNS-Server brauchen.
Geht der Verkehr von Netzwerk zu Netzwerk?
Das ist eine Frage der Network Area, nicht des Endpoints. Verkehr zwischen Regionen läuft laut STACKIT-Seite derzeit nur über das öffentliche Internet.
Auf welchen Schalter für öffentlichen Zugriff haben Sie sich verlassen?
Azure vermerkt, dass ein Private Endpoint den öffentlichen Zugriff nicht von selbst einschränkt. Ihre Quelle hat ihn abgeschaltet; auf STACKIT übernimmt die ACL diese Aufgabe.
Fragen von Netzwerkteams
Gibt es einen privaten Endpoint bei STACKIT?
Nein. Der Lauf hält fest, dass STACKIT-Managed-Services keine Private-Link-Endpoints haben, und stuft die Azure-Endpoints als REDESIGN ohne Ziel ein.
Was ersetzt die privatelink-DNS-Zone?
Es wird nichts erzeugt. STACKIT DNS ist öffentliches autoritatives DNS; Namen, die privat aufgelöst werden müssen, brauchen einen eigenen DNS-Server.
Gibt eine Network Area einer Datenbank eine private Adresse?
Für PostgreSQL Flex und SQLServer Flex gibt es einen Access-Scope SNA, als Opt-in für freigeschaltete Konten, das sich noch ändern kann. Fragen Sie ihn an, bevor Sie sich darauf verlassen.
Was ändert sich für die Clients?
Sie verbinden sich mit einem neuen Hostnamen statt einem privatelink-Namen, aus einem Quellbereich auf der ACL. Der Lauf nennt die entworfenen Netzwerke als Startpunkt.
Quellen
Ihr nächster Schritt: STACKIT.
Erzählen Sie uns von Ihrer Umgebung. Wir zeigen Ihnen, was StackToIT dafür liefert: Zielarchitektur, Terraform-Artefakte und einen strukturierten Migrationsplan.