Azure Container Registry-hitelesítés szolgáltatásnevek használatával
A Microsoft Entra szolgáltatásnévvel leküldéses, lekéréses vagy egyéb hozzáférést biztosíthat a tárolóregisztrációs adatbázishoz. Szolgáltatásnév használatával hozzáférést biztosíthat a "fej nélküli" szolgáltatásokhoz és alkalmazásokhoz.
Mi az a szolgáltatásnév?
A Microsoft Entra ID szolgáltatásnevek hozzáférést biztosítanak az Azure-erőforrásokhoz az előfizetésen belül. A szolgáltatásnév egy szolgáltatás felhasználói identitásaként is felfogható, ahol a "szolgáltatás" minden olyan alkalmazás, szolgáltatás vagy platform, amelynek hozzá kell férnie az erőforrásokhoz. A szolgáltatásnév csak a megadott erőforrásokra vonatkozó hozzáférési jogosultságokkal konfigurálható. Ezután konfigurálja az alkalmazást vagy szolgáltatást úgy, hogy a szolgáltatásnév hitelesítő adataival férhessen hozzá ezekhez az erőforrásokhoz.
Az Azure Container Registry kontextusában létrehozhat egy Microsoft Entra szolgáltatásnevet lekéréses, leküldéses és lekéréses vagy más engedélyekkel a privát regisztrációs adatbázishoz az Azure-ban. A teljes listát az Azure Container Registry szerepkörei és engedélyei című témakörben találja.
Miért érdemes szolgáltatásnevet használni?
A Microsoft Entra szolgáltatásnév használatával hatókörön belüli hozzáférést biztosíthat a privát tárolóregisztrációs adatbázishoz. Hozzon létre különböző szolgáltatásneveket az egyes alkalmazásokhoz vagy szolgáltatásokhoz, amelyek mindegyike személyre szabott hozzáférési jogosultságokkal rendelkezik a beállításjegyzékhez. Mivel elkerülheti a hitelesítő adatok szolgáltatások és alkalmazások közötti megosztását, elforgathatja a hitelesítő adatokat, vagy visszavonhatja a hozzáférést csak a választott szolgáltatásnév (és így az alkalmazás) számára.
Konfigurálja például a webalkalmazást úgy, hogy csak képhozzáférést pull
biztosító szolgáltatásnevet használjon, míg a buildelési rendszer egy olyan szolgáltatásnevet használ, amely mindkettőt push
és pull
hozzáférést biztosít. Ha az alkalmazás fejlesztése kézenfekve változik, a szolgáltatásnév hitelesítő adatait a buildelési rendszer befolyásolása nélkül is elforgathatja.
Mikor érdemes szolgáltatásnevet használni?
Fej nélküli forgatókönyvekben a beállításjegyzék-hozzáférést szolgáltatásnévvel kell biztosítani. Ez egy olyan alkalmazás, szolgáltatás vagy szkript, amelynek automatikus vagy más felügyelet nélküli módon kell leküldenie vagy lekérnie a tárolórendszerképeket. Példa:
Lekérés: Tárolók üzembe helyezése a beállításjegyzékből olyan vezénylési rendszerekre, mint a Kubernetes, a DC/OS és a Docker Swarm. A tárolóregisztrációs adatbázisokból lekérheti a kapcsolódó Azure-szolgáltatásokat, például az App Service-t, a Batchet, a Service Fabricet és másokat.
Tipp.
Számos Kubernetes-forgatókönyvben ajánlott szolgáltatásnévvel rendszerképeket lekérni egy Azure-tárolóregisztrációs adatbázisból. Az Azure Kubernetes Service (AKS) használatával automatizált mechanizmussal is hitelesíthet egy célregisztrációs adatbázissal a fürt felügyelt identitásának engedélyezésével.
- Leküldés: Tárolólemezképek létrehozása és leküldése egy beállításjegyzékbe folyamatos integrációs és üzembe helyezési megoldásokkal, például az Azure Pipelines vagy a Jenkins használatával.
Ha egyénileg szeretne hozzáférni egy beállításjegyzékhez, például amikor manuálisan lekér egy tárolólemezképet a fejlesztői munkaállomásra, javasoljuk, hogy a beállításjegyzék-hozzáféréshez (például az acr-bejelentkezéshez) használja a saját Microsoft Entra-identitását.
Egyszerű szolgáltatás létrehozása
A tárolóregisztrációs adatbázishoz való hozzáféréssel rendelkező egyszerű szolgáltatás létrehozásához futtassa a következő szkriptet az Azure Cloud Shellben vagy az Azure CLI helyi telepítésében. A szkript a Bash-rendszerhéjhoz van formázva.
A szkript futtatása előtt frissítse a változót ACR_NAME
a tárolóregisztrációs adatbázis nevével. Az SERVICE_PRINCIPAL_NAME
értéknek egyedinek kell lennie a Microsoft Entra-bérlőn belül. Ha "'http://acr-service-principal' already exists.
" hibaüzenetet kap, adjon meg egy másik nevet a szolgáltatásnévnek.
Ha más engedélyeket szeretne adni, tetszés szerint módosíthatja az --role
az ad sp create-for-rbac parancs értékét. A szerepkörök teljes listáját az ACR-szerepkörök és -engedélyek című témakörben találja.
A szkript futtatása után jegyezze fel a szolgáltatásnév azonosítóját és jelszavát. Miután megkapta a hitelesítő adatait, konfigurálhatja az alkalmazásokat és szolgáltatásokat a tárolóregisztrációs adatbázis szolgáltatásnévként való hitelesítésére.
#!/bin/bash
# This script requires Azure CLI version 2.25.0 or later. Check version with `az --version`.
# Modify for your environment.
# ACR_NAME: The name of your Azure Container Registry
# SERVICE_PRINCIPAL_NAME: Must be unique within your AD tenant
ACR_NAME=$containerRegistry
SERVICE_PRINCIPAL_NAME=$servicePrincipal
# Obtain the full registry ID
ACR_REGISTRY_ID=$(az acr show --name $ACR_NAME --query "id" --output tsv)
# echo $registryId
# Create the service principal with rights scoped to the registry.
# Default permissions are for docker pull access. Modify the '--role'
# argument value as desired:
# acrpull: pull only
# acrpush: push and pull
# owner: push, pull, and assign roles
PASSWORD=$(az ad sp create-for-rbac --name $SERVICE_PRINCIPAL_NAME --scopes $ACR_REGISTRY_ID --role acrpull --query "password" --output tsv)
USER_NAME=$(az ad sp list --display-name $SERVICE_PRINCIPAL_NAME --query "[].appId" --output tsv)
# Output the service principal's credentials; use these in your services and
# applications to authenticate to the container registry.
echo "Service principal ID: $USER_NAME"
echo "Service principal password: $PASSWORD"
Meglévő szolgáltatásnév használata
Ahhoz, hogy a beállításjegyzék hozzáférést biztosítson egy meglévő szolgáltatásnévhez, új szerepkört kell hozzárendelnie a szolgáltatásnévhez. Az új szolgáltatásnév létrehozásához hasonlóan többek között lekéréses, leküldéses és lekéréses, valamint tulajdonosi hozzáférést is biztosíthat.
Az alábbi szkript az az role assignment create paranccsal biztosít lekérési engedélyeket a változóban SERVICE_PRINCIPAL_ID
megadott szolgáltatásnévnek. Módosítsa az --role
értéket, ha más hozzáférési szintet szeretne biztosítani.
#!/bin/bash
# Modify for your environment. The ACR_NAME is the name of your Azure Container
# Registry, and the SERVICE_PRINCIPAL_ID is the service principal's 'appId' or
# one of its 'servicePrincipalNames' values.
ACR_NAME=$containerRegistry
SERVICE_PRINCIPAL_ID=$servicePrincipal
# Populate value required for subsequent command args
ACR_REGISTRY_ID=$(az acr show --name $ACR_NAME --query id --output tsv)
# Assign the desired role to the service principal. Modify the '--role' argument
# value as desired:
# acrpull: pull only
# acrpush: push and pull
# owner: push, pull, and assign roles
az role assignment create --assignee $SERVICE_PRINCIPAL_ID --scope $ACR_REGISTRY_ID --role acrpull
Mintaszkriptek
A GitHubon az Azure CLI előző példaszkriptjei, valamint az Azure PowerShell verziói találhatók:
Hitelesítés a szolgáltatásnévvel
Miután rendelkezik egy szolgáltatásnévvel, amely hozzáférést adott a tárolóregisztrációs adatbázishoz, konfigurálhatja a hitelesítő adatait a "fej nélküli" szolgáltatásokhoz és alkalmazásokhoz való hozzáféréshez, vagy a parancs használatával docker login
megadhatja őket. Használja a következő értékeket:
- Felhasználónév – a szolgáltatásnév alkalmazásának (ügyfél) azonosítója
- Jelszó – a szolgáltatásnév jelszava (titkos ügyfélkód)
A Felhasználónév érték formátuma xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
.
Tipp.
A szolgáltatásnév jelszavát (titkos ügyfélkulcsát) az az ad sp hitelesítőadat-visszaállítási parancs futtatásával lehet újragenerálni.
Hitelesítő adatok használata az Azure-szolgáltatásokkal
A szolgáltatásnév hitelesítő adatait bármely Olyan Azure-szolgáltatásból használhatja, amely egy Azure-tárolóregisztrációs adatbázissal hitelesít. A szolgáltatásnév hitelesítő adatainak használata a beállításjegyzék rendszergazdai hitelesítő adatai helyett számos forgatókönyv esetében.
Használat Docker-bejelentkezéssel
Futtatható docker login
szolgáltatásnévvel. Az alábbi példában a rendszer átadja a szolgáltatásnév alkalmazásazonosítóját a környezeti változóban $SP_APP_ID
, a jelszót pedig a változóban $SP_PASSWD
. A Docker hitelesítő adatainak kezelésével kapcsolatos ajánlott eljárásokért tekintse meg a Docker bejelentkezési parancsainak hivatkozását.
# Log in to Docker with service principal credentials
docker login myregistry.azurecr.io --username $SP_APP_ID --password $SP_PASSWD
Miután bejelentkezett, a Docker gyorsítótárazza a hitelesítő adatokat.
Használat tanúsítvánnyal
Ha tanúsítványt adott hozzá a szolgáltatásnévhez, tanúsítványalapú hitelesítéssel bejelentkezhet az Azure CLI-be, majd az az acr bejelentkezési paranccsal hozzáférhet egy beállításjegyzékhez. A tanúsítvány jelszó helyett titkos kódként való használata további biztonságot nyújt a parancssori felület használatakor.
Szolgáltatásnév létrehozásakor önaláírt tanúsítvány hozható létre. Vagy adjon hozzá egy vagy több tanúsítványt egy meglévő szolgáltatásnévhez. Ha például a jelen cikkben szereplő szkriptek egyikével hoz létre vagy frissít egy szolgáltatásnevet, amely jogosult képek lekérésére vagy leküldésére egy beállításjegyzékből, adjon hozzá egy tanúsítványt az az ad sp hitelesítőadat-visszaállítási paranccsal.
Ha a szolgáltatásnevet tanúsítványsal szeretné használni az Azure CLI-be való bejelentkezéshez, a tanúsítványnak PEM formátumban kell lennie, és tartalmaznia kell a titkos kulcsot. Ha a tanúsítvány nem a szükséges formátumban van, használjon egy eszközt, például openssl
konvertálja. Amikor az az login futtatásával bejelentkezik a parancssori felületre a szolgáltatásnév használatával, adja meg a szolgáltatásnév alkalmazásazonosítóját és az Active Directory-bérlő azonosítóját is. Az alábbi példa környezeti változóként jeleníti meg ezeket az értékeket:
az login --service-principal --username $SP_APP_ID --tenant $SP_TENANT_ID --password /path/to/cert/pem/file
Ezután futtassa az az acr-bejelentkezést a beállításjegyzékkel való hitelesítéshez:
az acr login --name myregistry
A parancssori felület a futtatáskor az login
létrehozott jogkivonatot használja a munkamenet beállításjegyzékben való hitelesítéséhez.
Szolgáltatásnév létrehozása bérlők közötti forgatókönyvekhez
A szolgáltatásnév olyan Azure-forgatókönyvekben is használható, amelyekhez lemezképek lekérése szükséges egy tárolóregisztrációs adatbázisból az egyik Microsoft Entra-azonosítóban (bérlőben) egy másik szolgáltatásba vagy alkalmazásba. Előfordulhat például, hogy egy szervezet olyan alkalmazást futtat az A bérlőben, amely le kell húznia egy lemezképet a B bérlő megosztott tárolóregisztrációs adatbázisából.
Olyan szolgáltatásnév létrehozása, amely egy tárolóregisztrációs adatbázissal hitelesíthető bérlőközi forgatókönyvben:
- Több-bérlős alkalmazás (szolgáltatásnév) létrehozása az A bérlőben
- Az alkalmazás kiépítése a B bérlőben
- A szolgáltatásnév engedélyeinek megadása a beállításjegyzékből való lekéréshez a B bérlőben
- A szolgáltatás vagy alkalmazás frissítése az A bérlőben az új szolgáltatásnév használatával történő hitelesítéshez
Példa a lemezképek lekérésére egy tárolóregisztrációs adatbázisból egy másik AD-bérlőben lévő AKS-fürtre.
Szolgáltatásnév megújítása
A szolgáltatásnév egyéves érvényességgel jön létre. Lehetősége van arra, hogy az érvényességi időt egy évnél tovább meghosszabbítsa, vagy a parancs használatával megadhatja a az ad sp credential reset
választott lejárati dátumot.
Következő lépések
Tekintse meg az Azure-tárolóregisztrációs adatbázissal való hitelesítés egyéb forgatókönyveinek hitelesítési áttekintését .
A tárolóregisztrációs adatbázis szolgáltatásnév-hitelesítő adatainak tárolására és lekérésére szolgáló Azure-kulcstartó használatával kapcsolatos példákért tekintse meg a tárolórendszerképek ACR-feladatok használatával történő összeállítására és üzembe helyezésére vonatkozó oktatóanyagot.