Private Link und DNS-Integration im großen StilPrivate Link and DNS integration at scale

In diesem Artikel wird beschrieben, wie Sie Azure Private Link für PaaS-Dienste mit privaten Azure DNS-Zonen in Hub-and-Spoke-Netzwerkarchitekturen integrieren.This article describes how to integrate Azure Private Link for PaaS services with Azure Private DNS zones in hub and spoke network architectures.

EinführungIntroduction

Viele Kunden erstellen ihre Netzwerkinfrastruktur in Azure mithilfe der Hub-and-Spoke-Netzwerkarchitektur. Dabei gilt Folgendes:Many customers build their network infrastructure in Azure using the hub and spoke network architecture, where:

  • Freigegebene Netzwerkdienste (z. B. virtuelle Netzwerkgeräte, ExpressRoute/VPN Gateways oder DNS-Server) werden im virtuellen Hub-Netzwerk (VNet) bereitgestellt.Networking shared services (such as network virtual appliances, ExpressRoute/VPN gateways, or DNS servers) are deployed in the hub virtual network (VNet)
  • Virtuelle Spoke-Netzwerke nutzen diese freigegebenen Dienste über das VNet-Peering.Spoke VNets consume those shared services via VNet peering.

In Hub-and-Spoke-Netzwerkarchitekturen wird den Besitzern von Anwendungen in der Regel ein Azure-Abonnement zur Verfügung gestellt, das ein VNet (Spoke) umfasst, das mit dem virtuellen Hub-Netzwerk verbunden ist.In hub and spoke network architectures, application owners are typically provided with an Azure subscription, which includes a VNet (a spoke) connected to the hub VNet. In dieser Architektur können sie ihre virtuellen Computer bereitstellen und verfügen über eine private Konnektivität zu anderen VNets oder zu lokalen Netzwerken über ExpressRoute oder VPN.In this architecture, they can deploy their virtual machines and have private connectivity to other VNets or to on-premises networks via ExpressRoute or VPN.

Die ausgehende Internetkonnektivität wird über ein zentrales virtuelles Netzwerkgerät (NVA) wie Azure Firewall bereitgestellt.Internet-outbound connectivity is provided via a central network virtual appliance (NVA) such as Azure Firewall.

Viele Anwendungsteams erstellen ihre Lösungen mithilfe einer Kombination aus Azure IaaS- und PaaS-Ressourcen.Many application teams build their solutions using a combination of Azure IaaS and PaaS resources. Einige Azure PaaS-Dienste (z. B. SQL Managed Instance) können in VNets von Kunden bereitgestellt werden.Some Azure PaaS services (such as SQL Managed Instance) can be deployed in customer VNets. Dies hat zur Folge, dass der Datenverkehr innerhalb des Azure-Netzwerks privat bleibt und von lokalen Standorten aus vollständig routingfähig ist.As a result, traffic will stay private within the Azure network and would be fully routable from on-premises.

Einige Azure PaaS-Dienste (z. B. Azure Storage oder Azure Cosmos DB) können jedoch nicht in den VNets eines Kunden bereitgestellt werden und sind über ihren öffentlichen Endpunkt zugänglich.However, some Azure PaaS services (such as Azure Storage or Azure Cosmos DB) cannot be deployed in a customer's VNets and are accessible over their public endpoint. In einigen Fällen kann dies zu Konflikten mit den Sicherheitsrichtlinien eines Kunden führen, da der Datenverkehr des Unternehmens die Bereitstellung oder den Zugriff auf Unternehmensressourcen (z. B. eine SQL-Datenbank) über öffentliche Endpunkte nicht zulässt.In some instances, this can cause a contention with a customer's security policies, as corporate traffic might not allow the deployment or accessing of corporate resources (such as a SQL database) over public endpoints.

Azure Private Link ermöglicht den Zugriff auf eine Liste von Azure-Diensten über private Endpunkte, erfordert jedoch, dass diese privaten Endpunkteinträge in einer entsprechenden privaten DNS-Zone registriert sind.Azure Private Link allows access to a list of Azure services over private endpoints, but it requires that those private endpoint records are registered in a corresponding private DNS zone.

In diesem Artikel wird beschrieben, wie Anwendungsteams Azure PaaS-Dienste in ihren Abonnements bereitstellen können, die nur über private Endpunkte zugänglich sind.This article describes how application teams can deploy Azure PaaS services in their subscriptions which are only accessible over private endpoints.

In diesem Artikel wird auch beschrieben, wie Anwendungsteams sicherstellen können, dass Dienste automatisch mit privaten DNS-Zonen über Azure Private DNS integriert werden.This article will also describe how application teams can ensure that services are automatically integrated with private DNS zones via Azure Private DNS. Dadurch wird die Notwendigkeit der manuellen Erstellung oder Löschung von Einträgen im DNS beseitigt.Removing the need for manual creation or deletion of records in DNS.

Private DNS-Zonen werden in der Regel zentral in demselben Azure-Abonnement gehostet, in dem auch das Hub-VNet bereitgestellt wird.Private DNS zones are typically hosted centrally in the same Azure subscription where the hub VNet is deployed. Diese Praxis des zentralen Hostings wird durch die standortübergreifende DNS-Namensauflösung und andere Anforderungen an die zentrale DNS-Auflösung, z. B. Active Directory, gesteuert.This central hosting practice is driven by cross-premises DNS name resolution and other needs for central DNS resolution such as Active Directory. In den meisten Fällen verfügen nur Netzwerk-/Identitätsadministratoren über die Berechtigung, DNS-Einträge in diesen Zonen zu verwalten.In most cases, only networking/identity admins have permissions to manage DNS records in these zones.

Anwendungsteams verfügen über die Berechtigung, Azure-Ressourcen in ihrem eigenen Abonnement zu erstellen.Application teams do have permissions to create Azure resource in their own subscription. Sie besitzen keine Berechtigungen im Abonnement für die zentrale Netzwerkkonnektivität, was die Verwaltung von DNS-Einträgen in den privaten DNS-Zonen umfasst.They do not have any permissions in the central networking connectivity subscription, which includes managing DNS records in the private DNS zones. Diese Zugriffsbeschränkung bedeutet, dass sie nicht die Möglichkeit haben, die DNS-Einträge zu erstellen, die bei der Bereitstellung von Azure PaaS-Diensten mit privaten Endpunkten erforderlich sind.This access limitation means they do not have the possibility to create the DNS records required when deploying Azure PaaS services with private endpoints.

Das folgende Diagramm zeigt eine typische allgemeine Architektur für Unternehmensumgebungen mit zentraler DNS-Auflösung, bei der die Namensauflösung für Private Link-Ressourcen über Azure Private DNS erfolgt:The following diagram shows a typical high-level architecture for enterprise environments with central DNS resolution and where name resolution for Private Link resources is done via Azure Private DNS:

image-1

Im vorhergehenden Diagramm muss Folgendes hervorgehoben werden:From the previous diagram, it is important to highlight that:

  • Lokale DNS-Server verfügen über bedingte Weiterleitungen, die für jeden privaten Endpunkt konfiguriert sind. Öffentliche DNS-Zonenweiterleitungen verweisen auf die DNS-Weiterleitungen (10.100.2.4 und 10.100.2.5), die im Hub-VNet gehostet werden.On-premises DNS servers have conditional forwarders configured for each private endpoint public DNS zone forwarder pointing to the DNS forwarders (10.100.2.4 and 10.100.2.5) hosted in the hub VNet.
  • Für alle Azure VNets sind die DNS-Weiterleitungen (10.100.2.4 und 10.100.2.5) als primäre und sekundäre DNS-Server konfiguriert.All Azure VNets have the DNS forwarders (10.100.2.4 and 10.100.2.5) configured as the primary and secondary DNS servers.

Es gibt zwei Bedingungen, die erfüllt sein müssen, damit Anwendungsteams über die Freiheit verfügen, alle erforderlichen Azure PaaS-Ressourcen in ihrem Abonnement zu erstellen:There are two conditions that must be true to allow application teams the freedom to create any required Azure PaaS resources in their subscription:

  • Das zentrale Netzwerk- und/oder das zentrale Plattformteam muss sicherstellen, dass Anwendungsteams nur über private Endpunkte Azure PaaS-Dienste bereitstellen und darauf zugreifen können.Central networking and/or central platform team must ensure that application teams can only deploy and access Azure PaaS services via private endpoints.
  • Zentrale Netzwerk- und/oder zentrale Plattformteams müssen sicherstellen, dass immer dann, wenn private Endpunkte erstellt werden, die entsprechenden Datensätze automatisch in der zentralisierten privaten DNS-Zone erstellt werden, die dem erstellten Dienst entspricht.Central networking and/or central platform teams must ensure that whenever private endpoints are created, the corresponding records are automatically created in the centralized private DNS zone that matches the service created.
    • Der DNS-Eintrag muss dem Lebenszyklus des privaten Endpunkts folgen und den DNS-Eintrag automatisch entfernen, wenn der private Endpunkt gelöscht wird.DNS record needs to follow the lifecycle of the private endpoint and automatically remove the DNS record when the private endpoint is deleted.

In den folgenden Abschnitten wird beschrieben, wie Anwendungsteams diese Bedingungen mithilfe von Azure Policy aktivieren können.The following sections describe how application teams can enable these conditions by using Azure Policy. Wir werden Azure Storage als den Azure-Dienst verwenden, den Anwendungsteams in unserem folgenden Beispiel bereitstellen müssen, aber das gleiche Prinzip kann auf die meisten Azure-Dienste angewendet werden, die Private Link unterstützen.We will use Azure Storage as the Azure service that application teams need to deploy in our example below, but the same principle can be applied to most Azure services that support Private Link.

Für das Plattformteam erforderliche KonfigurationConfiguration required by platform team

Create private DNS zones (Erstellen von privaten DNS-Zonen)Create private DNS zones

Erstellen Sie private DNS-Zonen im zentralen Konnektivitätsabonnement für die unterstützten Private Link-Dienste gemäß der Dokumentation.Create private DNS zones in the central connectivity subscription for the supported Private Link services as per documentation.

In unserem Fall, da wir als Beispiel ein Storage-Konto mit Blob verwenden, bedeutet dies, dass wir eine private DNS-Zone (privatelink.blob.core.windows.net) im Konnektivitätsabonnement erstellen.In our case, as we will use Storage account with blob as our example, it translates to us creating a privatelink.blob.core.windows.net private DNS zone in the connectivity subscription.

image-2

RichtliniendefinitionenPolicy definitions

Zusätzlich zu den privaten DNS-Zonen müssen wir auch einen Satz benutzerdefinierter Azure Policy-Definitionen erstellen, um die Verwendung privater Endpunkte zu erzwingen und die Erstellung von DNS-Einträgen in der von uns erstellten DNS-Zone zu automatisieren:In addition to the private DNS zones, we also need to create a set of custom Azure Policy definitions to enforce the use of private endpoints and automate the DNS record creation in the DNS zone we created:

  1. Verweigern des öffentlichen Endpunkts für die PaaS-DienstrichtlinieDeny public endpoint for PaaS services policy

    Diese Richtlinie verhindert, dass Benutzer Azure PaaS-Dienste mit öffentlichen Endpunkten erstellen und gibt eine Fehlermeldung aus, wenn bei der Ressourcenerstellung kein privater Endpunkt ausgewählt wird.This policy will prevent users from creating Azure PaaS services with public endpoints and give them an error message if private endpoint is not selected at resource creation.

    image-3

    image-4

    image-5

    Die genaue Richtlinienregel kann sich zwischen den einzelnen PaaS-Diensten unterscheiden.The exact policy rule may differ between PaaS services. Für Azure Storage-Konten betrachten wir die Eigenschaft networkAcls.defaultAction, die definiert, ob Anforderungen aus dem öffentlichen Netzwerk zulässig sind.For Azure Storage accounts, we look at the networkAcls.defaultAction property that defines whether requests from public network are allowed or not. In unserem Fall legen wir eine Bedingung fest, um die Erstellung des Ressourcentyps Microsoft.Storage/storageAccounts zu verweigern, wenn die Eigenschaft networkAcls.defaultAction nicht Deny entspricht.In our case, we will set a condition to deny the creation of the Microsoft.Storage/storageAccounts resource type if the property networkAcls.defaultAction is not Deny. Die Definition dieser Richtlinie ist unten aufgeführt:This policy definition is listed below:

    {
      "mode": "All",
      "policyRule": {
        "if": {
          "allOf": [
            {
              "field": "type",
              "equals": "Microsoft.Storage/storageAccounts"
            },
            {
              "field": "Microsoft.Storage/storageAccounts/networkAcls.defaultAction",
              "notequals": "Deny"
            }
          ]
        },
        "then": {
          "effect": "Deny"
        }
      }
    }
    
  2. Verweigern der Erstellung einer privaten DNS-Zone mit der privatelink-PräfixrichtlinieDeny creation of a private DNS zone with the privatelink prefix policy

    Da wir eine zentralisierte DNS-Architektur mit einer bedingten Weiterleitung und privaten DNS-Zonen verwenden, die in den vom Plattformteam verwalteten Abonnements gehostet werden, müssen wir verhindern, dass die Besitzer der Anwendungsteams ihre eigenen privaten DNS-Zonen mit Private Link erstellen und Dienste in ihre Abonnements einbinden.Since we use a centralized DNS architecture with a conditional forwarder and private DNS zones hosted in the subscriptions managed by the platform team, we need to prevent the application teams owners from creating their own Private Link private DNS zones and linking services into their subscriptions.

    Um dies zu erreichen, müssen wir sicherstellen, dass beim Erstellen eines privaten Endpunkts durch die Anwendungsteams die Option für Integrate with private DNS zone auf No festgelegt werden muss, wenn das Azure-Portal verwendet wird.To accomplish this, we need to ensure that when application teams create a private endpoint, the option to Integrate with private DNS zone must be set to No when using the Azure portal.

    image-6

    Wenn die Option Yes ausgewählt ist, verhindert Azure Policy die Erstellung des privaten Endpunkts.If Yes is selected, Azure Policy will prevent the creation of the private endpoint. In unserer Richtliniendefinition verweigern wir die Erstellung des Ressourcentyps Microsoft.Network/privateDnsZones, wenn die Zone über das Präfix privatelink verfügt.In our policy definition, we will deny the creation of the Microsoft.Network/privateDnsZones resource type if the zone has the privatelink prefix. Diese Definition der Richtlinie wird im Folgenden beschrieben:This policy definition is described below:

    {
      "description": "This policy restricts creation of private DNS zones with the `privatelink` prefix",
      "displayName": "Deny-PrivateDNSZone-PrivateLink",
      "mode": "All",
      "parameters": null,
      "policyRule": {
        "if": {
          "allOf": [
            {
              "field": "type",
              "equals": "Microsoft.Network/privateDnsZones"
            },
            {
              "field": "name",
              "like": "privatelink*"
            }
          ]
        },
        "then": {
          "effect": "Deny"
        }
      }
    }
    
  3. Die Richtlinie DeployIfNotExists, um den erforderlichen DNS-Eintrag in der zentralen privaten DNS-Zone automatisch zu erstellen.DeployIfNotExists policy to automatically create the required DNS record in the central private DNS zone

    Diese Richtlinie wird ausgelöst, wenn eine private Endpunktressource mit einer dienstspezifischen groupId erstellt wird.This policy will be triggered if a private endpoint resource is created with a service-specific groupId. Die groupId ist die ID der Gruppe, die von der Remoteressource (Dienst) bezogen wird, mit der dieser private Endpunkt verbunden werden soll.The groupId is the ID of the group obtained from the remote resource (service) that this private endpoint should connect to. Anschließend lösen wir eine Bereitstellung einer privateDNSZoneGroup innerhalb des privaten Endpunkts aus, die verwendet wird, um den privaten Endpunkt unserer privaten DNS-Zone zuzuordnen.We then trigger a deployment of a privateDNSZoneGroup within the private endpoint, which is used to associate the private endpoint with our private DNS zone. In unserem Beispiel ist die groupId für Azure Storage-Blobs entsprechend blob (die groupId für andere Azure-Dienste befindet sich in diesem Artikel, unter der Spalte Unterressource).For our example, the groupId for Azure Storage blobs is blob (groupId for other Azure services can be found on this article, under the Subresource column). Wenn die Richtlinie diese groupId im erstellten privaten Endpunkt findet, wird eine privateDNSZoneGroup innerhalb des privaten Endpunkts bereitgestellt und mit der Ressourcen-ID der privaten DNS-Zone verknüpft, die als Parameter angegeben ist.When policy finds that groupId in the private endpoint created, it will deploy a privateDNSZoneGroup within the private endpoint, and it will be linked to the private DNS zone resource ID that is specified as parameter. Für unser Beispiel würde die Ressourcen-ID der privaten DNS-Zone wie folgt lauten:For our example, the private DNS zone resource ID would be:

    /subscriptions/<subscription-id>/resourceGroups/<resourceGroupName>/providers/Microsoft.Network/privateDnsZones/privatelink.blob.core.windows.net

    Die Definition dieser Richtlinie ist unten aufgeführt:This policy definition is listed below:

    {
      "mode": "Indexed",
      "policyRule": {
        "if": {
          "allOf": [
            {
              "field": "type",
              "equals": "Microsoft.Network/privateEndpoints"
            },
            {
              "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",
            "roleDefinitionIds": [
              "/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
            ],
            "existenceCondition": {
              "allOf": [
                {
                  "field": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups/privateDnsZoneConfigs[*].privateDnsZoneId",
                  "equals": "[parameters('privateDnsZoneId')]"
                }
              ]
            },
            "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",
            "strongType": "Microsoft.Network/privateDnsZones"
          }
        }
      }
    }
    

RichtlinienzuweisungenPolicy assignments

Sobald die Richtliniendefinitionen bereitgestellt wurden, weisen Sie die Richtlinien im gewünschten Umfang in Ihrer Verwaltungsgruppenhierarchie zu.Once policy definitions have been deployed, assign the policies at the desired scope in your management group hierarchy. Stellen Sie sicher, dass die Richtlinienzuweisungen auf die Azure-Abonnements ausgerichtet sind, die von den Anwendungsteams verwendet werden, um ausschließlich PaaS-Dienste mit privatem Endpunktzugriff bereitzustellen.Ensure that the policy assignments target the Azure subscriptions that will be used by the application teams to deploy PaaS services with private endpoint access exclusively.

Wichtig

Denken Sie daran, die Rolle Mitwirkender für private DNS-Zone in der Abonnement-/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.Remember to assign the Private DNS Zone Contributor role role in the subscription/resource group where the private DNS zones are hosted to the managed identity created by the DeployIfNotExists policy assignment that will be responsible to create and manage the private endpoint DNS record in the private DNS zone. Dies liegt daran, dass sich der private Endpunkt im Azure-Abonnement des Besitzers der Anwendung befindet, während sich die private DNS-Zone in einem anderen Abonnement befindet (z. B. im zentralen Konnektivitätsabonnement).This is because the private endpoint is located in the application owner Azure subscription, while the private DNS zone is located in a different subscription (such as central connectivity subscription).

Nachdem das Plattformteam diese Konfiguration abgeschlossen hat, sind Azure-Abonnements von Anwendungsteams bereit, um Azure PaaS-Dienste mit ausschließlich privatem Endpunktzugriff zu erstellen und sicherzustellen, dass die DNS-Einträge für private Endpunkte automatisch in den entsprechenden privaten DNS-Zonen registriert werden (und entfernt werden, sobald der private Endpunkt gelöscht wird).Once the platform team finishes this configuration, Azure subscriptions from applications teams are ready for them to create Azure PaaS services with private endpoint access exclusively, and ensuring the DNS records for private endpoints are automatically registered (and removed once private endpoint is deleted) from corresponding private DNS zones.

Erfahrung des AnwendungsbesitzersApplication owner experience

Nachdem das Plattformteam die im vorherigen Abschnitt beschriebenen Komponenten der Plattforminfrastruktur (private DNS-Zonen und Richtlinien) bereitgestellt hat, wird ein Anwendungsbesitzer, der versucht, einen Azure PaaS-Dienst im Azure-Abonnement bereitzustellen, die folgende Erfahrung machen, und zwar unabhängig davon, ob er die Aktivitäten über das Azure-Portal oder über andere Clients wie PowerShell oder die CLI durchführt, da seine Abonnements durch Azure-Richtlinien gesteuert werden.Once the platform team has deployed the platform infrastructure components (private DNS zones and policies) described in the previous section, when an application owner tries to deploy an Azure PaaS service into the Azure subscription, the application owner will have the following experience, which will be the same if they do activities via the Azure portal or via other clients such as PowerShell or CLI, as their subscriptions are being governed by Azure policies.

  1. Erstellen Sie ein Speicherkonto über das Azure-Portal.Create a storage account through the Azure portal. Geben Sie auf der Registerkarte mit den grundlegenden Informationen einen Namen und die gewünschten Einstellungen an, und klicken Sie auf Weiter.In the basic tab, provide a name and your desired settings and click on Next.

    image-7

  2. Stellen Sie sicher, dass im Abschnitt „Netzwerk“ die Option Privater Endpunkt ausgewählt ist.In the networking section, ensure Private endpoint is selected. Wenn eine andere Option als Privater Endpunkt ausgewählt wird, lässt das Azure-Portal die Erstellung des Speicherkontos im Abschnitt Überprüfen und erstellen des Bereitstellungs-Assistenten nicht zu, da die Richtlinie die Erstellung dieses Diensts verhindert, wenn der öffentliche Endpunkt aktiviert ist.If an option other than Private endpoint is selected, the Azure portal will not allow the creation of the storage account in the Review + create section of the deployment wizard, as policy is preventing the creation of this service if the public endpoint is enabled.

    image-8

  3. Es ist möglich, den privaten Endpunkt auf diesem Bildschirm zu erstellen oder es kann nach dem Erstellen des Speicherkontos erfolgen.It is possible to create the private endpoint on this screen or it can be done after the storage account has been created. Für diese Übung werden wir den privaten Endpunkt erstellen, nachdem das Speicherkonto erstellt wurde.For this exercise, we will create the private endpoint after the storage account has been created. Klicken Sie auf Überprüfen und erstellen, und schließen Sie die Erstellung des Speicherkontos ab.Click on Review + create and complete the creation of the storage account.

  4. Nachdem das Speicherkonto erstellt ist, erstellen Sie einen privaten Endpunkt über das Azure-Portal.Once the storage account is created, create a private endpoint through the Azure portal

    image-9

  5. Suchen Sie im Abschnitt Ressource das im vorherigen Schritt erstellte Speicherkonto, und wählen Sie als Unterressource des Ziels Blob und anschließend Weiter aus.In the Resource section, locate the storage account created in the previous step, and for target subresource select Blob, and then select Next.

    image-10

  6. Vergewissern Sie sich im Abschnitt Konfiguration, nachdem Sie Ihr VNet und Subnetz ausgewählt haben, dass In private DNS-Zone integrieren auf Nein festgelegt ist.In the Configuration section, after selecting your VNet and subnet, ensure that Integrate with private DNS zone is set to No. Andernfalls wird das Azure-Portal die Erstellung des privaten Endpunkts verhindern, da Azure Policy die Erstellung einer privaten DNS-Zone mit dem Präfix privatelink nicht zulässt.Otherwise, the Azure portal will prevent the creation of the private endpoint, as Azure Policy will not allow the creation of a private DNS zone with the privatelink prefix.

    image-11

  7. Wählen Sie Überprüfen und erstellen und dann Erstellen aus, um den privaten Endpunkt bereitzustellen.Select Review + create, and then select Create to deploy the private endpoint.

  8. Nach ein paar Minuten wird die Richtlinie DeployIfNotExists ausgelöst und die anschließende dnsZoneGroup-Bereitstellung fügt die erforderlichen DNS-Einträge für den privaten Endpunkt in der zentral verwalteten DNS-Zone hinzu.After a few minutes, the DeployIfNotExists policy will be triggered and the subsequent dnsZoneGroup deployment will add the required DNS records for the private endpoint in the centrally managed DNS zone.

  9. Nachdem der private Endpunkt erstellt wurde, wählen Sie ihn aus und überprüfen Sie seinen FQDN und seine private IP-Adresse:Once the private endpoint has been created, select it, and review its FQDN and private IP:

    image-12

  10. Überprüfen Sie das Aktivitätsprotokoll für die Ressourcengruppe, in der der private Endpunkt erstellt wurde, oder Sie können das Aktivitätsprotokoll des privaten Endpunkts selbst überprüfen.Check the activity log for the resource group where the private endpoint was created, or you can check the activity log of the private endpoint itself. Sie werden feststellen, dass nach ein paar Minuten eine DeployIfNotExist-Richtlinienaktion ausgeführt wird, die die DNS-Zonengruppe auf dem privaten Endpunkt konfiguriert:You will notice that after a few minutes, a DeployIfNotExist policy action is executed, which configures the DNS zone group on the private endpoint:

    image-13

  11. Wenn das zentrale Netzwerkteam zur privaten DNS-Zone privatelink.blob.core.windows.net wechselt, bestätigt es, dass der DNS-Eintrag für den von uns erstellten privaten Endpunkt erstellt wurde und sowohl der Name als auch die IP-Adresse mit den Werten innerhalb des privaten Endpunkts übereinstimmen.If the central networking team goes to the privatelink.blob.core.windows.net private DNS zone, they will confirm that the DNS record has been created for the private endpoint we created, and both the name and IP address match to the values within the private endpoint.

    image-14

Zu diesem Zeitpunkt können Anwendungsteams das Speicherkonto über einen privaten Endpunkt von jedem VNet in der Hub-and-Spoke-Netzwerkumgebung und von lokalen Standorten aus verwenden, da der DNS-Eintrag automatisch in der privaten DNS-Zone erfasst wurde.At this point, application teams can use the storage account via a private endpoint from any VNet in the hub and spoke network environment and from on-premises, as the DNS record has been automatically recorded in the private DNS zone.

Wenn ein Besitzer der Anwendung den privaten Endpunkt löscht, werden die entsprechenden Einträge in der privaten DNS-Zone automatisch entfernt.If an application owner deletes the private endpoint, the corresponding records in the private DNS zone will automatically be removed.