Felügyelt Azure-identitás használata egy Azure Container Registryben való hitelesítéshez

Az Azure-erőforrások felügyelt identitásával hitelesítheti magát egy másik Azure-erőforrás azure-tárolóregisztrációs adatbázisában anélkül, hogy meg kellene adnia vagy kezelnie kellene a beállításjegyzék hitelesítő adatait. Állítson be például egy felhasználó által hozzárendelt vagy rendszer által hozzárendelt felügyelt identitást egy Linux rendszerű virtuális gépen, hogy a tárolóregisztrációs adatbázis tárolólemezképeihez olyan egyszerűen férhessen hozzá, mint egy nyilvános beállításjegyzék. Vagy állítson be egy Azure Kubernetes Service-fürtöt úgy, hogy a felügyelt identitásával lekérje a tárolólemezképeket az Azure Container Registryből podtelepítésekhez.

Ebből a cikkből többet tudhat meg a felügyelt identitásokról, valamint az alábbiakról:

  • Felhasználó által hozzárendelt vagy rendszer által hozzárendelt identitás engedélyezése Azure-beli virtuális gépen
  • Identitáshozzáférés biztosítása azure-tárolóregisztrációs adatbázishoz
  • A felügyelt identitás használata a beállításjegyzék eléréséhez és egy tárolólemezkép lekéréséhez

Az Azure-erőforrások létrehozásához ehhez a cikkhez az Azure CLI 2.0.55-ös vagy újabb verzióját kell futtatnia. A verzió azonosításához futtassa a következőt: az --version. Ha telepíteni vagy frissíteni szeretne: Az Azure CLI telepítése.

A tárolóregisztrációs adatbázis beállításához és egy tárolórendszerkép leküldéséhez helyileg is telepítenie kell a Dockert. A Docker csomagokat biztosít, amelyekkel a Docker egyszerűen konfigurálható bármely macOS, Windows vagy Linux rendszeren.

Miért érdemes felügyelt identitást használni?

Ha még nem ismeri az Azure-erőforrások felügyelt identitására vonatkozó funkciót, tekintse meg ezt az áttekintést.

Miután kiválasztott Azure-erőforrásokat felügyelt identitással állított be, adja meg az identitásnak azt a hozzáférést, amelyet egy másik erőforráshoz szeretne használni, ugyanúgy, mint bármely biztonsági tag. Például hozzárendelhet egy felügyelt identitást egy szerepkörhöz lekéréses, leküldéses és lekéréses vagy más engedélyekkel egy Azure-beli privát beállításjegyzékhez. (A beállításjegyzék-szerepkörök teljes listáját lásd: Azure Container Registry-szerepkörök és engedélyek.) Identitás-hozzáférést adhat egy vagy több erőforráshoz.

Ezután az identitással hitelesíthet bármely olyan szolgáltatásban, amely támogatja a Microsoft Entra-hitelesítést anélkül, hogy a kódban hitelesítő adatokat használ. A forgatókönyvtől függően válassza ki, hogyan hitelesítheti a felügyelt identitást. Ha az identitással szeretne hozzáférni egy Azure-tárolóregisztrációs adatbázishoz egy virtuális gépről, hitelesítenie kell magát az Azure Resource Managerrel.

Container Registry létrehozása

Ha még nem rendelkezik Azure-tárolóregisztrációs adatbázissal, hozzon létre egy beállításjegyzéket, és küldjön hozzá egy minta tárolórendszerképet. A lépésekért tekintse meg a rövid útmutatót: Privát tárolóregisztrációs adatbázis létrehozása az Azure CLI használatával.

Ez a cikk feltételezi, hogy a tárolórendszerkép a aci-helloworld:v1 beállításjegyzékben van tárolva. A példák a myContainerRegistry beállításjegyzék-nevét használják. A későbbi lépésekben cserélje le a saját beállításjegyzék- és rendszerképneveit.

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

Hozzon létre egy Docker-kompatibilis Ubuntu virtuális gépet. Az Azure CLI-t is telepítenie kell a virtuális gépre. Ha már rendelkezik Azure-beli virtuális géppel, hagyja ki ezt a lépést a virtuális gép létrehozásához.

Helyezzen üzembe egy alapértelmezett Ubuntu Azure-beli virtuális gépet az az vm create használatával. Az alábbi példa egy myDockerVM nevű virtuális gépet hoz létre egy myResourceGroup nevű meglévő erőforráscsoportban:

az vm create \
    --resource-group myResourceGroup \
    --name myDockerVM \
    --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ő parancsot a Docker virtuális gépen való telepítéséhez:

sudo apt 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 mcr.microsoft.com/hello-world
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. Ebben a cikkben győződjön meg arról, hogy a 2.0.55-ös vagy újabb verziót telepíti.

Lépjen ki az SSH-munkamenetből.

1. példa: Hozzáférés felhasználó által hozzárendelt identitással

Identitás létrehozása

Hozzon létre egy identitást az előfizetésben az az identity create paranccsal. Használhatja ugyanazt az erőforráscsoportot, amelyet korábban a tárolóregisztrációs adatbázis vagy a virtuális gép létrehozásához használt, vagy egy másikat.

az identity create --resource-group myResourceGroup --name myACRId

Az identitás a következő lépésekben való konfigurálásához használja az az identity show parancsot az identitás erőforrás-azonosítójának és szolgáltatásnév-azonosítójának változókban való tárolásához.

# Get resource ID of the user-assigned identity
userID=$(az identity show --resource-group myResourceGroup --name myACRId --query id --output tsv)

# Get service principal ID of the user-assigned identity
spID=$(az identity show --resource-group myResourceGroup --name myACRId --query principalId --output tsv)

Mivel egy későbbi lépésben szüksége lesz az identitás azonosítójára, amikor bejelentkezik a parancssori felületre a virtuális gépről, adja meg az értéket:

echo $userID

Az azonosító az alábbi formában érhető el:

/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myACRId

A virtuális gép konfigurálása az identitással

A következő az vm identity assign parancs konfigurálja a Docker virtuális gépet a felhasználó által hozzárendelt identitással:

az vm identity assign --resource-group myResourceGroup --name myDockerVM --identities $userID

Identitáshozzáférés biztosítása a tárolóregisztrációs adatbázishoz

Most konfigurálja az identitást a tárolóregisztrációs adatbázis eléréséhez. Először használja az az acr show parancsot a beállításjegyzék erőforrás-azonosítójának lekéréséhez:

resourceID=$(az acr show --resource-group myResourceGroup --name myContainerRegistry --query id --output tsv)

Az az role assignment create paranccsal rendelje hozzá az AcrPull-szerepkört az identitáshoz. Ez a szerepkör lekérési engedélyeket biztosít a beállításjegyzékhez. A lekérési és leküldéses engedélyek biztosításához rendelje hozzá az AcrPush szerepkört.

az role assignment create --assignee $spID --scope $resourceID --role acrpull

Az identitás használata a beállításjegyzék eléréséhez

SSH az identitással konfigurált Docker virtuális gépre. Futtassa az alábbi Azure CLI-parancsokat a virtuális gépen telepített Azure CLI használatával.

Először jelentkezzen be az Azure CLI-be a virtuális gépen konfigurált identitás használatával. Ebben <userID>az esetben cserélje le az előző lépésben lekért identitás azonosítóját.

az login --identity --username <userID>

Ezután hitelesítse magát a beállításjegyzékben az az acr-bejelentkezéssel. A parancs használatakor a parancssori felület a futtatáskor az login létrehozott Active Directory-jogkivonatot használja a munkamenet zökkenőmentes hitelesítéséhez a tárolóregisztrációs adatbázissal. (A virtuális gép beállításától függően előfordulhat, hogy futtatnia kell ezt a parancsot és docker parancsokat a sudo.)

az acr login --name myContainerRegistry

Üzenetnek kell megjelennie Login succeeded . Ezután hitelesítő adatok megadása nélkül futtathat docker parancsokat. Futtassa például a docker-lekérést a aci-helloworld:v1 rendszerkép lekéréséhez, és adja meg a regisztrációs adatbázis bejelentkezési kiszolgálójának nevét. A bejelentkezési kiszolgáló neve a tárolóregisztrációs adatbázis nevéből (az összes kisbetűből) áll, mycontainerregistry.azurecr.ioamelyet .azurecr.io követ például a .

docker pull mycontainerregistry.azurecr.io/aci-helloworld:v1

2. példa: Hozzáférés rendszer által hozzárendelt identitással

A virtuális gép konfigurálása rendszer által felügyelt identitással

Az alábbi az vm identity assign parancs rendszer által hozzárendelt identitással konfigurálja a Docker virtuális gépet:

az vm identity assign --resource-group myResourceGroup --name myDockerVM

Az az vm show paranccsal beállíthat egy változót a virtuális gép identitásának értékére principalId (a szolgáltatásnév azonosítójára) a későbbi lépésekben való használathoz.

spID=$(az vm show --resource-group myResourceGroup --name myDockerVM --query identity.principalId --out tsv)

Identitáshozzáférés biztosítása a tárolóregisztrációs adatbázishoz

Most konfigurálja az identitást a tárolóregisztrációs adatbázis eléréséhez. Először használja az az acr show parancsot a beállításjegyzék erőforrás-azonosítójának lekéréséhez:

resourceID=$(az acr show --resource-group myResourceGroup --name myContainerRegistry --query id --output tsv)

Az az role assignment create paranccsal rendelje hozzá az AcrPull-szerepkört az identitáshoz. Ez a szerepkör lekérési engedélyeket biztosít a beállításjegyzékhez. A lekérési és leküldéses engedélyek biztosításához rendelje hozzá az AcrPush szerepkört.

az role assignment create --assignee $spID --scope $resourceID --role acrpull

Az identitás használata a beállításjegyzék eléréséhez

SSH az identitással konfigurált Docker virtuális gépre. Futtassa az alábbi Azure CLI-parancsokat a virtuális gépen telepített Azure CLI használatával.

Először hitelesítse az Azure CLI-t az login használatával a virtuális gépen a rendszer által hozzárendelt identitás használatával.

az login --identity

Ezután hitelesítse magát a beállításjegyzékben az az acr-bejelentkezéssel. A parancs használatakor a parancssori felület a futtatáskor az login létrehozott Active Directory-jogkivonatot használja a munkamenet zökkenőmentes hitelesítéséhez a tárolóregisztrációs adatbázissal. (A virtuális gép beállításától függően előfordulhat, hogy futtatnia kell ezt a parancsot és docker parancsokat a sudo.)

az acr login --name myContainerRegistry

Üzenetnek kell megjelennie Login succeeded . Ezután hitelesítő adatok megadása nélkül futtathat docker parancsokat. Futtassa például a docker-lekérést a aci-helloworld:v1 rendszerkép lekéréséhez, és adja meg a regisztrációs adatbázis bejelentkezési kiszolgálójának nevét. A bejelentkezési kiszolgáló neve a tárolóregisztrációs adatbázis nevéből (az összes kisbetűből) áll, mycontainerregistry.azurecr.ioamelyet .azurecr.io követ például a .

docker pull mycontainerregistry.azurecr.io/aci-helloworld:v1

Következő lépések

Ebben a cikkben megismerkedett a felügyelt identitások Azure Container Registryvel való használatával, valamint a következőkkel:

  • Felhasználó által hozzárendelt vagy rendszer által hozzárendelt identitás engedélyezése egy Azure-beli virtuális gépen
  • Identitáshozzáférés biztosítása azure-tárolóregisztrációs adatbázishoz
  • A felügyelt identitás használata a beállításjegyzék eléréséhez és egy tárolólemezkép lekéréséhez