Partager via


Créer et gérer une liaison privée pour Azure Database pour MySQL – Serveur flexible avec Azure CLI

Dans cet article, vous allez apprendre à utiliser Azure CLI pour créer un point de terminaison privé permettant d’accéder à une instance de serveur flexible Azure Database pour MySQL à partir d’une machine virtuelle dans un réseau virtuel.

Lancement d’Azure Cloud Shell

Azure Cloud Shell est un interpréteur de commandes interactif et gratuit que vous pouvez utiliser pour exécuter les étapes de cet article. Il contient des outils Azure standards préinstallés et configurés pour être utilisés avec votre compte.

Pour ouvrir Cloud Shell, sélectionnez Essayer en haut à droite d’un bloc de code. Vous pouvez également ouvrir Cloud Shell dans un onglet distinct du navigateur en accédant à https://shell.azure.com/bash. Sélectionnez Copier pour copier les blocs de code, collez-les dans Cloud Shell et sélectionnez Entrée pour les exécuter.

Si vous préférez installer et utiliser l’interface de ligne de commande en local, ce guide de démarrage rapide nécessite au minimum la version 2.0 d’Azure CLI. Exécutez az --version pour trouver la version. Consultez Installer Azure CLI si vous devez effectuer une installation ou une mise à niveau.

Prérequis

Vous devrez vous connecter à votre compte avec la commande az login. Notez la propriété id, qui fait référence à l’ID d’abonnement pour votre compte Azure.

az login

Sélectionnez l’abonnement spécifique sous votre compte à l’aide de la commande az account set. Dans la commande, notez la valeur d’id figurant dans la sortie de la commande az login comme valeur de l’argument subscription. Si vous avez plusieurs abonnements, sélectionnez l’abonnement approprié dans lequel la ressource doit être facturée. Utilisez az account list pour obtenir l’ensemble de vos abonnements.

az account set --subscription <subscription id>

Créer un groupe de ressources

Avant de créer des ressources, vous devez créer un groupe de ressources qui hébergera le réseau virtuel. Créez un groupe de ressources avec la commande az group create. Cet exemple crée un groupe de ressources nommé myResourceGroup à l’emplacement westeurope :

az group create --name myResourceGroup --location westeurope

Création d'un réseau virtuel

Créez un réseau virtuel avec la commande az network vnet create. Cet exemple crée un réseau virtuel par défaut nommé myVirtualNetwork avec un sous-réseau nommé mySubnet :

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

Désactiver les stratégies Private Endpoint du sous-réseau

Azure déploie des ressources sur un sous-réseau au sein d’un réseau virtuel. vous devez donc créer ou mettre à jour le sous-réseau pour désactiver les stratégies réseau de point de terminaison privé. Mettez à jour une configuration de sous-réseau nommée mySubnet avec az network vnet subnet update :

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

Création de la machine virtuelle

Créez une machine virtuelle avec az vm create. Lorsque vous y êtes invité, indiquez un mot de passe à utiliser comme informations d’identification pour vous connecter à la machine virtuelle. Cet exemple crée une machine virtuelle nommée myVm :

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

Notes

Enregistrez l’adresse IP publique de la machine virtuelle, car elle est nécessaire pour se connecter à partir d’Internet lors de l’étape suivante.

Créer l’instance de serveur flexible Azure Database pour MySQL avec un accès public dans le groupe de ressources

Créez une instance de serveur flexible Azure Database pour MySQL avec un accès public et ajoutez l’adresse IP du client pour y accéder.

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>

Remarque

Dans certains cas, l’instance du serveur flexible Azure Database pour MySQL et le sous-réseau VNet se trouvent dans des abonnements différents. Dans ces cas-là, vous devez vérifier les configurations suivantes :

  • Assurez-vous que le fournisseur de ressources Microsoft.DBforMySQL/flexibleServer est inscrit pour les deux abonnements. Pour plus d’informations, reportez-vous à resource-manager-registration.

Créer l’instance Private Endpoint

Créez un point de terminaison privé pour l’instance de serveur flexible Azure Database pour MySQL dans votre réseau virtuel :

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

Configurer la zone DNS privée

Créez une zone DNS privée pour le domaine du serveur flexible Azure Database pour MySQL et créez un lien d’association avec le réseau virtuel.

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>

Remarque

Le FQDN dans le paramètre DNS du client ne résout pas l’adresse IP privée configurée. Vous devez configurer une zone DNS pour le nom de domaine complet configuré, comme illustréici.

Se connecter à une machine virtuelle à partir d’Internet

Connectez-vous à la machine virtuelle myVm à partir d’Internet comme suit :

  1. Dans la barre de recherche du portail, entrez myVm.

  2. Sélectionnez le bouton Connexion. Après avoir sélectionné le bouton Connecter, Se connecter à la machine virtuelle s’ouvre.

  3. Sélectionnez Télécharger le fichier RDP. Azure crée un fichier de protocole RDP (Remote Desktop Protocol) ( .rdp) et le télécharge sur votre ordinateur.

  4. Ouvrez le fichier downloaded.rdp.

    1. Si vous y êtes invité, sélectionnez Connexion.

. Entrez le nom d’utilisateur et le mot de passe spécifiés lors de la création de la machine virtuelle. > [!REMARQUE]
> Pour spécifier les informations d’identification que vous avez saisies lors de la création de la machine virtuelle, vous devrez peut-être sélectionner Autres choix Utiliser un autre compte.

  1. Cliquez sur OK.

  2. Un avertissement de certificat peut s’afficher pendant le processus de connexion. Sélectionnez Oui ou Continuer si vous recevez un avertissement de certificat.

  3. Une fois que le bureau de la machine virtuelle s’affiche, réduisez-le pour revenir à votre poste de travail local.

Accédez à l'instance de serveur flexible Azure Database for MySQL en privé à partir de la machine virtuelle

  1. Dans le Bureau à distance de myVM, ouvrez PowerShell.

  2. Saisissez nslookup mydemomysqlserver.privatelink.mysql.database.azure.com.

    Vous recevez un message similaire à celui ci :

    Server:  UnKnown
    Address:  168.63.129.16
    Non-authoritative answer:
    Name:    mydemomysqlserver.privatelink.mysql.database.azure.com
    Address:  10.1.3.4
    
  3. Testez la connexion par lien privé pour l’instance de serveur flexible Azure Database pour MySQL à l’aide de n’importe quel client disponible. L’exemple suivant utilise MySQL Workbench pour effectuer l’opération.

  4. Dans Nouvelle connexion, entrez ou sélectionnez les informations suivantes :

    Paramètre Valeur
    Nom de connexion Sélectionnez le nom de connexion de votre choix.
    HostName Sélectionnez mydemoserver.privatelink.mysql.database.azure.com.
    Nom d’utilisateur Saisissez le nom d’utilisateur sous la forme username@servername, fourni lors de la création de l’instance du serveur flexible Azure Database pour MySQL.
    Mot de passe Saisissez un mot de passe fourni lors de la création de l’instance du serveur flexible Azure Database pour MySQL.
  5. Sélectionnez Connecter.

  6. Parcourez les bases de données dans le menu de gauche.

  7. (Facultatif) Créez ou interrogez des informations à partir de la base de données du serveur flexible Azure Database pour MySQL.

  8. Fermez la connexion Bureau à distance sur myVm.

Nettoyer les ressources

Lorsque vous n’en avez plus besoin, vous pouvez utiliser az group delete pour supprimer le groupe de ressources, ainsi que toutes les ressources qu’il contient :

az group delete --name myResourceGroup --yes

Répertorier les sous-ressources pouvant faire l’objet d’une liaison privée (groupIds)

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

Répertorier les connexions de point de terminaison privé sur une ressource donnée

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

Approuver les connexions de point de terminaison privé sur une ressource donnée

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

Rejeter les connexions de point de terminaison privé sur une ressource donnée

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

Supprimer les connexions de point de terminaison privé sur une ressource donnée

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