Konfigurieren des privaten Netzwerkzugriffs für Back-End-Speicher in Ihrem virtuellen Netzwerk

Hinweis

Die Pläne Basic, Standard und Enterprise gelten ab Mitte März 2025 als veraltet und werden über einen Zeitraum von drei Jahren eingestellt. Es wird empfohlen, auf Azure Container Apps umzustellen. Weitere Informationen finden Sie in der Ankündigung zur Einstellung von Azure Spring Apps.

Der Plan Standardverbrauch und dediziert gilt ab dem 30. September 2024 als veraltet und wird nach sechs Monaten vollständig eingestellt. Es wird empfohlen, auf Azure Container Apps umzustellen. Weitere Informationen finden Sie unter Migrieren des Plans „Standardverbrauch und dediziert“ von Azure Spring Apps zu Azure Container Apps.

Dieser Artikel gilt für: ✔️ Standard ✔️ Enterprise

In diesem Artikel wird erläutert, wie Sie den privaten Netzwerkzugriff auf Back-End-Speicher für Ihre Anwendung im virtuellen Netzwerk konfigurieren.

Wenn Sie eine Anwendung in einer Azure Spring Apps-Dienstinstanz mit Einschleusung virtueller Netzwerke bereitstellen, nutzt die Dienstinstanz Back-End-Speicher für zugehörige Ressourcen (einschließlich JAR-Dateien und Protokolle). Die Standardkonfiguration leitet Datenverkehr an diesen Back-End-Speicher über das öffentliche Netzwerk weiter, Sie können jedoch das Feature für privaten Speicherzugriff aktivieren. Mit diesem Feature können Sie den Datenverkehr über Ihr privates Netzwerk leiten und dadurch die Sicherheit erhöhen sowie die Leistung potenziell verbessern.

Hinweis

Dieses Feature gilt nur für eine in einem virtuellen Azure Spring Apps-Netzwerk eingefügte Dienstinstanz.

Stellen Sie sicher, dass mindestens zwei IP-Adressen im Subnetz der Dienstruntime verfügbar sind, bevor Sie dieses Features für Ihre Azure Spring Apps-Dienstinstanz aktivieren.

Durch das Aktivieren oder Deaktivieren dieses Features wird die DNS-Auflösung in den Back-End-Speicher geändert. Es kann vorkommen, dass Bereitstellungen während des Updates vorübergehend keine Verbindung mit dem Back-End-Speicher herstellen oder ihren Endpunkt nicht auflösen können.

Nachdem Sie dieses Feature aktiviert haben, ist der Back-End-Speicher nur privat zugänglich, sodass Sie Ihre Anwendung im virtuellen Netzwerk bereitstellen müssen.

Voraussetzungen

Aktivieren des privaten Speicherzugriffs beim Erstellen einer neuen Azure Spring Apps-Instanz

Verwenden Sie beim Erstellen einer Azure Spring Apps-Instanz im virtuellen Netzwerk den folgenden Befehl, um das Argument --enable-private-storage-access true zum Aktivieren des privaten Speicherzugriffs zu übergeben. Weitere Informationen finden Sie unter Bereitstellen von Azure Spring Apps in einem virtuellen Netzwerk.

az spring create \
    --resource-group "<resource-group>" \
    --name "<Azure-Spring-Apps-instance-name>" \
    --vnet "<virtual-network-name>" \
    --service-runtime-subnet "<service-runtime-subnet>" \
    --app-subnet "<apps-subnet>" \
    --location "<location>" \
    --enable-private-storage-access true

In Ihrem Abonnement wird eine weitere Ressourcengruppe erstellt, um die Private Link-Ressourcen für die Azure Spring Apps-Instanz zu hosten. Der Name dieser Ressourcengruppe lautet ap-res_{service instance name}_{service instance region}.

In der Ressourcengruppe werden zwei Gruppen von Private Link-Ressourcen bereitgestellt, die jeweils aus den folgenden Azure-Ressourcen bestehen:

  • Einem privaten Endpunkt, der den privaten Endpunkt des Speicherkontos für das Back-End darstellt
  • Einer Netzwerkschnittstelle (Network Interface, NIC), die über eine private IP-Adresse im Subnetz der Dienstruntime verfügt
  • Eine für Ihr virtuelles Netzwerk bereitgestellte private DNS-Zone mit einem DNS-A-Eintrag, der auch für das Speicherkonto in dieser DNS-Zone erstellt wird.

Wichtig

Die Ressourcengruppen werden vollständig vom Azure Spring Apps-Dienst verwaltet. Löschen oder ändern Sie die Ressourcen in diesen Ressourcengruppen nicht manuell.

Aktivieren oder Deaktivieren des privaten Speicherzugriffs für eine vorhandene Azure Spring Apps-Instanz

Verwenden Sie den folgenden Befehl, um eine vorhandene Azure Spring Apps-Instanz zum Aktivieren oder Deaktivieren des privaten Speicherzugriffs zu aktualisieren:

az spring update \
    --resource-group "<resource-group>" \
    --name "<Azure-Spring-Apps-instance-name>" \
    --enable-private-storage-access <true-or-false>

Verwenden der zentralen DNS-Auflösung

Eine zentrale DNS-Verwaltungsarchitektur wird in der Hub- und Spoke-Netzwerkarchitektur in Private Link und DNS-Integration im großen Stil dokumentiert. In dieser Architektur werden alle privaten DNS-Zonen zentral in einem anderen zentralen virtuellen Netzwerk bereitgestellt und verwaltet als die Azure Spring Apps-Dienstinstanz. Wenn Sie diese Architektur verwenden, können Sie die zentrale DNS-Auflösung für den privaten Speicherzugriff aktivieren, indem Sie die DNS-Einstellungen entsprechend konfigurieren. Mit diesem Setup wird Folgendes sichergestellt:

  • Wenn ein privater Endpunkt erstellt wird, werden die entsprechenden DNS-Einträge automatisch der zentralen privaten DNS-Zone hinzugefügt.
  • DNS-Einträge werden gemäß dem Lebenszyklus des privaten Endpunkts verwaltet, sodass sie automatisch entfernt werden, wenn der private Endpunkt gelöscht wird.

In den folgenden Abschnitten wird erläutert, wie Sie die zentrale DNS-Auflösung für Azure Storage-Blobs mithilfe von Azure Policy aktivieren, vorausgesetzt, die private DNS-Zone privatelink.blob.core.windows.net ist bereits im zentralen virtuellen Netzwerk eingerichtet. Die gleichen Prinzipien gelten für Azure Storage-Dateien und andere Azure-Dienste, die private Verknüpfungen unterstützen.

Richtliniendefinition

Zusätzlich zu den privaten DNS-Zonen müssen Sie eine benutzerdefinierte Azure Policy-Definition erstellen. Weitere Informationen finden Sie unter Tutorial: Erstellen einer benutzerdefinierten Richtliniendefinition. Diese Definition erstellt automatisch den erforderlichen DNS-Eintrag in der zentralen privaten DNS-Zone, wenn Sie einen privaten Endpunkt erstellen.

Die folgende Richtlinie wird ausgelöst, wenn Sie eine private Endpunktressource mit einer dienstspezifischen groupId erstellen. Die groupId ist die ID der Gruppe, die von der Remoteressource (oder dem Dienst) bezogen wird, mit der (bzw. dem) dieser private Endpunkt verbunden werden soll. In diesem Beispiel lautet die groupId für Azure Storage-Blobs blob. Weitere Informationen zur groupId für andere Azure-Dienste finden Sie in den Tabellen in Private DNS-Zonenwerte von Azure Private Endpoint unter der Spalte für untergeordnete Ressourcen.

Die Richtlinie löst dann eine Bereitstellung einer privateDNSZoneGroup im privaten Endpunkt aus, die den privaten Endpunkt mit der privaten DNS-Zone verknüpft, die als Parameter festgelegt ist. Im folgenden Beispiel ist die Ressourcen-ID der privaten DNS-Zone /subscriptions/<subscription-id>/resourceGroups/<resourceGroupName>/providers/Microsoft.Network/privateDnsZones/privatelink.blob.core.windows.net:

{
  "mode": "Indexed",
  "policyRule": {
    "if": {
      "allOf": [
        {
          "field": "type",
          "equals": "Microsoft.Network/privateEndpoints"
        },
        {
          "value": "[contains(resourceGroup().name, 'ap-res_')]",
          "equals": "true"
        },
        {
          "count": {
            "field": "Microsoft.Network/privateEndpoints/privateLinkServiceConnections[*].groupIds[*]",
            "where": {
              "field": "Microsoft.Network/privateEndpoints/privateLinkServiceConnections[*].groupIds[*]",
              "equals": "blob"
            }
          },
          "greaterOrEquals": 1
        }
      ]
    },
    "then": {
      "effect": "deployIfNotExists",
      "details": {
        "type": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups",
        "evaluationDelay": "AfterProvisioningSuccess",
        "roleDefinitionIds": [
          "/providers/Microsoft.Authorization/roleDefinitions/4d97b98b-1d4f-4787-a291-c67834d212e7"
        ],
        "deployment": {
          "properties": {
            "mode": "incremental",
            "template": {
              "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
              "contentVersion": "1.0.0.0",
              "parameters": {
                "privateDnsZoneId": {
                  "type": "string"
                },
                "privateEndpointName": {
                  "type": "string"
                },
                "location": {
                  "type": "string"
                }
              },
              "resources": [
                {
                  "name": "[concat(parameters('privateEndpointName'), '/deployedByPolicy')]",
                  "type": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups",
                  "apiVersion": "2020-03-01",
                  "location": "[parameters('location')]",
                  "properties": {
                    "privateDnsZoneConfigs": [
                      {
                        "name": "storageBlob-privateDnsZone",
                        "properties": {
                          "privateDnsZoneId": "[parameters('privateDnsZoneId')]"
                        }
                      }
                    ]
                  }
                }
              ]
            },
            "parameters": {
              "privateDnsZoneId": {
                "value": "[parameters('privateDnsZoneId')]"
              },
              "privateEndpointName": {
                "value": "[field('name')]"
              },
              "location": {
                "value": "[field('location')]"
              }
            }
          }
        }
      }
    }
  },
  "parameters": {
    "privateDnsZoneId": {
      "type": "String",
      "metadata": {
        "displayName": "privateDnsZoneId",
        "description": null,
        "strongType": "Microsoft.Network/privateDnsZones"
      }
    }
  }
}

Richtlinienzuweisung

Nachdem Sie die Richtliniendefinition bereitgestellt haben, weisen Sie die Richtlinie dem Abonnement zu, in dem die Azure Spring Apps-Dienstinstanzen gehostet werden, und geben die zentrale private DNS-Zone als Parameter an.

Die zentrale private DNS-Zone und die Azure Spring Apps-Dienstinstanz werden möglicherweise in verschiedenen Abonnements gehostet. Denken Sie in diesem Fall daran, die Rolle Mitwirkender für private DNS-Zone in der Abonnement- und Ressourcengruppe, in der die privaten DNS-Zonen gehostet werden, der durch die Richtlinienzuweisung DeployIfNotExists erstellten verwalteten Identität zuzuweisen, die für das Erstellen und Verwalten des DNS-Eintrags für den privaten Endpunkt in der privaten DNS-Zone verantwortlich sein wird. Weitere Informationen finden Sie im Abschnitt Konfigurieren der verwalteten Identität in Korrigieren nicht konformer Ressourcen mit Azure Policy.

Nachdem Sie die Konfigurationen abgeschlossen haben, werden die DNS-Einträge für private Endpunkte automatisch in der entsprechenden DNS-Zone registriert und, nachdem ein privater Endpunkt gelöscht wurde, daraus entfernt.

Zusätzliche Kosten

Für die Azure Spring Apps-Instanz fallen keine Gebühren für dieses Feature an. Ihnen werden jedoch Gebühren für die in Ihrem Abonnement gehosteten Private Link-Ressourcen in Rechnung gestellt, die dieses Feature unterstützen. Weitere Informationen finden Sie unter Azure Private Link – Preise und Azure DNS – Preise.

Verwenden benutzerdefinierter DNS-Server

Wenn Sie einen benutzerdefinierten DNS-Server (Domain Name System) verwenden und die Azure DNS-IP-Adresse 168.63.129.16 nicht als DNS-Upstreamserver konfiguriert ist, müssen Sie alle DNS-Einträge der privaten DNS-Zonen in der Ressourcengruppe ap-res_{service instance name}_{service instance region} manuell binden, um die privaten IP-Adressen aufzulösen.

Nächste Schritte