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).

Beispieleingabemain.tf
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]
  }
}
StackToIT-Bewertung (Auszug)assessment.json
[
  {
    "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.

Beispieleingabemain.tf
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
}
STACKIT: storage.tfterraform/storage.tf
resource "stackit_objectstorage_bucket" "docs" {
  project_id = var.project_id
  name       = "stplatformdocsgwc"
}
STACKIT: data.tfterraform/data.tf
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
}
ACL-Variable des Entwurfsterraform/variables.tf
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

OptionSo funktioniert es auf STACKITAbwägung
Zugriffsliste am Dienst-EndpunktDer Dienst hat einen eigenen Hostnamen und eine Adresse; die ACL lässt die Bereiche zu, die Sie auflisten, zusätzlich zu vordefinierten STACKIT-BereichenEinfach und sofort verfügbar; der Dienst behält eine erreichbare Adresse, und Clients brauchen stabile Quellbereiche
Network-Area-ScopePostgreSQL Flex und SQLServer Flex nehmen den Access-Scope SNA, und ein KMS-Key kennt dasselbe AttributPrivate Adresse, aber ein Opt-in für freigeschaltete Konten, das sich noch ändern kann, und nicht bei jedem Dienst vorhanden
Dienst im eigenen NetzwerkDatenbank oder Broker auf Servern oder in SKE betreibenVolle Kontrolle über die Adresse, aber Sie betreiben Patching, Backups und Failover
Network Area zwischen Ihren NetzwerkenProjekte einer Organisation werden auf Netzwerkebene verbunden, das Routing aktualisiert sich selbstLö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-RessourceSTACKIT-ZielKlasse
SQL Logical ServerSQLServer-Flex-InstanzReplatforming
Storage AccountObject-Storage-BucketReplatforming
Virtuelles NetzwerkKeine Ressource: jedes Subnetz wird ein NetzwerkRekonfigurieren
Subnetze (apps, endpoints)STACKIT-Netzwerk mit demselben PräfixRekonfigurieren
Private DNS ZoneNicht nötigRekonfigurieren
Private Endpoint, BlobKein Ziel: es gibt kein Private-Link-GegenstückRedesign
Private Endpoint, SQLKein Ziel: es gibt kein Private-Link-GegenstückRedesign

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.