Integrieren von Azure Relay in Azure Private Link

Mit Azure Private Link können Sie über einen privaten Endpunkt in Ihrem virtuellen Netzwerk auf Azure-Dienste wie Azure Relay, Azure Service Bus, Azure Event Hubs, Azure Storage und Azure Cosmos DB sowie auf in Azure gehostete Kunden-/Partnerdienste zugreifen. Weitere Informationen finden Sie unter Was ist Azure Private Link?.

Ein privater Endpunkt ist eine Netzwerkschnittstelle, mit der Ihre Workloads, die in einem virtuellen Netzwerk ausgeführt werden, eine private und sichere Verbindung mit einem Dienst herstellen können, der über eine Private Link-Ressource verfügt (z. B. über einen Relaynamespace). Der private Endpunkt verwendet eine private IP-Adresse aus Ihrem VNET und bindet den Dienst dadurch in Ihr VNET ein. Der gesamte für den Dienst bestimmte Datenverkehr kann über den privaten Endpunkt geleitet werden. Es sind also keine Gateways, NAT-Geräte, ExpressRoute-Verbindungen, VPN-Verbindungen oder öffentlichen IP-Adressen erforderlich. Der Datenverkehr zwischen Ihrem virtuellen Netzwerk und dem Dienst wird über das Microsoft-Backbone-Netzwerk übertragen und dadurch vom öffentlichen Internet isoliert. Sie können eine gewünschte Granularitätsebene für die Zugriffssteuerung festlegen, indem Sie Verbindungen mit bestimmten Azure Relay-Namespaces zulassen.

Hinweis

Wenn Sie den Relaylistener über eine private Verbindung verwenden, öffnen Sie die Ports 9400-9599 für die ausgehende Kommunikation zusammen mit den Standardrelayports. Beachten Sie, dass Sie diesen Schritt nur für den Relaylistener ausführen müssen.

Hinzufügen eines privaten Endpunkts über das Azure-Portal

Voraussetzungen

Um einen Azure Relay-Namespace in Azure Private Link zu integrieren, benötigen Sie die folgenden Entitäten oder Berechtigungen:

  • Einen Azure Relay-Namespace
  • Ein virtuelles Azure-Netzwerk
  • Ein Subnetz in dem virtuellen Netzwerk
  • Berechtigungen vom Typ „Besitzer“ oder „Mitwirkender“ für das virtuelle Netzwerk.

Der private Endpunkt und das virtuelle Netzwerk müssen sich in der gleichen Region befinden. Wenn Sie über das Portal eine Region für den privaten Endpunkt auswählen, wird automatisch nach virtuellen Netzwerken in dieser Region gefiltert. Der Namespace kann sich in einer anderen Region befinden.

Der private Endpunkt verwendet eine private IP-Adresse in Ihrem virtuellen Netzwerk.

Konfigurieren des privaten Zugriffs für einen Relay-Namespace

Das folgende Verfahren enthält eine Schritt-für-Schritt-Anleitung zum Deaktivieren des öffentlichen Zugriffs auf einen Relay-Namespace und für das anschließende Hinzufügen eines privaten Endpunkts zum Namespace.

  1. Melden Sie sich beim Azure-Portal an.

  2. Geben Sie in der Suchleiste den Suchbegriff Relays ein.

  3. Wählen Sie in der Liste den Namespace aus, dem Sie einen privaten Endpunkt hinzufügen möchten.

  4. Wählen Sie im Menü links unter Einstellungen die Registerkarte Netzwerk aus.

  5. Wählen Sie auf der Seite Netzwerk unter Öffentlicher Netzwerkzugriff die Option Deaktiviert aus, wenn auf den Namespace nur über private Endpunkte zugegriffen werden soll.

  6. Wählen Sie unter Zulassen, dass vertrauenswürdige Microsoft-Dienste diese Firewall umgehen die Option Ja aus, wenn Sie zulassen möchten, dass vertrauenswürdige Microsoft-Dienste diese Firewall umgehen.

    Screenshot der Seite „Netzwerk“, auf der die Option „Öffentlicher Netzwerkzugriff“ deaktiviert ist.

  7. Wählen Sie im oberen Seitenbereich die Registerkarte Private Endpunktverbindungen aus.

  8. Wählen Sie im oberen Seitenbereich die Schaltfläche + Privater Endpunkt aus.

    Screenshot der Auswahl der Schaltfläche „Privaten Endpunkt hinzufügen“ auf der Registerkarte „Private Endpunktverbindungen“ auf der Seite „Netzwerk“.

  9. Führen Sie auf der Seite Grundlagen die folgenden Schritte aus:

    1. Wählen Sie das Azure-Abonnement aus, in dem Sie den privaten Endpunkt erstellen möchten.

    2. Wählen Sie die Ressourcengruppe für die private Endpunktressource aus.

    3. Geben Sie einen Namen für den privaten Endpunkt ein.

    4. Geben Sie einen Namen für die Netzwerkschnittstelle ein.

    5. Wählen Sie eine Region für den privaten Endpunkt aus. Ihr privater Endpunkt muss sich in derselben Region wie Ihr virtuelles Netzwerk befinden, kann aber in einer anderen Region als der Azure Relay-Namespace enthalten sein, mit dem Sie eine Verbindung herstellen.

    6. Wählen Sie unten auf der Seite die Schaltfläche Weiter: Ressource > aus.

      Der Screenshot zeigt die Seite „Grundlagen“ des Assistenten zum Erstellen eines privaten Endpunkts.

  10. Überprüfen Sie auf der Seite Ressource die Einstellungen, und wählen Sie dann Weiter: Virtuelles Netzwerk aus.

    Screenshot, der die Seite „Ressource“ des Assistenten zum Erstellen eines privaten Endpunkts zeigt.

  11. Wählen Sie auf der Seite Virtuelles Netzwerk das virtuelle Netzwerk und das Subnetz aus, in dem Sie den privaten Endpunkt bereitstellen möchten. Nur virtuelle Netzwerke im aktuell ausgewählten Abonnement und am aktuell ausgewählten Standort werden in der Dropdownliste aufgeführt.

    Screenshot der Seite „Virtuelles Netzwerk“ des Assistenten zum Erstellen eines privaten Endpunkts.

    Sie können konfigurieren, ob Sie dynamisch oder statisch eine IP-Adresse dem privaten Endpunkt zuweisen möchten.

    Sie können dem privaten Endpunkt auch eine neue oder vorhandene Anwendungssicherheitsgruppe zuordnen.

  12. Wählen Sie Weiter: DNS aus, um zur Seite DNS des Assistenten zu navigieren. Auf der Seite DNS ist die EinstellungIn private DNZ-Zone integrieren standardmäßig aktiviert (empfohlen). Sie haben die Möglichkeit, sie zu deaktivieren.

    Screenshot der Seite „DNS“ des Assistenten zum Erstellen eines privaten Endpunkts.

    Für die Herstellung einer privaten Verbindung mit Ihrem privaten Endpunkt benötigen Sie einen DNS-Eintrag. Es wird empfohlen, den privaten Endpunkt in eine private DNS-Zone zu integrieren. Sie können auch Ihre eigenen DNS-Server verwenden oder DNS-Einträge mithilfe der Hostdateien auf Ihren virtuellen Computern erstellen. Weitere Informationen finden Sie unter DNS-Konfiguration für private Azure-Endpunkte.

  13. Wählen Sie die Schaltfläche Weiter: Tags > unten auf der Seite aus.

  14. Erstellen Sie auf der Seite Tags beliebige Tags (Namen und Werte), die Sie dem privaten Endpunkt und der privaten DNS-Zone zuordnen möchten (wenn Sie diese Option aktiviert haben). Wählen Sie dann am unteren Rand der Seite die Schaltfläche Überprüfen und erstellen aus.

  15. Überprüfen Sie auf der Seite Überprüfen und erstellen alle Einstellungen, und wählen Sie dann Erstellen aus, um den privaten Endpunkt zu erstellen.

  16. Auf der Seite Privater Endpunkt wird der Status der Verbindung mit dem privaten Endpunkt angezeigt. Wenn Sie Besitzer des Relaynamespace sind oder Verwaltungszugriff darauf haben und die Option Verbindung mit einer Azure-Ressource in meinem Verzeichnis herstellen als Verbindungsmethode ausgewählt haben, sollte die Endpunktverbindung automatisch genehmigt sein. Wenn sie sich im Status Ausstehend befindet, lesen Sie den Abschnitt Verwalten eines privaten Endpunkts mit dem Azure-Portal.

    Screenshot der Seite „Privater Endpunkt“ im Azure-Portal.

  17. Navigieren Sie zurück zur Seite Netzwerk des Namespace, und wechseln Sie zur Registerkarte Private Endpunktverbindungen. Der private Endpunkt, den Sie erstellt haben, sollte angezeigt werden.

    Screenshot der Registerkarte „Private Endpunktverbindungen“ auf der Seite „Netzwerk“ mit dem privaten Endpunkt, den Sie soeben erstellt haben.

Hinzufügen eines privaten Endpunkts mit PowerShell

Im folgenden Beispiel wird gezeigt, wie Azure PowerShell verwendet wird, um eine private Endpunktverbindung mit einem Azure Relay-Namespace herzustellen.

Der private Endpunkt und das virtuelle Netzwerk müssen sich in der gleichen Region befinden. Der Azure Relay-Namespace kann sich in einer anderen Region befinden. Außerdem verwendet der private Endpunkt eine private IP-Adresse in Ihrem virtuellen Netzwerk.


$rgName = "<RESOURCE GROUP NAME>"
$vnetlocation = "<VNET LOCATION>"
$vnetName = "<VIRTUAL NETWORK NAME>"
$subnetName = "<SUBNET NAME>"
$namespaceLocation = "<NAMESPACE LOCATION>"
$namespaceName = "<NAMESPACE NAME>"
$peConnectionName = "<PRIVATE ENDPOINT CONNECTION NAME>"

# create resource group
New-AzResourceGroup -Name $rgName -Location $vnetLocation 

# create virtual network
$virtualNetwork = New-AzVirtualNetwork `
                    -ResourceGroupName $rgName `
                    -Location $vnetlocation `
                    -Name $vnetName `
                    -AddressPrefix 10.0.0.0/16

# create subnet with endpoint network policy disabled
$subnetConfig = Add-AzVirtualNetworkSubnetConfig `
                    -Name $subnetName `
                    -AddressPrefix 10.0.0.0/24 `
                    -PrivateEndpointNetworkPoliciesFlag "Disabled" `
                    -VirtualNetwork $virtualNetwork

# update virtual network
$virtualNetwork | Set-AzVirtualNetwork

# create a relay namespace
$namespaceResource = New-AzResource -Location $namespaceLocation -ResourceName $namespaceName -ResourceGroupName $rgName -Properties @{} -ResourceType "Microsoft.Relay/namespaces" 

# create a private link service connection
$privateEndpointConnection = New-AzPrivateLinkServiceConnection `
                                -Name $peConnectionName `
                                -PrivateLinkServiceId $namespaceResource.ResourceId `
                                -GroupId "namespace"

# get subnet object that you'll use in the next step                                
$virtualNetwork = Get-AzVirtualNetwork -ResourceGroupName  $rgName -Name $vnetName
$subnet = $virtualNetwork | Select -ExpandProperty subnets `
                                | Where-Object  {$_.Name -eq $subnetName}  
   
# now, create private endpoint   
$privateEndpoint = New-AzPrivateEndpoint -ResourceGroupName $rgName  `
                                -Name $vnetName   `
                                -Location $vnetlocation `
                                -Subnet  $subnet   `
                                -PrivateLinkServiceConnection $privateEndpointConnection

(Get-AzResource -ResourceId $namespaceResource.ResourceId -ExpandProperties).Properties


Verwalten eines privaten Endpunkts mit dem Azure-Portal

Wenn Sie einen privaten Endpunkt erstellen, muss die Verbindung genehmigt werden. Wenn sich die Ressource (Relaynamespace), für die Sie einen privaten Endpunkt erstellen, in Ihrem Verzeichnis befindet, können Sie die Verbindungsanforderung genehmigen, sofern Sie über Verwaltungsberechtigungen für den Relaynamespace verfügen. Wenn Sie eine Verbindung mit einem Relaynamespace herstellen, für den Sie keinen Verwaltungszugriff besitzen, müssen Sie warten, bis der Besitzer dieser Ressource Ihre Verbindungsanforderung genehmigt hat.

Es gibt vier Möglichkeiten für den Bereitstellungsstatus:

Dienstaktion Zustand des privaten Endpunkts des Dienstconsumers BESCHREIBUNG
Keine Ausstehend Die Verbindung wurde manuell erstellt, und die Genehmigung des Besitzers des Azure Relay-Namespace steht aus.
Genehmigen Genehmigt Die Verbindung wurde automatisch oder manuell genehmigt und ist zur Verwendung bereit.
Reject Rejected (Abgelehnt) Die Verbindung wurde vom Besitzer des Azure Relay-Namespace abgelehnt.
Remove (Entfernen) Getrennt Die Verbindung wurde vom Besitzer des Azure Relay-Namespace entfernt, und der private Endpunkt wird informativ und sollte zur Bereinigung gelöscht werden.

Genehmigt die Verbindung eines privaten Endpunkts, lehnt sie ab oder entfernt sie.

  1. Melden Sie sich beim Azure-Portal an.
  2. Geben Sie auf der Suchleiste den Suchbegriff Relay ein.
  3. Wählen Sie den Namespace aus, den Sie verwalten möchten.
  4. Wählen Sie die Registerkarte Netzwerk aus.
  5. Wechseln Sie zu dem entsprechenden Abschnitt unten, der Ihrem gewünschten Vorgang entspricht: Genehmigen, Ablehnen oder Entfernen.

Genehmigen einer Verbindung mit einem privaten Endpunkt

  1. Sollten ausstehende Verbindungen vorhanden sein, wird in der Liste eine Verbindung mit dem Bereitstellungsstatus Ausstehend angezeigt.

  2. Wählen Sie den privaten Endpunkt aus, den Sie genehmigen möchten.

  3. Wählen Sie die Schaltfläche Genehmigen aus.

    Screenshot der Schaltfläche „Genehmigen“ auf der Befehlsleiste für den ausgewählten privaten Endpunkt.

  4. Geben Sie auf der Seite Verbindung genehmigen einen optionalen Kommentar ein, und wählen Sie dann Ja aus. Wenn Sie Nein auswählen, geschieht nichts.

    Screenshot der Seite „Verbindung genehmigen“, auf der Sie zur Bestätigung aufgefordert werden.

  5. Der Status der Verbindung sollte in der Liste in Genehmigt geändert werden.

Ablehnen einer Verbindung mit einem privaten Endpunkt

  1. Falls Sie Verbindungen mit einem privaten Endpunkt ablehnen möchten, wählen Sie die gewünschte Endpunktverbindung und anschließend die Schaltfläche Ablehnen aus. Das funktioniert sowohl für ausstehende Anforderungen als auch für bereits vorhandene Verbindungen, die vorher genehmigt wurden.

    Screenshot der Schaltfläche „Ablehnen“ auf der Befehlsleiste für den ausgewählten privaten Endpunkt.

  2. Geben Sie auf der Seite Verbindung ablehnen einen optionalen Kommentar ein, und wählen Sie dann Ja aus. Wenn Sie Nein auswählen, geschieht nichts.

    Screenshot der Seite „Verbindung ablehnen“, auf der Sie zur Bestätigung aufgefordert werden.

  3. Der Status der Verbindung sollte in der Liste in Abgelehnt geändert werden.

Entfernen einer Verbindung mit einem privaten Endpunkt

  1. Um eine Verbindung mit einem privaten Endpunkt zu entfernen, wählen Sie sie in der Liste aus, und wählen Sie Entfernen auf der Symbolleiste aus.

    Screenshot der Schaltfläche „Entfernen“ auf der Befehlsleiste für den ausgewählten privaten Endpunkt.

  2. Wählen Sie auf der Seite Verbindung löschenJa aus, um das Löschen des privaten Endpunkts zu bestätigen. Wenn Sie Nein auswählen, geschieht nichts.

    Screenshot der Seite „Verbindung löschen“, auf der Sie zur Bestätigung aufgefordert werden.

  3. Der Status sollte in Getrennt geändert werden. Anschließend wird der Endpunkt nicht in der Liste angezeigt.

Sie sollten überprüfen, ob Ressourcen innerhalb des virtuellen Netzwerks des privaten Endpunkts über dessen private IP-Adresse eine Verbindung mit dem Azure Relay-Namespace herstellen.

Erstellen Sie für diesen Test einen virtuellen Computer. Eine entsprechende Anleitung finden Sie unter Erstellen eines virtuellen Windows-Computers im Azure-Portal.

Gehen Sie auf der Registerkarte Netzwerk wie folgt vor:

  1. Geben Sie ein virtuelles Netzwerk und ein Subnetz an. Wählen Sie das virtuelle Netzwerk aus, in dem Sie den privaten Endpunkt bereitgestellt haben.
  2. Geben Sie eine öffentliche IP-Ressource an.
  3. Wählen Sie für NIC-Netzwerksicherheitsgruppe die Option Keine aus.
  4. Wählen Sie für den LastenausgleichNein aus.

Stellen Sie eine Verbindung mit der VM her, öffnen Sie die Befehlszeile, und führen Sie den folgenden Befehl aus:

nslookup <your-relay-namespace-name>.servicebus.windows.net

Das Ergebnis sollte in etwa wie folgt aussehen.

Non-authoritative answer:
Name:    <namespace-name>.privatelink.servicebus.windows.net
Address:  10.0.0.4 (private IP address associated with the private endpoint)
Aliases:  <namespace-name>.servicebus.windows.net

Einschränkungen und Entwurfsaspekte

Überlegungen zum Entwurf

Begrenzungen

  • Maximal zulässige Anzahl privater Endpunkte pro Azure Relay-Namespace: 64.
  • Maximal zulässige Anzahl von Azure Relay-Namespaces mit privaten Endpunkten pro Abonnement: 64.
  • Regeln für Netzwerksicherheitsgruppen (NSGs) und benutzerdefinierte Routen gelten nicht für den privaten Endpunkt. Weitere Informationen hierzu finden Sie unter Azure Private Link-Dienst: Einschränkungen.

Vertrauenswürdige Microsoft-Dienste

Wenn Sie die Einstellung Vertrauenswürdigen Microsoft-Diensten die Umgehung dieser Firewall erlauben aktivieren, wird den folgenden Diensten Zugriff auf Ihre Azure Relay-Ressourcen gewährt.

Vertrauenswürdiger Dienst Unterstützte Verwendungsszenarien
Azure Machine Learning AML Kubernetes verwendet Azure Relay, um die Kommunikation zwischen AML-Diensten und dem Kubernetes-Cluster zu erleichtern. Azure Relay ist ein vollständig verwalteter Dienst, der eine sichere bidirektionale Kommunikation zwischen Anwendungen bereitstellt, die in verschiedenen Netzwerken gehostet werden. Dies macht es ideal für die Verwendung in Umgebungen mit privater Verbindung, bei denen die Kommunikation zwischen Azure-Ressourcen und lokalen Ressourcen eingeschränkt ist.
Azure Arc Azure Arc-fähige Dienste, die den oben aufgeführten Ressourcenanbietern zugeordnet sind, können eine Verbindung mit den Hybridverbindungen in Ihrem Azure Relay-Namespace als Absender herstellen, ohne durch die im Azure Relay-Namespace festgelegten IP-Firewallregeln blockiert zu werden. Der Microsoft.Hybridconnectivity-Dienst erstellt die Hybridverbindungen in Ihrem Azure Relay-Namespace und stellt die Verbindungsinformationen für den relevanten Arc-Dienst basierend auf dem Szenario bereit. Diese Dienste kommunizieren nur mit Ihrem Azure Relay-Namespace, wenn Sie Azure Arc verwenden, mit den folgenden Azure Services:

– Azure Kubernetes
– Azure Machine Learning
– Microsoft Purview

Die anderen vertrauenswürdigen Dienste für Azure Relay finden Sie unten:

  • Azure Event Grid
  • Azure IoT Hub
  • Azure Stream Analytics
  • Azure Monitor
  • Azure API Management
  • Azure Synapse
  • Azure Data Explorer
  • Azure IoT Central
  • Azure Healthcare Data Services
  • Azure Digital Twins

Hinweis

In der Version 2021-11-01 oder höher des Microsoft Relay SDK ist die Eigenschaft „trustedServiceAccessEnabled“ in den Eigenschaften Microsoft.Relay/namespaces/networkRuleSets verfügbar, um den Trusted Service Access zu aktivieren.

Um vertrauenswürdige Dienste in Azure Resource Manager-Vorlagen zuzulassen, fügen Sie diese Eigenschaft in Ihre Vorlage ein:

"trustedServiceAccessEnabled": "True"

Basierend auf der oben bereitgestellten ARM-Vorlage können wir sie beispielsweise so ändern, dass die Eigenschaft „Netzwerkregelsatz“ für die Aktivierung vertrauenswürdiger Dienste eingeschlossen wird:

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "namespaces_name": {
            "defaultValue": "contosorelay0215",
            "type": "String"
        }
    },
    "variables": {},
    "resources": [
        {
            "type": "Microsoft.Relay/namespaces",
            "apiVersion": "2021-11-01",
            "name": "[parameters('namespaces_name')]",
            "location": "East US",
            "sku": {
                "name": "Standard",
                "tier": "Standard"
            },
            "properties": {}
        },
        {
            "type": "Microsoft.Relay/namespaces/authorizationrules",
            "apiVersion": "2021-11-01",
            "name": "[concat(parameters('namespaces_sprelayns0215_name'), '/RootManageSharedAccessKey')]",
            "location": "eastus",
            "dependsOn": [
                "[resourceId('Microsoft.Relay/namespaces', parameters('namespaces_sprelayns0215_name'))]"
            ],
            "properties": {
                "rights": [
                    "Listen",
                    "Manage",
                    "Send"
                ]
            }
        },
        {
            "type": "Microsoft.Relay/namespaces/networkRuleSets",
            "apiVersion": "2021-11-01",
            "name": "[concat(parameters('namespaces_sprelayns0215_name'), '/default')]",
            "location": "East US",
            "dependsOn": [
                "[resourceId('Microsoft.Relay/namespaces', parameters('namespaces_sprelayns0215_name'))]"
            ],
            "properties": {
                "trustedServiceAccessEnabled": "True",
                "publicNetworkAccess": "Enabled",
                "defaultAction": "Deny",
                "ipRules": [
                    {
                        "ipMask": "172.72.157.204",
                        "action": "Allow"
                    },
                    {
                        "ipMask": "10.1.1.1",
                        "action": "Allow"
                    },
                    {
                        "ipMask": "11.0.0.0/24",
                        "action": "Allow"
                    }
                ]
            }
        }
    ]
}

Nächste Schritte