Tárolóregisztrációs adatbázishoz való hozzáférés korlátozása szolgáltatásvégpont használatával egy Azure-beli virtuális hálózaton

Az Azure Virtual Network biztonságos, privát hálózatkezelést biztosít az Azure- és a helyszíni erőforrások számára. A szolgáltatásvégpont lehetővé teszi a tárolóregisztrációs adatbázis nyilvános IP-címének védelmét csak a virtuális hálózat számára. Ez a végpont optimális útvonalat biztosít az erőforrás felé az Azure gerinchálózatán keresztül. A rendszer a virtuális hálózat és az alhálózat identitásait is minden kéréssel továbbítja.

Ez a cikk bemutatja, hogyan konfigurálhat egy tárolóregisztrációs szolgáltatásvégpontot (előzetes verzió) egy virtuális hálózaton.

Minden beállításjegyzék legfeljebb 100 virtuális hálózati szabályt támogat.

Fontos

Az Azure Container Registry mostantól támogatja az Azure Private Linket, amely lehetővé teszi a virtuális hálózat privát végpontjainak beállításjegyzékbe helyezését. A privát végpontok a virtuális hálózaton belülről érhetők el, privát IP-címek használatával. A legtöbb hálózati forgatókönyvben a szolgáltatásvégpontok helyett privát végpontok használatát javasoljuk. A tárolóregisztrációs adatbázis nem támogatja a privát kapcsolat és a szolgáltatásvégpont virtuális hálózatból konfigurált funkcióinak engedélyezését. Ezért azt javasoljuk, hogy futtassa a listát, és szükség szerint távolítsa el a hálózati szabályokat .

A beállításjegyzék-szolgáltatás végpontjának konfigurálása a Prémium szintű tárolóregisztrációs szolgáltatási szinten érhető el. A beállításjegyzék szolgáltatási szintjeiről és korlátairól további információt az Azure Container Registry szolgáltatásszintjeiben talál.

Előzetes verzióra vonatkozó korlátozások

  • Az Azure Container Registry szolgáltatásvégpontjainak jövőbeli fejlesztése jelenleg nem tervezett. Javasoljuk, hogy inkább privát végpontokat használjunk.
  • Az Azure Portallal nem konfigurálhat szolgáltatásvégpontokat egy beállításjegyzékben.
  • Csak egy Azure Kubernetes Service-fürt vagy Azure-beli virtuális gép használható gazdagépként egy tárolóregisztrációs adatbázis szolgáltatásvégponttal való eléréséhez. Más Azure-szolgáltatások, például az Azure Container Instances nem támogatottak.
  • Az Azure Container Registry szolgáltatásvégpontjai nem támogatottak az Azure US Government felhőben vagy a 21Vianet-felhő által üzemeltetett Microsoft Azure-ban.

Fontos

Előfordulhat, hogy egyes funkciók nem érhetők el, vagy több konfigurációt igényelnek egy tárolóregisztrációs adatbázisban, amely korlátozza a privát végpontokhoz, a kijelölt alhálózatokhoz vagy IP-címekhez való hozzáférést.

  • Ha egy beállításjegyzékhez való nyilvános hálózati hozzáférés le van tiltva, bizonyos megbízható szolgáltatások , például az Azure Security Center beállításjegyzék-hozzáféréséhez engedélyezni kell a hálózati beállításokat a hálózati szabályok megkerüléséhez.
  • Ha a nyilvános hálózati hozzáférés le van tiltva, bizonyos Azure-szolgáltatások, köztük az Azure DevOps Services példányai jelenleg nem férnek hozzá a tárolóregisztrációs adatbázishoz.
  • A privát végpontok jelenleg nem támogatottak az Azure DevOps által felügyelt ügynökökkel. Egy saját üzemeltetésű ügynököt kell használnia, amely hálózati látóvonalat használ a privát végponthoz.
  • Ha a beállításjegyzék jóváhagyott privát végponttal rendelkezik, és a nyilvános hálózati hozzáférés le van tiltva, az adattárak és címkék nem adhatók meg a virtuális hálózaton kívül az Azure Portal, az Azure CLI vagy más eszközök használatával.

Előfeltételek

  • A cikkben szereplő Azure CLI-lépések használatához az Azure CLI 2.0.58-es vagy újabb verziójára van szükség. Ha telepíteni vagy frissíteni szeretne: Az Azure CLI telepítése.

  • Ha még nem rendelkezik tárolóregisztrációs adatbázissal, hozzon létre egyet (prémium szintű szükséges), és küldjön le egy mintarendszerképet, például hello-world a Docker Hubról. Például az Azure Portal vagy az Azure CLI használatával hozzon létre egy beállításjegyzéket.

  • Ha egy másik Azure-előfizetés szolgáltatásvégpontjának használatával szeretné korlátozni a beállításjegyzék-hozzáférést, regisztrálja az Azure Container Registry erőforrás-szolgáltatóját az előfizetésben. Például:

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

Docker-kompatibilis virtuális gép létrehozása

Tesztelési célokra használjon Docker-kompatibilis Ubuntu virtuális gépet egy Azure-tárolóregisztrációs adatbázis eléréséhez. Ha Microsoft Entra-hitelesítést szeretne használni a beállításjegyzékben, telepítse az Azure CLI-t is a virtuális gépen. Ha már rendelkezik Azure-beli virtuális géppel, hagyja ki ezt a létrehozási lépést.

Használhatja ugyanazt az erőforráscsoportot a virtuális géphez és a tárolóregisztrációs adatbázishoz. Ez a beállítás leegyszerűsíti a törlést a végén, de nem szükséges. Ha külön erőforráscsoportot hoz létre a virtuális géphez és a virtuális hálózathoz, futtassa az az group create parancsot. Az alábbi példa feltételezi, hogy beállította az erőforráscsoport nevének és a beállításjegyzék helyének környezeti változóit:

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

Most helyezzen üzembe egy alapértelmezett Ubuntu Azure-beli virtuális gépet az az vm create használatával. Az alábbi példa létrehoz egy myDockerVM nevű virtuális gépet.

VM_NAME=myDockerVM

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

A virtuális gép létrehozása néhány percig tart. Amikor a parancs befejeződik, jegyezze fel az publicIpAddress Azure CLI által megjelenített elemet. Ezzel a címmel SSH-kapcsolatokat létesíthet a virtuális géppel.

A Docker telepítése a virtuális gépen

A virtuális gép futtatása után hozzon létre egy SSH-kapcsolatot a virtuális géppel. Cserélje le a publicIpAddress elemet a virtuális gép nyilvános IP-címére.

ssh azureuser@publicIpAddress

Futtassa a következő parancsokat a Docker Ubuntu virtuális gépen való telepítéséhez:

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

A telepítés után futtassa a következő parancsot annak ellenőrzéséhez, hogy a Docker megfelelően fut-e a virtuális gépen:

sudo docker run -it hello-world

Kimenet:

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

Az Azure CLI összetevő telepítése

Az Azure CLI telepítésének lépéseit követve telepítheti az Azure CLI-t az Ubuntu virtuális gépére. Például:

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

Lépjen ki az SSH-kapcsolatból.

A beállításjegyzék hálózati hozzáférésének konfigurálása

Ebben a szakaszban konfigurálja a tárolóregisztrációs adatbázist úgy, hogy engedélyezze a hozzáférést egy Azure-beli virtuális hálózat alhálózatáról. A lépések az Azure CLI használatával érhetők el.

Szolgáltatásvégpont hozzáadása alhálózathoz

Virtuális gép létrehozásakor az Azure alapértelmezés szerint létrehoz egy virtuális hálózatot ugyanabban az erőforráscsoportban. A virtuális hálózat neve a virtuális gép nevén alapul. Ha például myDockerVM nevet ad a virtuális gépnek, az alapértelmezett virtuális hálózat neve myDockerVMVNET, és egy myDockerVMSubnet nevű alhálózat. Ezt az az network vnet list paranccsal ellenőrizheti:

az network vnet list \
  --resource-group myResourceGroup \
  --query "[].{Name: name, Subnet: subnets[0].name}"

Kimenet:

[
  {
    "Name": "myDockerVMVNET",
    "Subnet": "myDockerVMSubnet"
  }
]

Az az network vnet subnet update paranccsal adjon hozzá egy Microsoft.ContainerRegistry szolgáltatásvégpontot az alhálózathoz. Cserélje le a virtuális hálózat és alhálózat nevét a következő parancsra:

az network vnet subnet update \
  --name myDockerVMSubnet \
  --vnet-name myDockerVMVNET \
  --resource-group myResourceGroup \
  --service-endpoints Microsoft.ContainerRegistry

Az az network vnet subnet show paranccsal kérje le az alhálózat erőforrás-azonosítóját. Erre egy későbbi lépésben szüksége lesz egy hálózati hozzáférési szabály konfigurálásához.

az network vnet subnet show \
  --name myDockerVMSubnet \
  --vnet-name myDockerVMVNET \
  --resource-group myResourceGroup \
  --query "id"
  --output tsv

Kimenet:

/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myDockerVMVNET/subnets/myDockerVMSubnet

A beállításjegyzék alapértelmezett hálózati hozzáférésének módosítása

Az Azure Container Registry alapértelmezés szerint lehetővé teszi a hálózati gazdagépek közötti kapcsolatokat. A kijelölt hálózathoz való hozzáférés korlátozásához módosítsa az alapértelmezett műveletet a hozzáférés megtagadásához. Cserélje le a beállításjegyzék nevét az alábbi az acr update parancsra:

az acr update --name myContainerRegistry --default-action Deny

Hálózati szabály hozzáadása a beállításjegyzékhez

Az az acr network-rule add paranccsal adjon hozzá egy hálózati szabályt a beállításjegyzékhez, amely lehetővé teszi a hozzáférést a virtuális gép alhálózatáról. Cserélje le a tárolóregisztrációs adatbázis nevét és az alhálózat erőforrás-azonosítóját a következő parancsban:

az acr network-rule add \
  --name mycontainerregistry \
  --subnet <subnet-resource-id>

A beállításjegyzékhez való hozzáférés ellenőrzése

A konfiguráció frissítésére való várakozás után ellenőrizze, hogy a virtuális gép hozzáfér-e a tárolóregisztrációs adatbázishoz. Hozzon létre egy SSH-kapcsolatot a virtuális géppel, és futtassa az az acr bejelentkezési parancsot a regisztrációs adatbázisba való bejelentkezéshez.

az acr login --name mycontainerregistry

A beállításjegyzék műveleteit végrehajthatja, például futtatással docker pull lekérhet egy mintarendszerképet a beállításjegyzékből. Helyettesítse be a beállításjegyzéknek megfelelő rendszerképet és címkeértéket a beállításjegyzék bejelentkezési kiszolgálójának nevével (mind kisbetűvel):

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

A Docker sikeresen lekéri a rendszerképet a virtuális gépre.

Ez a példa bemutatja, hogy a privát tárolóregisztrációs adatbázishoz a hálózati hozzáférési szabályon keresztül férhet hozzá. A beállításjegyzék azonban nem érhető el olyan bejelentkezési gazdagépről, amelyen nincs hálózati hozzáférési szabály konfigurálva. Ha egy másik gazdagépről próbál bejelentkezni a parancs vagy docker login parancs az acr login használatával, a kimenet a következőhöz hasonló:

Error response from daemon: login attempt to https://xxxxxxx.azurecr.io/v2/ failed with status: 403 Forbidden

Alapértelmezett beállításjegyzék-hozzáférés visszaállítása

Ha alapértelmezés szerint vissza szeretné állítani a beállításjegyzéket a hozzáférés engedélyezéséhez, távolítsa el a konfigurált hálózati szabályokat. Ezután állítsa be az alapértelmezett műveletet a hozzáférés engedélyezéséhez.

Hálózati szabályok eltávolítása

A beállításjegyzékhez konfigurált hálózati szabályok listájának megtekintéséhez futtassa az alábbi az acr network-rule list parancsot:

az acr network-rule list --name mycontainerregistry 

Minden konfigurált szabályhoz futtassa az az acr network-rule remove parancsot az eltávolításához. Például:

# Remove a rule that allows access for a subnet. Substitute the subnet resource ID.

az acr network-rule remove \
  --name mycontainerregistry \
  --subnet /subscriptions/ \
  xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myDockerVMVNET/subnets/myDockerVMSubnet

Hozzáférés engedélyezése

Cserélje le a beállításjegyzék nevét az alábbi az acr update parancsra:

az acr update --name myContainerRegistry --default-action Allow

Clean up resources

Ha az összes Azure-erőforrást ugyanabban az erőforráscsoportban hozta létre, és már nincs rájuk szüksége, törölheti az erőforrásokat egyetlen az group delete paranccsal:

az group delete --name myResourceGroup

Következő lépések