Connexion privée à un registre de conteneurs Azure à l’aide d’Azure Private LinkConnect privately to an Azure container registry using Azure Private Link

Limitez l’accès à un registre en attribuant des adresses IP privées de réseau virtuel aux points de terminaison du registre et en utilisant Azure Private Link.Limit access to a registry by assigning virtual network private IP addresses to the registry endpoints and using Azure Private Link. Le trafic entre les clients du réseau virtuel et les points de terminaison privés du registre traverse le réseau virtuel et une liaison privée sur le réseau principal de Microsoft, ce qui élimine toute exposition sur l’Internet public.Network traffic between the clients on the virtual network and the registry's private endpoints traverses the virtual network and a private link on the Microsoft backbone network, eliminating exposure from the public internet. Azure Private Link permet également un accès privé au registre à partir d’un emplacement local par le biais d’un Peering privé Azure ExpressRoute ou d’une passerelle VPN.Private Link also enables private registry access from on-premises through Azure ExpressRoute private peering or a VPN gateway.

Vous pouvez configurer des paramètres DNS pour les points de terminaison privés du registre afin que les paramètres résolvent l’adresse IP privée allouée au registre.You can configure DNS settings for the registry's private endpoints, so that the settings resolve to the registry's allocated private IP address. Avec la configuration DNS, les clients et les services du réseau peuvent continuer à accéder au registre avec le nom de domaine complet du registre, tel que myregistry.azurecr.io.With DNS configuration, clients and services in the network can continue to access the registry at the registry's fully qualified domain name, such as myregistry.azurecr.io.

Cette fonctionnalité est disponible uniquement au niveau de service Premium de registre de conteneurs.This feature is available in the Premium container registry service tier. Actuellement, un maximum de dix points de terminaison privés peuvent être configurés pour un registre.Currently, a maximum of 10 private endpoints can be set up for a registry. Pour plus d’informations sur les niveaux de service et les limites de registre, consultez Niveaux de service Azure Container Registry.For information about registry service tiers and limits, see Azure Container Registry tiers.

Important

PrérequisPrerequisites

  • Pour utiliser les étapes Azure CLI décrites dans cet article, il est recommandé d’utiliser Azure CLI version 2.6.0 ou ultérieure.To use the Azure CLI steps in this article, Azure CLI version 2.6.0 or later is recommended. Si vous devez installer ou mettre à niveau, voir Installer Azure CLI.If you need to install or upgrade, see Install Azure CLI. Ou exécutez cela dans Azure Cloud Shell.Or run in Azure Cloud Shell.

  • Si vous ne disposez pas d’un registre de conteneurs, créez-en un (niveau Premium requis) et importez un exemple d’image publique comme mcr.microsoft.com/hello-world à partir de Microsoft Container Registry.If you don't already have a container registry, create one (Premium tier required) and import a sample public image such as mcr.microsoft.com/hello-world from Microsoft Container Registry. Par exemple, utilisez le portail Azure ou Azure CLI pour créer un registre.For example, use the Azure portal or the Azure CLI to create a registry.

  • Pour configurer l’accès au registre à l’aide d’une liaison privée dans un autre abonnement Azure, vous devez inscrire le fournisseur de ressources pour Azure Container Registry dans cet abonnement.To configure registry access using a private link in a different Azure subscription, you need to register the resource provider for Azure Container Registry in that subscription. Par exemple :For example:

    az account set --subscription <Name or ID of subscription of private link>
    
    az provider register --namespace Microsoft.ContainerRegistry
    

Les exemples Azure CLI fournis dans cet article utilisent les variables d’environnement suivantes.The Azure CLI examples in this article use the following environment variables. Remplacez les valeurs par celles appropriées pour votre environnement.Substitute values appropriate for your environment. Tous les exemples sont mis en forme pour l’interpréteur de commandes Bash :All examples are formatted for the Bash shell:

REGISTRY_NAME=<container-registry-name>
REGISTRY_LOCATION=<container-registry-location> # Azure region such as westeurope where registry created
RESOURCE_GROUP=<resource-group-name>
VM_NAME=<virtual-machine-name>

Créer une machine virtuelle compatible DockerCreate a Docker-enabled virtual machine

À des fins de test, utilisez une machine virtuelle Ubuntu compatible Docker pour accéder à un registre de conteneurs Azure.For test purposes, use a Docker-enabled Ubuntu VM to access an Azure container registry. Pour utiliser l’authentification Azure Active Directory auprès du registre, installez également l’interface de ligne de commande Azure sur la machine virtuelle.To use Azure Active Directory authentication to the registry, also install the Azure CLI on the VM. Si vous disposez déjà d’une machine virtuelle, ignorez cette étape de création.If you already have an Azure virtual machine, skip this creation step.

Vous pouvez utiliser le même groupe de ressources pour votre machine virtuelle et votre registre de conteneurs.You may use the same resource group for your virtual machine and your container registry. Cette configuration simplifie le nettoyage à la fin, mais n’est pas nécessaire.This setup simplifies clean-up at the end but isn't required. Si vous choisissez de créer un groupe de ressources distinct pour la machine virtuelle et le réseau virtuel, exécutez az group create.If you choose to create a separate resource group for the virtual machine and virtual network, run az group create. L’exemple suivant suppose que vous avez défini des variables d’environnement pour le nom du groupe de ressources et l’emplacement du Registre :The following example assumes you've set environment variables for the resource group name and registry location:

az group create --name $RESOURCE_GROUP --location $REGISTRY_LOCATION

À présent, déployez une machine virtuelle Azure Ubuntu par défaut avec az vm create.Now deploy a default Ubuntu Azure virtual machine with az vm create. L’exemple suivant crée une machine virtuelle nommée myDockerVM.The following example creates a VM named myDockerVM.

VM_NAME=myDockerVM

az vm create \
  --resource-group $RESOURCE_GROUP \
  --name $VM_NAME \
  --image UbuntuLTS \
  --admin-username azureuser \
  --generate-ssh-keys

Il faut quelques minutes pour que la machine virtuelle soit créée.It takes a few minutes for the VM to be created. Après l’exécution de la commande, notez la valeur de publicIpAddress qui s’affiche dans l’interface Azure CLI.When the command completes, take note of the publicIpAddress displayed by the Azure CLI. Utilisez cette adresse pour établir des connexions SSH avec la machine virtuelle.Use this address to make SSH connections to the VM.

Installer Docker sur la machine virtuelleInstall Docker on the VM

Établissez une connexion SSH avec la machine virtuelle dès qu’elle est en cours d’exécution.After the VM is running, make an SSH connection to the VM. Remplacez publicIpAddress par l’adresse IP publique de votre machine virtuelle.Replace publicIpAddress with the public IP address of your VM.

ssh azureuser@publicIpAddress

Exécutez les commandes suivantes pour installer Docker sur la machine virtuelle Ubuntu :Run the following commands to install Docker on the Ubuntu VM:

sudo apt-get update
sudo apt install docker.io -y

Après l’installation, exécutez la commande suivante pour vérifier que Docker s’exécute correctement sur la machine virtuelle :After installation, run the following command to verify that Docker is running properly on the VM:

sudo docker run -it hello-world

Sortie :Output:

Hello from Docker!
This message shows that your installation appears to be working correctly.
[...]

Installer l’interface de ligne de commande Microsoft AzureInstall the Azure CLI

Suivez les étapes de la section Installer Azure CLI avec apt pour installer Azure CLI sur votre machine virtuelle Ubuntu.Follow the steps in Install Azure CLI with apt to install the Azure CLI on your Ubuntu virtual machine. Par exemple :For example:

curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash

Quittez la connexion SSH.Exit the SSH connection.

Obtenir les noms de réseau et de sous-réseauGet network and subnet names

Si vous ne les avez pas déjà, vous aurez besoin des noms d’un réseau virtuel et d’un sous-réseau pour configurer une liaison privée.If you don't have them already, you'll need the names of a virtual network and subnet to set up a private link. Dans cet exemple, vous utilisez le même sous-réseau pour la machine virtuelle et le point de terminaison privé du registre.In this example, you use the same subnet for the VM and the registry's private endpoint. Toutefois, dans de nombreux scénarios, il convient de configurer le point de terminaison dans un sous-réseau distinct.However, in many scenarios you would set up the endpoint in a separate subnet.

Quand vous créez une machine virtuelle, Azure crée par défaut un réseau virtuel dans le même groupe de ressources.When you create a VM, Azure by default creates a virtual network in the same resource group. Le nom du réseau virtuel est basé sur le nom de la machine virtuelle.The name of the virtual network is based on the name of the virtual machine. Par exemple, si vous nommez votre machine virtuelle myDockerVM, le nom de réseau virtuel par défaut est myDockerVMVNET, avec un sous-réseau nommé myDockerVMSubnet.For example, if you name your virtual machine myDockerVM, the default virtual network name is myDockerVMVNET, with a subnet named myDockerVMSubnet. Définissez ces valeurs dans les variables d’environnement en exécutant la commande az network vnet list :Set these values in environment variables by running the az network vnet list command:

NETWORK_NAME=$(az network vnet list \
  --resource-group $RESOURCE_GROUP \
  --query '[].{Name: name}' --output tsv)

SUBNET_NAME=$(az network vnet list \
  --resource-group $RESOURCE_GROUP \
  --query '[].{Subnet: subnets[0].name}' --output tsv)

echo NETWORK_NAME=$NETWORK_NAME
echo SUBNET_NAME=$SUBNET_NAME

Désactiver les stratégies réseau dans le sous-réseauDisable network policies in subnet

Désactivez les stratégies réseau telles que les groupes de sécurité réseau dans le sous-réseau pour le point de terminaison privé.Disable network policies such as network security groups in the subnet for the private endpoint. Mettez à jour votre configuration de sous-réseau avec az network vnet subnet update :Update your subnet configuration with az network vnet subnet update:

az network vnet subnet update \
 --name $SUBNET_NAME \
 --vnet-name $NETWORK_NAME \
 --resource-group $RESOURCE_GROUP \
 --disable-private-endpoint-network-policies

Configurer la zone DNS privéeConfigure the private DNS zone

Créez une zone DNS privée pour le domaine du registre de conteneurs Azure privé.Create a private DNS zone for the private Azure container registry domain. Dans les étapes ultérieures, vous allez créer des enregistrements DNS pour votre domaine de registre dans cette zone DNS.In later steps, you create DNS records for your registry domain in this DNS zone.

Pour utiliser une zone privée afin de remplacer la résolution DNS par défaut pour votre registre de conteneurs Azure, la zone doit être nommée privatelink.azurecr.io.To use a private zone to override the default DNS resolution for your Azure container registry, the zone must be named privatelink.azurecr.io. Exécutez la commande az network private-dns zone create suivante pour créer la zone privée :Run the following az network private-dns zone create command to create the private zone:

az network private-dns zone create \
  --resource-group $RESOURCE_GROUP \
  --name "privatelink.azurecr.io"

Exécutez az network private-dns link vnet create pour associer votre zone privée au réseau virtuel.Run az network private-dns link vnet create to associate your private zone with the virtual network. Cet exemple crée un lien appelé myDNSLink.This example creates a link called myDNSLink.

az network private-dns link vnet create \
  --resource-group $RESOURCE_GROUP \
  --zone-name "privatelink.azurecr.io" \
  --name MyDNSLink \
  --virtual-network $NETWORK_NAME \
  --registration-enabled false

Créer un point de terminaison de registre privéCreate a private registry endpoint

Dans cette section, créez le point de terminaison privé du registre dans le réseau virtuel.In this section, create the registry's private endpoint in the virtual network. Tout d’abord, obtenez l’ID de ressource de votre registre :First, get the resource ID of your registry:

REGISTRY_ID=$(az acr show --name $REGISTRY_NAME \
  --query 'id' --output tsv)

Exécutez la commande az network private-endpoint create pour créer le point de terminaison privé du registre.Run the az network private-endpoint create command to create the registry's private endpoint.

L’exemple suivant crée le point de terminaison myPrivateEndpoint et la connexion de service myConnection.The following example creates the endpoint myPrivateEndpoint and service connection myConnection. Pour spécifier une ressource de registre de conteneurs pour le point de terminaison, transmettez --group-ids registry :To specify a container registry resource for the endpoint, pass --group-ids registry:

az network private-endpoint create \
    --name myPrivateEndpoint \
    --resource-group $RESOURCE_GROUP \
    --vnet-name $NETWORK_NAME \
    --subnet $SUBNET_NAME \
    --private-connection-resource-id $REGISTRY_ID \
    --group-ids registry \
    --connection-name myConnection

Obtenir des adresses IP privéesGet private IP addresses

Exécutez az network private-endpoint show pour interroger le point de terminaison afin d’obtenir l’ID d’interface réseau :Run az network private-endpoint show to query the endpoint for the network interface ID:

NETWORK_INTERFACE_ID=$(az network private-endpoint show \
  --name myPrivateEndpoint \
  --resource-group $RESOURCE_GROUP \
  --query 'networkInterfaces[0].id' \
  --output tsv)

Deux adresses IP privées sont associées à l’interface réseau dans cet exemple pour le registre de conteneurs : une pour le registre proprement dit et l’autre pour le point de terminaison de données du registre.Associated with the network interface in this example are two private IP addresses for the container registry: one for the registry itself, and one for the registry's data endpoint. Les commandes az resource show suivantes obtiennent les adresses IP privées pour le registre de conteneurs et le point de terminaison de données du registre :The following az resource show commands get the private IP addresses for the container registry and the registry's data endpoint:

PRIVATE_IP=$(az resource show \
  --ids $NETWORK_INTERFACE_ID \
  --api-version 2019-04-01 \
  --query 'properties.ipConfigurations[1].properties.privateIPAddress' \
  --output tsv)

DATA_ENDPOINT_PRIVATE_IP=$(az resource show \
  --ids $NETWORK_INTERFACE_ID \
  --api-version 2019-04-01 \
  --query 'properties.ipConfigurations[0].properties.privateIPAddress' \
  --output tsv)

Notes

Si votre registre est géorépliqué, interrogez le point de terminaison de données supplémentaire pour chaque réplica du registre.If your registry is geo-replicated, query for the additional data endpoint for each registry replica.

Créer des enregistrements DNS dans la zone privéeCreate DNS records in the private zone

Les commandes suivantes créent des enregistrements DNS dans la zone privée pour le point de terminaison du registre et son point de terminaison de données.The following commands create DNS records in the private zone for the registry endpoint and its data endpoint. Par exemple, si vous avez un registre nommé myregistry dans la région westeurope, les noms des points de terminaison sont myregistry.azurecr.io et myregistry.westeurope.data.azurecr.io.For example, if you have a registry named myregistry in the westeurope region, the endpoint names are myregistry.azurecr.io and myregistry.westeurope.data.azurecr.io.

Notes

Si votre registre est géorépliqué, créez des enregistrements DNS supplémentaires pour l’adresse IP du point de terminaison de données de chaque réplica.If your registry is geo-replicated, create additonal DNS records for each replica's data endpoint IP.

Tout d’abord, exécutez az network private-dns record-set a create pour créer des jeux d’enregistrements A vides pour le point de terminaison du registre et le point de terminaison de données :First run az network private-dns record-set a create to create empty A record sets for the registry endpoint and data endpoint:

az network private-dns record-set a create \
  --name $REGISTRY_NAME \
  --zone-name privatelink.azurecr.io \
  --resource-group $RESOURCE_GROUP

# Specify registry region in data endpoint name
az network private-dns record-set a create \
  --name ${REGISTRY_NAME}.${REGISTRY_LOCATION}.data \
  --zone-name privatelink.azurecr.io \
  --resource-group $RESOURCE_GROUP

Exécutez az network private-dns record-set a add-record pour créer les enregistrements A pour le point de terminaison du registre et le point de terminaison de données :Run the az network private-dns record-set a add-record command to create the A records for the registry endpoint and data endpoint:

az network private-dns record-set a add-record \
  --record-set-name $REGISTRY_NAME \
  --zone-name privatelink.azurecr.io \
  --resource-group $RESOURCE_GROUP \
  --ipv4-address $PRIVATE_IP

# Specify registry region in data endpoint name
az network private-dns record-set a add-record \
  --record-set-name ${REGISTRY_NAME}.${REGISTRY_LOCATION}.data \
  --zone-name privatelink.azurecr.io \
  --resource-group $RESOURCE_GROUP \
  --ipv4-address $DATA_ENDPOINT_PRIVATE_IP

La liaison privée est désormais configurée et prête à être utilisée.The private link is now configured and ready for use.

Configurez un lien privé quand vous créez un registre ou ajoutez un lien privé à un registre existant.Set up a private link when you create a registry, or add a private link to an existing registry. Les étapes suivantes supposent que vous disposez déjà d’un réseau virtuel et d’un sous-réseau configurés avec une machine virtuelle à des fins de test.The following steps assume you already have a virtual network and subnet set up with a VM for testing. Vous pouvez également créer un réseau virtuel et un sous-réseau.You can also create a new virtual network and subnet.

Créer un point de terminaison privé (nouveau registre)Create a private endpoint - new registry

  1. Quand vous créez un registre dans le portail, sous l’onglet De base, dans SKU, sélectionnez Premium.When creating a registry in the portal, on the Basics tab, in SKU, select Premium.

  2. Sélectionnez l’onglet Réseau.Select the Networking tab.

  3. Dans Connectivité réseau, sélectionnez Point de terminaison privé > + Ajouter.In Network connectivity, select Private endpoint > + Add.

  4. Entrez ou sélectionnez les informations suivantes :Enter or select the following information:

    ParamètreSetting ValeurValue
    AbonnementSubscription Sélectionnez votre abonnement.Select your subscription.
    Resource groupResource group Entrez le nom d’un groupe existant ou créez-en un nouveau.Enter the name of an existing group or create a new one.
    NomName Entrez un nom unique.Enter a unique name.
    Sous-ressourceSubresource Sélectionnez le registre.Select registry
    Mise en réseauNetworking
    Réseau virtuelVirtual network Sélectionnez le réseau virtuel où votre machine virtuelle est déployée, tel que myDockerVMVNET.Select the virtual network where your virtual machine is deployed, such as myDockerVMVNET.
    SubnetSubnet Sélectionnez un sous-réseau, tel que myDockerVMSubnet, où votre machine virtuelle est déployée.Select a subnet, such as myDockerVMSubnet where your virtual machine is deployed.
    Intégration à un DNS privéPrivate DNS Integration
    Intégrer à une zone DNS privéeIntegrate with private DNS zone Sélectionnez Oui.Select Yes.
    Zone DNS privéePrivate DNS Zone Sélectionnez (Nouveau) privatelink.azurecr.ioSelect (New) privatelink.azurecr.io
  5. Configurez les paramètres de registre restants, puis sélectionnez Vérifier + créer.Configure the remaining registry settings, and then select Review + Create.

Créer un registre avec un point de terminaison privé

Créer un point de terminaison privé (registre existant)Create a private endpoint - existing registry

  1. Dans le portail, accédez à votre registre de conteneurs.In the portal, navigate to your container registry.

  2. Sous Paramètres, sélectionnez Mise en réseau.Under Settings, select Networking.

  3. Sous l’onglet Points de terminaison privés, sélectionnez + Point de terminaison privé.On the Private endpoints tab, select + Private endpoint.

  4. Sous l’onglet Informations de base, entrez ou sélectionnez les informations suivantes :In the Basics tab, enter or select the following information:

    ParamètreSetting ValeurValue
    Détails du projetProject details
    AbonnementSubscription Sélectionnez votre abonnement.Select your subscription.
    Resource groupResource group Entrez le nom d’un groupe existant ou créez-en un nouveau.Enter the name of an existing group or create a new one.
    Détails de l’instanceInstance details
    NomName Entrez un nom.Enter a name.
    RégionRegion Sélectionnez une région.Select a region.
  5. Sélectionnez Suivant : Ressource.Select Next: Resource.

  6. Entrez ou sélectionnez les informations suivantes :Enter or select the following information:

    ParamètreSetting ValeurValue
    Méthode de connexionConnection method Sélectionnez Se connecter à une ressource Azure dans mon répertoire.Select Connect to an Azure resource in my directory.
    AbonnementSubscription Sélectionnez votre abonnement.Select your subscription.
    Type de ressourceResource type Sélectionnez Microsoft.ContainerRegistry/registries.Select Microsoft.ContainerRegistry/registries.
    RessourceResource Sélectionnez le nom de votre registre.Select the name of your registry
    Sous-ressource cibleTarget subresource Sélectionnez le registre.Select registry
  7. Sélectionnez Suivant : Configuration.Select Next: Configuration.

  8. Entrez ou sélectionnez les informations :Enter or select the information:

    ParamètreSetting ValeurValue
    Mise en réseauNetworking
    Réseau virtuelVirtual network Sélectionnez le réseau virtuel où votre machine virtuelle est déployée, tel que myDockerVMVNET.Select the virtual network where your virtual machine is deployed, such as myDockerVMVNET.
    SubnetSubnet Sélectionnez un sous-réseau, tel que myDockerVMSubnet, où votre machine virtuelle est déployée.Select a subnet, such as myDockerVMSubnet where your virtual machine is deployed.
    Intégration à un DNS privéPrivate DNS Integration
    Intégrer à une zone DNS privéeIntegrate with private DNS zone Sélectionnez Oui.Select Yes.
    Zone DNS privéePrivate DNS Zone Sélectionnez (Nouveau) privatelink.azurecr.ioSelect (New) privatelink.azurecr.io
  9. Sélectionnez Revoir + créer.Select Review + create. Vous êtes redirigé vers la page Vérifier + créer où Azure valide votre configuration.You're taken to the Review + create page where Azure validates your configuration.

  10. Lorsque le message Validation passed (Validation réussie) apparaît, sélectionnez Créer.When you see the Validation passed message, select Create.

Une fois le point de terminaison privé créé, les paramètres DNS dans la zone privée apparaissent dans la page Points de terminaison privés dans le portail :After the private endpoint is created, DNS settings in the private zone appear on the Private endpoints page in the portal:

  1. Dans le portail, accédez à votre registre de conteneurs et sélectionnez Paramètres > Mise en réseau.In the portal, navigate to your container registry and select Settings > Networking.
  2. Sous l’onglet Points de terminaison privés, sélectionnez le point de terminaison privé que vous avez créé.On the Private endpoints tab, select the private endpoint you created.
  3. Dans la page Vue d’ensemble, passez en revue les paramètres de la liaison et les paramètres DNS personnalisés.On the Overview page, review the link settings and custom DNS settings.

Paramètres DNS du point de terminaison

Votre liaison privée est désormais configurée et prête à être utilisée.Your private link is now configured and ready for use.

Désactiver l’accès publicDisable public access

Pour de nombreux scénarios, désactivez l’accès au registre à partir de réseaux publics.For many scenarios, disable registry access from public networks. Cette configuration empêche les clients situés en dehors du réseau virtuel d’atteindre les points de terminaison du registre.This configuration prevents clients outside the virtual network from reaching the registry endpoints.

Désactiver l’accès public (CLI)Disable public access - CLI

Pour désactiver l’accès public à l’aide d’Azure CLI, exécutez az acr update et définissez --public-network-enabled avec false.To disable public access using the Azure CLI, run az acr update and set --public-network-enabled to false.

Notes

L’argument public-network-enabled nécessite Azure CLI 2.6.0 ou ultérieur.The public-network-enabled argument requires Azure CLI 2.6.0 or later.

az acr update --name $REGISTRY_NAME --public-network-enabled false

Désactiver l’accès public (portail)Disable public access - portal

  1. Dans le portail, accédez à votre registre de conteneurs et sélectionnez Paramètres > Mise en réseau.In the portal, navigate to your container registry and select Settings > Networking.
  2. Sous l’onglet Accès public, dans Autoriser l’accès au réseau public, sélectionnez Désactivé.On the Public access tab, in Allow public network access, select Disabled. Ensuite, sélectionnez Enregistrer.Then select Save.

Vous devez vérifier que les ressources contenues dans le sous-réseau du point de terminaison privé se connectent à votre registre via une adresse IP privée, et qu’elles sont intégrées à la zone DNS privée appropriée.You should validate that the resources within the subnet of the private endpoint connect to your registry over a private IP address, and have the correct private DNS zone integration.

Pour valider la connexion de liaison privée, utilisez SSH sur la machine virtuelle que vous avez configurée dans le réseau virtuel.To validate the private link connection, SSH to the virtual machine you set up in the virtual network.

Exécutez un utilitaire tel que nslookup ou dig pour rechercher l’adresse IP de votre registre via la liaison privée.Run a utility such as nslookup or dig to look up the IP address of your registry over the private link. Par exemple :For example:

dig $REGISTRY_NAME.azurecr.io

L’exemple de sortie montre l’adresse IP du registre dans l’espace d’adressage du sous-réseau :Example output shows the registry's IP address in the address space of the subnet:

[...]
; <<>> DiG 9.11.3-1ubuntu1.13-Ubuntu <<>> myregistry.azurecr.io
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 52155
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;myregistry.azurecr.io.         IN      A

;; ANSWER SECTION:
myregistry.azurecr.io.  1783    IN      CNAME   myregistry.privatelink.azurecr.io.
myregistry.privatelink.azurecr.io. 10 IN A      10.0.0.7

[...]

Comparez ce résultat avec l’adresse IP publique dans la sortie dig pour le même registre via un point de terminaison public :Compare this result with the public IP address in dig output for the same registry over a public endpoint:

[...]
;; ANSWER SECTION:
myregistry.azurecr.io.  2881    IN  CNAME   myregistry.privatelink.azurecr.io.
myregistry.privatelink.azurecr.io. 2881 IN CNAME xxxx.xx.azcr.io.
xxxx.xx.azcr.io.    300 IN  CNAME   xxxx-xxx-reg.trafficmanager.net.
xxxx-xxx-reg.trafficmanager.net. 300 IN CNAME   xxxx.westeurope.cloudapp.azure.com.
xxxx.westeurope.cloudapp.azure.com. 10  IN A 20.45.122.144

[...]

Vérifiez également que vous pouvez effectuer des opérations de registre à partir de la machine virtuelle dans le sous-réseau.Also verify that you can perform registry operations from the virtual machine in the subnet. Établissez une connexion SSH à votre machine virtuelle et exécutez az acr login pour vous connecter à votre registre.Make an SSH connection to your virtual machine, and run az acr login to login to your registry. Selon la configuration de votre machine virtuelle, vous pouvez être amené à préfixer les commandes suivantes avec sudo.Depending on your VM configuration, you might need to prefix the following commands with sudo.

az acr login --name $REGISTRY_NAME

Effectuez des opérations de registre telles que docker pull pour extraire (pull) un exemple d’image du registre.Perform registry operations such as docker pull to pull a sample image from the registry. Remplacez hello-world:v1 par une image et une balise appropriées pour votre registre, précédées du nom du serveur de connexion du registre (entièrement en minuscules) :Replace hello-world:v1 with an image and tag appropriate for your registry, prefixed with the registry login server name (all lowercase):

docker pull myregistry.azurecr.io/hello-world:v1

Docker tire (pull) correctement l’image sur la machine virtuelle.Docker successfully pulls the image to the VM.

Gérer les connexions de point de terminaison privéManage private endpoint connections

Gérez les connexions de point de terminaison privé d’un registre à l’aide du portail Azure ou en utilisant des commandes dans le groupe de commandes az acr private-endpoint-connection.Manage a registry's private endpoint connections using the Azure portal, or by using commands in the az acr private-endpoint-connection command group. Ces opérations incluent l’approbation, la suppression, le fait de lister, le rejet et l’affichage des détails des connexions de point de terminaison privé d’un registre.Operations include approve, delete, list, reject, or show details of a registry's private endpoint connections.

Par exemple, pour lister les connexions de point de terminaison privé d’un registre, exécutez la commande az acr private-endpoint-connection list.For example, to list the private endpoint connections of a registry, run the az acr private-endpoint-connection list command. Par exemple :For example:

az acr private-endpoint-connection list \
  --registry-name $REGISTRY_NAME 

Quand vous configurez une connexion de point de terminaison privé via la procédure décrite dans cet article, le registre accepte automatiquement les connexions à partir des clients et des services qui ont des autorisations Azure RBAC sur le registre.When you set up a private endpoint connection using the steps in this article, the registry automatically accepts connections from clients and services that have Azure RBAC permissions on the registry. Vous pouvez configurer le point de terminaison pour exiger l’approbation manuelle des connexions.You can set up the endpoint to require manual approval of connections. Pour obtenir des informations sur l’approbation et le rejet des connexions de point de terminaison privé, consultez Gérer une connexion de point de terminaison privé.For information about how to approve and reject private endpoint connections, see Manage a Private Endpoint Connection.

Ajouter des enregistrements de zone pour les réplicasAdd zone records for replicas

Comme cet article l’indique, quand vous ajoutez une connexion de point de terminaison privé à un registre, vous créez des enregistrements DNS dans la zone privatelink.azurecr.io pour le registre et ses points de terminaison de données dans les régions où le registre est répliqué.As shown in this article, when you add a private endpoint connection to a registry, you create DNS records in the privatelink.azurecr.io zone for the registry and its data endpoints in the regions where the registry is replicated.

Si vous ajoutez par la suite un nouveau réplica, vous devez ajouter manuellement un nouvel enregistrement de zone pour le point de terminaison de données dans cette région.If you later add a new replica, you need to manually add a new zone record for the data endpoint in that region. Par exemple, si vous créez un réplica myregistry dans l’emplacement northeurope, ajoutez un enregistrement de zone pour myregistry.northeurope.data.azurecr.io.For example, if you create a replica of myregistry in the northeurope location, add a zone record for myregistry.northeurope.data.azurecr.io. Pour connaître les étapes à suivre, consultez Créer des enregistrements DNS dans la zone privée dans cet article.For steps, see Create DNS records in the private zone in this article.

Options de configuration DNSDNS configuration options

Le point de terminaison privé de cet exemple s’intègre à une zone DNS privée associée à un réseau virtuel de base.The private endpoint in this example integrates with a private DNS zone associated with a basic virtual network. Cette configuration utilise directement le service DNS fourni par Azure pour résoudre le nom de domaine complet public du registre en son adresse IP privée dans le réseau virtuel.This setup uses the Azure-provided DNS service directly to resolve the registry's public FQDN to its private IP address in the virtual network.

La liaison privée prend en charge des scénarios de configuration DNS supplémentaires qui utilisent la zone privée, y compris des solutions DNS personnalisées.Private link supports additional DNS configuration scenarios that use the private zone, including with custom DNS solutions. Par exemple, vous pouvez avoir une solution DNS personnalisée déployée dans le réseau virtuel ou localement dans un réseau que vous connectez au réseau virtuel à l’aide d’une passerelle VPN ou d’Azure ExpressRoute.For example, you might have a custom DNS solution deployed in the virtual network, or on-premises in a network you connect to the virtual network using a VPN gateway or Azure ExpressRoute.

Pour résoudre le nom de domaine complet public du registre en adresse IP privée dans ces scénarios, vous devez configurer un redirecteur au niveau du serveur vers le service DNS fourni par Azure (168.63.129.16).To resolve the registry's public FQDN to the private IP address in these scenarios, you need to configure a server-level forwarder to the Azure DNS service (168.63.129.16). Les options et les étapes exactes de configuration dépendent de vos réseaux et DNS existants.Exact configuration options and steps depend on your existing networks and DNS. Pour obtenir des exemples, consultez Configuration DNS des points de terminaison privés Azure.For examples, see Azure Private Endpoint DNS configuration.

Important

Si, pour la haute disponibilité, vous avez créé des points de terminaison privés dans plusieurs régions, nous vous recommandons d’utiliser un groupe de ressources distinct dans chaque région et d’y placer le réseau virtuel et la zone DNS privée associés.If for high availability you created private endpoints in several regions, we recommend that you use a separate resource group in each region and place the virtual network and the associated private DNS zone in it. Cette configuration permet également d’éviter une résolution DNS imprévisible causée par le partage de la même zone DNS privée.This configuration also prevents unpredictable DNS resolution caused by sharing the same private DNS zone.

Nettoyer les ressourcesClean up resources

Si vous avez créé toutes les ressources Azure dans le même groupe de ressources et que vous n’en avez plus besoin, vous pouvez éventuellement supprimer les ressources à l’aide d’une seule commande az group delete :If you created all the Azure resources in the same resource group and no longer need them, you can optionally delete the resources by using a single az group delete command:

az group delete --name $RESOURCE_GROUP

Pour nettoyer vos ressources dans le portail, accédez à votre groupe de ressources.To clean up your resources in the portal, navigate to your resource group. Une fois le groupe de ressources chargé, cliquez sur Supprimer le groupe de ressources pour supprimer le groupe de ressources et les ressources à cet endroit.Once the resource group is loaded, click on Delete resource group to remove the resource group and the resources stored there.

Étapes suivantesNext steps