Delen via


Verifiëren met een Azure-containerregister

Er zijn verschillende manieren om te verifiëren met een Azure-containerregister, die elk van toepassing is op een of meer scenario's voor registergebruik.

Aanbevolen manieren zijn onder andere:

  • Rechtstreeks verifiëren bij een register via afzonderlijke aanmelding
  • Toepassingen en containerorchestrators kunnen zonder toezicht of 'headless' verificatie uitvoeren met behulp van een Microsoft Entra-service-principal

Als u een containerregister gebruikt met Azure Kubernetes Service (AKS) of een ander Kubernetes-cluster, raadpleegt u Scenario's voor verificatie met Azure Container Registry vanuit Kubernetes.

Verificatieopties

De volgende tabel bevat beschikbare verificatiemethoden en typische scenario's. Zie de gekoppelde inhoud voor meer informatie.

Wijze Verifiëren Scenario's Op rollen gebaseerd toegangsbeheer van Azure (Azure RBAC) Beperkingen
Afzonderlijke AD-identiteit  az acr login in Azure CLI

Connect-AzContainerRegistry in Azure PowerShell
Interactieve push/pull door ontwikkelaars, testers Ja AD-token moet elke 3 uur worden vernieuwd
AD-service-principal  docker login

az acr login in Azure CLI

Connect-AzContainerRegistry in Azure PowerShell

Registeraanmeldingsinstellingen in API's of hulpprogramma's

Kubernetes pull-geheim   
Push zonder toezicht vanuit CI/CD-pijplijn

Onbeheerde pull naar Azure of externe services
Ja Standaard verlopen sp-wachtwoord is 1 jaar
Beheerde identiteit voor Azure-resources  docker login

az acr login in Azure CLI

Connect-AzContainerRegistry in Azure PowerShell
Push zonder toezicht vanuit Azure CI/CD-pijplijn

Pull zonder toezicht naar Azure-services

Ja Alleen van bepaalde Azure-services gebruiken die beheerde identiteiten voor Azure-resources ondersteunen
Beheerde identiteit van AKS-cluster  Register bijvoegen wanneer AKS-cluster is gemaakt of bijgewerkt Onbeheerde pull naar AKS-cluster in hetzelfde of een ander abonnement Nee, alleen pull-toegang Alleen beschikbaar met AKS-cluster

Kan niet worden gebruikt voor verificatie tussen tenants
Service-principal voor AKS-cluster  Inschakelen wanneer een AKS-cluster is gemaakt of bijgewerkt Onbeheerde pull naar AKS-cluster vanuit register in een andere AD-tenant Nee, alleen pull-toegang Alleen beschikbaar met AKS-cluster
Gebruiker met beheerdersrechten  docker login  Interactieve push/pull door individuele ontwikkelaar of tester

Portalimplementatie van installatiekopieën van register naar Azure-app Service of Azure Container Instances
Nee, altijd pull- en pushtoegang Eén account per register, niet aanbevolen voor meerdere gebruikers
Toegangstoken binnen het bereik van de opslagplaats  docker login

az acr login in Azure CLI

Connect-AzContainerRegistry in Azure PowerShell

Kubernetes pull-geheim 
Interactieve push/pull naar opslagplaats door individuele ontwikkelaar of tester

Pull zonder toezicht uit de opslagplaats per afzonderlijk systeem of extern apparaat
Ja Momenteel niet geïntegreerd met AD-identiteit

Individuele aanmelding met Microsoft Entra-id

Wanneer u rechtstreeks met uw register werkt, zoals het ophalen van installatiekopieën naar en het pushen van installatiekopieën van een ontwikkelwerkstation naar een register dat u hebt gemaakt, verifieert u zich met behulp van uw afzonderlijke Azure-identiteit. Meld u aan bij de Azure CLI met az login en voer vervolgens de opdracht az acr login uit:

az login
az acr login --name <acrName>

Wanneer u zich aanmeldt, az acr logingebruikt de CLI het token dat is gemaakt toen u de sessie naadloos met uw register hebt geverifieerd az login . Als u de verificatiestroom wilt voltooien, moeten de Docker CLI en docker-daemon worden geïnstalleerd en uitgevoerd in uw omgeving. az acr login gebruikt de Docker-client om een Microsoft Entra-token in het docker.config bestand in te stellen. Zodra u zich op deze manier hebt aangemeld, worden uw referenties in de cache opgeslagen en hebben volgende docker opdrachten in uw sessie geen gebruikersnaam of wachtwoord nodig.

Tip

az acr login Gebruik ook om een afzonderlijke identiteit te verifiëren wanneer u andere artefacten dan Docker-installatiekopieën naar uw register wilt pushen of ophalen, zoals OCI-artefacten.

Voor registertoegang is het token dat wordt az acr login gebruikt gedurende 3 uur geldig. Daarom wordt u aangeraden u altijd aan te melden bij het register voordat u een docker opdracht uitvoert. Als uw token verloopt, kunt u het vernieuwen met behulp van de az acr login opdracht opnieuw om opnieuw te verifiëren.

Het gebruik met az acr login Azure-identiteiten biedt op rollen gebaseerd toegangsbeheer van Azure (Azure RBAC). Voor sommige scenario's kunt u zich aanmelden bij een register met uw eigen afzonderlijke identiteit in Microsoft Entra ID of andere Azure-gebruikers met specifieke Azure-rollen en -machtigingen configureren. Voor scenario's tussen services of voor het afhandelen van de behoeften van een werkgroep of een ontwikkelwerkstroom waarvoor u geen afzonderlijke toegang wilt beheren, kunt u zich ook aanmelden met een beheerde identiteit voor Azure-resources.

az acr login with --expose-token

In sommige gevallen moet u zich verifiëren az acr login wanneer de Docker-daemon niet wordt uitgevoerd in uw omgeving. U moet az acr login bijvoorbeeld uitvoeren in een script in Azure Cloud Shell, dat de Docker CLI biedt, maar de Docker-daemon niet uitvoert.

Voer az acr login voor dit scenario eerst uit met de --expose-token parameter. Met deze optie wordt een toegangstoken weergegeven in plaats van u aan te melden via de Docker CLI.

az acr login --name <acrName> --expose-token

De uitvoer geeft het toegangstoken weer, afgekort hier:

{
  "accessToken": "eyJhbGciOiJSUzI1NiIs[...]24V7wA",
  "loginServer": "myregistry.azurecr.io"
}

Voor registerverificatie raden we u aan om de tokenreferentie op een veilige locatie op te slaan en aanbevolen procedures te volgen voor het beheren van docker-aanmeldingsreferenties . Sla bijvoorbeeld de tokenwaarde op in een omgevingsvariabele:

TOKEN=$(az acr login --name <acrName> --expose-token --output tsv --query accessToken)

Voer vervolgens het volgende uit docker login, waarbij u de gebruikersnaam doorgeeft 00000000-0000-0000-0000-000000000000 en het toegangstoken als wachtwoord gebruikt:

docker login myregistry.azurecr.io --username 00000000-0000-0000-0000-000000000000 --password-stdin <<< $TOKEN

Op dezelfde manier kunt u het token gebruiken dat wordt geretourneerd door az acr login de helm registry login opdracht om te verifiëren met het register:

echo $TOKEN | helm registry login myregistry.azurecr.io \
            --username 00000000-0000-0000-0000-000000000000 \
            --password-stdin

Service-principal

Als u een service-principal toewijst aan uw register, kan uw toepassing of service deze gebruiken voor headless verificatie. Service-principals staan op rollen gebaseerd toegangsbeheer van Azure (Azure RBAC) toe aan een register en u kunt meerdere service-principals toewijzen aan een register. Met meerdere service-principals kunt u verschillende toegang voor verschillende toepassingen definiëren.

ACR-verificatietoken wordt gemaakt bij aanmelding bij de ACR en wordt vernieuwd bij volgende bewerkingen. De time to live voor dat token is 3 uur.

De beschikbare rollen voor een containerregister zijn onder andere:

  • AcrPull: pull

  • AcrPush: pull en push

  • Eigenaar: rollen ophalen, pushen en toewijzen aan andere gebruikers

Zie Azure Container Registry-rollen en -machtigingen voor een volledige lijst met rollen.

Voor CLI-scripts voor het maken van een service-principal voor verificatie met een Azure-containerregister en meer richtlijnen raadpleegt u Azure Container Registry-verificatie met service-principals.

Beheerdersaccount

Elk containerregister omvat een beheerdersaccount, dat standaard is uitgeschakeld. U kunt de gebruiker met beheerdersrechten inschakelen en de referenties ervan beheren in Azure Portal, of met behulp van de Azure CLI, Azure PowerShell of andere Azure-hulpprogramma's. Het beheerdersaccount heeft volledige machtigingen voor het register.

Het beheerdersaccount is momenteel vereist voor sommige scenario's voor het implementeren van een installatiekopieën van een containerregister naar bepaalde Azure-services. Het beheerdersaccount is bijvoorbeeld nodig wanneer u Azure Portal gebruikt om een containerinstallatiekopieën rechtstreeks vanuit een register te implementeren naar Azure Container Instances of Azure Web Apps for Containers.

Belangrijk

Het beheerdersaccount is bedoeld om één gebruiker toegang te bieden tot het register, voornamelijk voor testdoeleinden. Het wordt niet aangeraden om de referenties van het beheerdersaccount te delen tussen meerdere gebruikers. Alle gebruikers die zich met het beheerdersaccount verifiëren, worden weergegeven als één gebruiker met push- en pull-toegang tot het register. Als u dit account wijzigt of uitschakelt, wordt registertoegang uitgeschakeld voor alle gebruikers die de referenties gebruiken. Afzonderlijke identiteit wordt aanbevolen voor gebruikers en service-principals voor hoofdloze scenario's.

Het beheerdersaccount wordt geleverd met twee wachtwoorden, die beide opnieuw kunnen worden gegenereerd. Nieuwe wachtwoorden die zijn gemaakt voor beheerdersaccounts zijn onmiddellijk beschikbaar. Het opnieuw genereren van wachtwoorden voor beheerdersaccounts duurt 60 seconden om te repliceren en beschikbaar te zijn. Met twee wachtwoorden kunt u verbinding met het register onderhouden door het ene wachtwoord te gebruiken terwijl u het andere opnieuw genereert. Als het beheerdersaccount is ingeschakeld, kunt u de gebruikersnaam en het wachtwoord doorgeven aan de docker login opdracht wanneer u wordt gevraagd om basisverificatie naar het register. Voorbeeld:

docker login myregistry.azurecr.io

Zie de referentie voor de docker-aanmeldingsopdracht voor aanbevolen procedures voor het beheren van aanmeldingsreferenties.

Als u de gebruiker met beheerdersrechten voor een bestaand register wilt inschakelen, kunt u de --admin-enabled parameter van de opdracht az acr update in de Azure CLI gebruiken:

az acr update -n <acrName> --admin-enabled true

U kunt de gebruiker met beheerdersrechten in de Azure-portal inschakelen door in uw register te navigeren, toegangssleutels te selecteren onder INSTELLINGEN en vervolgens inschakelen onder Gebruiker beheerder.

Gebruikersinterface voor beheerders inschakelen in Azure Portal

Aanmelden met een alternatief containerhulpprogramma in plaats van Docker

In sommige scenario's moet u alternatieve containerhulpprogramma's gebruiken, zoals podman in plaats van het algemene containerhulpprogramma docker. Bijvoorbeeld: Docker is niet meer beschikbaar in RHEL 8 en 9, dus u moet overschakelen van containerhulpprogramma.

Het standaardcontainerhulpprogramma is ingesteld docker op voor az acr login opdrachten. Als u het standaardcontainerhulpprogramma niet instelt en de docker opdracht ontbreekt in uw omgeving, wordt de volgende fout weergegeven:

az acr login --name <acrName>
2024-03-29 07:30:10.014426 An error occurred: DOCKER_COMMAND_ERROR
Please verify if Docker client is installed and running.

Als u het standaardcontainerhulpprogramma wilt wijzigen dat door de az acr login opdracht wordt gebruikt, kunt u de omgevingsvariabele DOCKER_COMMANDinstellen. Bijvoorbeeld:

DOCKER_COMMAND=podman \
az acr login --name <acrName>

Notitie

U hebt Azure CLI versie 2.59.0 of hoger geïnstalleerd en geconfigureerd om deze functie te kunnen gebruiken. Voer az --version uit om de versie te bekijken. Als u Azure CLI 2.0 wilt installeren of upgraden, raadpleegt u Azure CLI 2.0 installeren.

Volgende stappen