Freigeben über


Erstellen und Verwalten von Private Link für Azure Database for MySQL – flexibler Server mithilfe von Azure CLI

In diesem Artikel erfahren Sie, wie Sie mithilfe der Azure CLI einen privaten Endpunkt für den Zugriff auf eine Instanz von Azure Database for MySQL – Flexibler Server von einer VM aus in einem VNet erstellen.

Starten von Azure Cloud Shell

Azure Cloud Shell ist eine kostenlose interaktive Shell, mit der Sie die Schritte in diesem Artikel durchführen können. Sie verfügt über vorinstallierte Standardtools und ist für die Verwendung mit Ihrem Konto konfiguriert.

Wählen Sie zum Öffnen von Cloud Shell oben rechts in einem Codeblock die Option Ausprobieren aus. Sie können Cloud Shell auch auf einer separaten Browserregisterkarte öffnen, indem Sie zu https://shell.azure.com/bash navigieren. Wählen Sie Kopieren aus, um die Codeblöcke zu kopieren. Fügen Sie die Blöcke anschließend in Cloud Shell ein, und wählen Sie Eingabe, um sie auszuführen.

Wenn Sie es vorziehen, die CLI lokal zu installieren und zu verwenden, müssen Sie für diesen Schnellstart mindestens Version 2.0 der Azure CLI verwenden. Führen Sie az --version aus, um die Version zu ermitteln. Informationen zum Durchführen einer Installation oder eines Upgrades finden Sie bei Bedarf unter Installieren der Azure CLI.

Voraussetzungen

Sie müssen sich mit dem Befehl az login bei Ihrem Konto anmelden. Beachten Sie die Eigenschaft id, die auf die Abonnement-ID für Ihr Azure-Konto verweist.

az login

Wählen Sie mithilfe des Befehls az account set das Abonnement unter Ihrem Konto aus. Beachten Sie in dem Befehl, dass der ID-Wert der Ausgabe von az login als Wert für das Argument subscription zu verwenden ist. Wenn Sie über mehrere Abonnements verfügen, wählen Sie das entsprechende Abonnement aus, in dem die Ressource fakturiert sein sollte. Verwenden Sie az account list, um alle Abonnements abzurufen.

az account set --subscription <subscription id>

Erstellen einer Ressourcengruppe

Bevor Sie eine Ressource erstellen, müssen Sie eine Ressourcengruppe zum Hosten des virtuellen Netzwerks erstellen. Erstellen Sie mit az group create eine Ressourcengruppe. Das folgende Beispiel erstellt eine Ressourcengruppe mit dem Namen myResourceGroup am Standort westeurope:

az group create --name myResourceGroup --location westeurope

Erstellen eines virtuellen Netzwerks

Erstellen Sie mit az network vnet create ein virtuelles Netzwerk. Bei diesem Beispiel wird ein virtuelles Standardnetzwerk mit dem Namen myVirtualNetwork und dem Subnetz mySubnet erstellt:

az network vnet create \
 --name myVirtualNetwork \
 --resource-group myResourceGroup \
 --subnet-name mySubnet

Deaktivieren von Richtlinien für den privaten Endpunkt im Subnetz

Azure stellt Ressourcen für ein Subnetz innerhalb eines virtuellen Netzwerks bereit. Daher müssen Sie das Subnetz erstellen oder aktualisieren, um die Netzwerkrichtlinien für den privaten Endpunkt im Subnetz zu deaktivieren. Aktualisieren Sie eine Subnetzkonfiguration mit dem Namen mySubnet mit az network vnet subnet update:

az network vnet subnet update \
 --name mySubnet \
 --resource-group myResourceGroup \
 --vnet-name myVirtualNetwork \
 --disable-private-endpoint-network-policies true

Erstellen des virtuellen Computers

Erstellen Sie eine VM mit az vm create. Geben Sie bei entsprechender Aufforderung ein Kennwort als Anmeldeinformation für den virtuellen Computer ein. In diesem Beispiel wird ein virtueller Computer mit dem Namen myVm erstellt:

az vm create \
  --resource-group myResourceGroup \
  --name myVm \
  --image Win2019Datacenter

Hinweis

Notieren Sie sich die öffentliche IP-Adresse des virtuellen Computers, da sie für die Verbindung über das Internet im nächsten Schritt erforderlich ist.

Erstellen der Instanz von Azure Database for MySQL – Flexibler Server mit öffentlichem Zugriff in der Ressourcengruppe

Erstellen Sie eine Instanz von Azure Database for MySQL – Flexibler Server mit öffentlichem Zugriff und fügen Sie die Client-IP-Adresse für den Zugriff auf den Server hinzu.

az mysql flexible-server create \
  --name mydemoserver \
  --resource-group myResourcegroup \
  --location westeurope \
  --admin-user mylogin \
  --admin-password <server_admin_password> \
  --public-access <my_client_ip>

Hinweis

In einigen Fällen befinden sich die flexible Serverinstanz von Azure Database for MySQL und das VNet-Subnetz in unterschiedlichen Abonnements. In diesen Fällen müssen Sie folgende Konfigurationen sicherstellen:

  • Stellen Sie sicher, dass für beide Abonnements der Ressourcenanbieter Microsoft.DBforMySQL/flexibleServer registriert ist. Weitere Informationen finden Sie unter Azure-Ressourcenanbieter und -typen.

Erstellen des privaten Endpunkts

Erstellen Sie einen privaten Endpunkt für Azure Database for MySQL – Flexibler Server in Ihrer Virtual Network-Instanz:

az network private-endpoint create \
    --name myPrivateEndpoint \
    --resource-group myResourceGroup \
    --vnet-name myVirtualNetwork  \
    --subnet mySubnet \
    --private-connection-resource-id $(az resource show -g myResourcegroup -n mydemoserver --resource-type "Microsoft.DBforMySQL/flexibleServers" --query "id" -o tsv) \
    --group-id mysqlServer \
    --connection-name myConnection \
    --location location

Konfigurieren der privaten DNS-Zone

Erstellen Sie eine private DNS-Zone für die Domäne von Azure Database for MySQL – Flexibler Server, und erstellen Sie eine Zuordnungsverknüpfung mit der Virtual Network-Instanz.

az network private-dns zone create --resource-group myResourceGroup \
   --name  "privatelink.mysql.database.azure.com"
az network private-dns link vnet create --resource-group myResourceGroup \
   --zone-name  "privatelink.mysql.database.azure.com"\
   --name MyDNSLink \
   --virtual-network myVirtualNetwork \
   --registration-enabled false

# Query for the network interface ID
$networkInterfaceId=$(az network private-endpoint show --name myPrivateEndpoint --resource-group myResourceGroup --query 'networkInterfaces[0].id' -o tsv)

az resource show --ids $networkInterfaceId --api-version 2019-04-01 -o json
# Copy the content for privateIPAddress and FQDN matching the MySQL flexible server name

# Create DNS records
az network private-dns record-set a create --name myserver --zone-name privatelink.mysql.database.azure.com --resource-group myResourceGroup
az network private-dns record-set a add-record --record-set-name myserver --zone-name privatelink.mysql.database.azure.com --resource-group myResourceGroup -a <Private IP Address>

Hinweis

Mit dem FQDN in der DNS-Einstellung des Kunden wird die konfigurierte private IP-Adresse nicht aufgelöst. Sie müssen eine DNS-Zone für den konfigurierten FQDN einrichten, wie hier gezeigt.

Herstellen einer Verbindung mit einem virtuellen Computer über das Internet

Stellen Sie wie folgt eine Verbindung mit dem virtuellen Computer myVm aus dem Internet her:

  1. Geben Sie in der Suchleiste des Portals myVm ein.

  2. Wählen Sie die Schaltfläche Verbinden aus. Nach dem Auswählen der Schaltfläche Verbinden wird Verbindung mit virtuellem Computer herstellen geöffnet.

  3. Wählen Sie RDP-Datei herunterladen aus. Azure erstellt eine Remotedesktopprotokoll-Datei (RDP) und lädt sie auf Ihren Computer herunter.

  4. Öffnen Sie die Datei downloaded.rdp.

    1. Wenn Sie dazu aufgefordert werden, wählen Sie Verbinden aus.

. Geben Sie den Benutzernamen und das Kennwort ein, den/das Sie beim Erstellen des virtuellen Computers angegeben haben. > [!NOTE]
> Unter Umständen müssen Sie Weitere Optionen Anderes Konto verwenden auswählen, um die Anmeldeinformationen anzugeben, die Sie beim Erstellen der VM eingegeben haben.

  1. Klicken Sie auf OK.

  2. Während des Anmeldevorgangs wird unter Umständen eine Zertifikatwarnung angezeigt. Wählen Sie Ja oder Weiter aus, wenn Sie eine Zertifikatwarnung erhalten.

  3. Sobald der VM-Desktop angezeigt wird, minimieren Sie ihn, um zu Ihrem lokalen Desktop zurückzukehren.

Zugriff auf die Instanz von Azure-Datenbank for MySQL – flexibler Server privat von der VM

  1. Öffnen Sie auf dem Remotedesktop von myVM PowerShell.

  2. Geben Sie nslookup mydemomysqlserver.privatelink.mysql.database.azure.com ein.

    Sie erhalten eine Meldung wie die folgende:

    Server:  UnKnown
    Address:  168.63.129.16
    Non-authoritative answer:
    Name:    mydemomysqlserver.privatelink.mysql.database.azure.com
    Address:  10.1.3.4
    
  3. Testen Sie die Private Link-Verbindung für die Instanz von Azure Database for MySQL – flexibler Server mithilfe eines beliebigen verfügbaren Clients. Im folgenden Beispiel wird die MySQL-Workbench zum Ausführen des Vorgangs verwendet.

  4. Geben Sie in Neue Verbindung die folgenden Informationen ein, oder wählen Sie sie aus:

    Einstellung Wert
    Verbindungsname Wählen Sie den gewünschten Verbindungsnamen aus.
    Hostname Select mydemoserver.privatelink.mysql.database.azure.com
    Benutzername Geben Sie den Benutzernamen als benutzername@servername ein, der während der Erstellung der Instanz von Azure Database for MySQL – Flexibler Server bereitgestellt wurde.
    Kennwort Geben Sie ein Kennwort ein, das während der Erstellung der Instanz für Azure Database for MySQL – flexibler Server bereitgestellt wurde.
  5. Wählen Sie Verbinden.

  6. Durchsuchen Sie Datenbanken im linken Menü.

  7. (Optional) Erstellen oder Abfragen von Informationen aus der Datenbank von Azure Database for MySQL – Flexibler Server.

  8. Schließen Sie die Remotedesktopverbindung mit myVm.

Bereinigen von Ressourcen

Wenn die Ressourcengruppe und alle enthaltenen Ressourcen nicht mehr benötigt werden, können Sie diese mit az group delete entfernen:

az group delete --name myResourceGroup --yes

Auflisten von per Private Link verknüpfbarer Unterressourcen (groupIds)

az network private-link-resource list --id {PrivateLinkResourceID}  // or -g MyResourceGroup -n MySA --type Microsoft.Storage/storageAccounts

Auflisten privater Endpunktverbindungen zu einer bestimmten Ressource

az network private-endpoint-connection list --id {PrivateLinkResourceID}

Genehmigen privater Endpunktverbindungen zu einer bestimmten Ressource

az network private-endpoint-connection approve --id {PrivateEndpointConnectionID}  --description "Approved!"

Ablehnen privater Endpunktverbindungen zu einer bestimmten Ressource

az network private-endpoint-connection reject --id {PrivateEndpointConnectionID}  --description "Rejected!"

Löschen privater Endpunktverbindungen zu einer bestimmten Ressource

az network private-endpoint-connection delete --id {PrivateEndpointConnectionID}